[Tutor] table to dictionary and then analysis
questions anon
questions.anon at gmail.com
Tue May 15 08:12:34 CEST 2012
Thanks Bob,
sql does appear to be very simple although I cannot get the queries to
work. Can you suggest a site that has examples for what I am trying to do.
I have done some googling but it has not been successful so far.
On Tue, May 15, 2012 at 1:38 PM, bob gailer <bgailer at gmail.com> wrote:
> On 5/14/2012 10:16 PM, questions anon wrote:
>
> I am completely new to dictionaries and I am not even sure if this is what
> I need to use.
> I have a text file that I would like to run summary stats on particular
> months, years and climate indices (in this case the climate indices are
> rainfall and fire area, so not actualy climate indices at all).
>
> I would set up a SQLite database with a table of 4 numeric columns: year,
> month, rainfall, firearea
> Use SQL to select the desired date range and do the max and avg
> calculations:
> select year, avg(firearea), max(rainfall) from table where year = 1973 and
> month between 6 and 8)
>
> you can use dictionaries but that will be harder. Here a start (untested).
> Assumes data are correct.
>
> months =
> dict(Jan=1,Feb=2,Mar=4,Apr=4,May=5,Jun=6,Jul=7,Aug=8,Sep=9.Oct=10,Nov=11,Dec=12)
> for line in open('d:/yearmonthrainfire.txt','r'):
> line = line.split()
> year = int(line[0])
> month = months[line[1]]
> rainfall = float(line[2]
> firearea = float(line[3]
> sql = "insert into table (year, month, rainfall, firearea)
> values(%i,%i,%f,%f)" % (year, month, rainfall, firearea)
> # I don't have handy how one runs the sql
>
>
> A text file is attached but a small sample of the file:
> rainfall firearea
> 1972 Jan 12.7083199 0
> 1972 Feb 14.17007142 0
> 1972 Mar 14.5659302 0
> 1972 Apr 1.508517302 0
> 1972 May 2.780009889 0
> 1972 Jun 1.609619287 0
> 1972 Jul 0.138150181 28
> 1972 Aug 0.214346148 32
> 1972 Sep 1.322102228 34747.8
> 1972 Oct 0.092663137 3655.9
> 1972 Nov 1.852276635 85.1
> 1972 Dec 2.011206002 42959.6
> 1973 Jan 5.55704346 153.5
> 1973 Feb 12.60326356 116.2
> 1973 Mar 11.08849105 223.6
> 1973 Apr 5.864925449 2.4
> ......
>
> I have used an example from a book (a primer on scientific programming
> with python) and it seems to be working (see below) but I am not sure if I
> have my keys etc. are set up correctly to then begin anlaysis, and even how
> to use the dictionaries in my analysis
>
> . For example how can I print out the year with calculated the mean
> 'firearea' of June-July-August for that year along with the maximum
> 'rainfall' for June-July-august of the same year?
> Any feedback will be greatly appreaciated!
>
> infile=open('d:/yearmonthrainfire.txt','r')
> lines=infile.readlines()
> infile.close()
> data={} #data[index][year]=indexvalue
> first_line=lines[0]
> climateindexname=first_line.split()
> for index in climateindexname:
> data[index]={}
> YEAR={}
> MONTH={}
>
> for line in lines[2:]:
> words=line.split()
> year=words[0] #years
> YEAR[year]={}
> month=words[1] #months
> MONTH[month]={}
> values=words[2:] #values of climateindices
> for index, v in zip(climateindexname, values):
> if v !=' ':
> data[index][year]=float(v)
>
> print "years=", YEAR
> print "months=", MONTH
> print "data=", data
>
> We usually reserve all caps names for constants.
> You have way too many dictionaries.
> Your program seems very complex for a very simple task.
> I will not attempt to figure out what it does.
>
>
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:http://mail.python.org/mailman/listinfo/tutor
>
>
>
> --
> Bob Gailer919-636-4239
> Chapel Hill NC
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120515/4ad4019c/attachment-0001.html>
More information about the Tutor
mailing list