This is driving me bananas 🙂
I am trying to SUM values from a list according to Month, I tried a few things, but badly need guidance.
I am trying to :
For Month 1 – 12.
Iteratively Read PlanWeek(4) values from a list (EC_PlanData), and Sum
Then calculate a smoothed avergae based on summed value.
Here is my code:
G_counter = 1
j = i
m = 1
Plantotal = 0
PlanMonth = 0
DFD = []
EC_PlanData = [500,500.... etc] # 52 values
PlanWeek = range(j,j+3)
Month = range(m,13,1)
## Define Variables
ym, xh, xm, N1, Z1, N2, Z2 = 0,0,0,0,0,0,0
for month in Month: # for each month 1 - 13
for i,e in enumerate(list_1): # read through list
PlanMonth = PlanMonth + i+3 # sum 4 weekly values
DFD.append(PlanMonth) # append sum value to DFD list
if i == 1: # if G_counter = 1, which it always is
IFX.append(PlanMonth) # also append to IFX list
Plantotal= Plantotal+PlanMonth # calculations here on are
for i,e in enumerate(DFD): # evaluated after appending above
y = e
ym = Plantotal / m # These are calculating a smoothing average
xh = xh + m
xm = xh / m
N1 = (m-xm) * (y-ym)
Z1 = (m-xm) * (m-xm)
N2 = N2 + N1
Z2 = Z2 + Z1
if Z2 == 0: # Decision on FC value
FC = 0 # This or
else:
FC = ym -(N2/Z2)*xm + (N2/Z2)*(m+1) # This
J +=4 # Advances on 4 time periods
M +=1 # Advances on 1 Month
PlanMonth = 0 # Resets PlanMonth variable
You must realize that 12 does not divide 52, and that there are not 4 weeks to every month. So to give an example that you can fine tune to get exactly what you want, I’ve defined a week to belong to the same month that its thursdays belong to. This dovetails nicely with the ISO 8601 definition of the first week of the year. If there’s a week left, then I add that week to december.
Result:
You should also be aware of the fact that the year may contain 53 weeks, and if so you must supply a 53-item list instead of a 52-item list. If you don’t, the 53rd week is simply ignored.