Hello all,

This is my first post here.  I have tried to get answers from StackOverflow, 
but I realized quickly that I am too "green" for that environment.  As such, I 
have purchased Beginning Python (2nd edition, Hetland) and also the $29.00 
course available from learnpythonthehardway(dot)com.  I have been reading 
fervently, and have enjoyed python -- very much.  I can do all the basic 
printing, math, substitutions, etc.  Although, I am stuck when trying to 
combine all the new skills I have been learning over the past few weeks.  
Anyway, I was hoping to get some help with something NON-HOMEWORK related. (I 
swear.)  

I have a task that I have generalized due to the nature of what I am trying to 
do -- and it's need to remain confidential.  

My end goal as described on SO was: "Calculating and Plotting the Average of 
every (X) items in a list of (Y) total", but for now I am only stuck on the 
actual addition, and/or averaging items -- in a serial sense, based on the 
relation to the previous number, average of numbers, etc being acted on.  Not 
the actual plotting. (Plotting is pretty EZ.)

Essentially:

1.  I have a list of numbers that already exist in a file.  I generate this 
file by parsing info from logs.
2.  Each line contains an integer on it (corresponding to the number of 
milliseconds that it takes to complete a certain repeated task).
3.  There are over a million entries in this file, one per line; at any given 
time it can be just a few thousand, or more than a million.

   Example:
   -------
   173
   1685
   1152
   253
   1623

Eventually what I'll need to do is:

1.  Index the file and/or count the lines, as to identify each line's 
positional relevance so that it can average any range of numbers that are 
sequential; one to one another.
2.  Calculate the difference between any given (x) range.  In order to be able 
to ask the program to average every 5, 10, 100, 100, or 10,000 etc. --> until 
completion.  This includes the need to dealing with stray remainders at the end 
of the file that aren't divisible by that initial requested range. 

(ie: average some file with 3,245 entries by 100 --> not excluding the 
remaining 45 entries, in order to represent the remainder.)
    
So, looking above, transaction #1 took "173" milliseconds, while transaction #2 
took 1685 milliseconds.  

Based on this, I need to figure out how to do two things:

1.  Calculate the difference of each transaction, related to the one before it 
AND record/capture the difference. (An array, list, dictionary -- I don't 
care.) 
2.  Starting with the very first line/entry, count the first (x number) and 
average (x).  I can obtain a "Happy medium" for what the gradient/delta is 
between sets of 100 over the course of the aggregate.

   ie:
   ---
   Entries 1-100 = (eventualPlottedAvgTotalA)
   Entries 101-200 = (eventualPlottedAvgTotalB)
   Entries 201-300 = (eventualPlottedAvgTotalC)
   Entries 301-400 = (eventualPlottedAvgTotalD)

>From what I can tell, I don't need to indefinitely store the values, only pass 
>them as they are processed (in order) to the plotter. I have tried the 
>following example to sum a range of 5 entries from the above list of 5 (which 
>works), but I don't know how to dynamically pass the 5 at a time until 
>completion, all the while retaining the calculated averages which will 
>ultimately be passed to pyplot at a later time/date.

What I have been able to figure out thus far is below.  

ex:

   Python 2.7.3 (default, Jul 24 2012, 10:05:38) 
   [GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
   Type "help", "copyright", "credits" or "license" for more information.
   >>> plottedTotalA = ['173', '1685', '1152', '253', '1623']
   >>> sum(float(t) for t in plottedTotalA)
   4886.0

I received 2 answers from SO, but was unable to fully capture what they were 
trying to tell me.  Unfortunately, I might need a "baby-step" / "Barney-style" 
mentor who is willing to guide me on this.  I hope this makes sense to someone 
out there, and thank you in advance for any help that you can provide.  I 
apologize in advance for being so thick if its uber-EZ.

-- Mike
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to