[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