您好,我是Python的新用戶,我遇到了問題,正在做我認爲是相當基本的任務。彙總每日數據以計算月平均數
我有幾個包含每日積雪深度數據的(> 50)csv文件。我想遍歷csv文件並計算每月的雪深度。數據示例:
Date,SD
1/1/2000,36
1/2/2000,36
1/3/2000,38
1/4/2000,40
2/1/2000,48
2/2/2000,48
換句話說,我想計算每月積雪深度平均值並將輸出結果寫入新的csv文件。我能夠修改我的數據的一個不同的代碼示例,但我正在接收使用Date作爲我的字典中的鍵值的關鍵錯誤。
有什麼建議嗎?
到目前爲止的代碼:
from __future__ import division
import csv
from collections import defaultdict
def default_factory():
return [0, None, None, 0]
reader = csv.DictReader(open(r'C:\SandBox\VALIDATION\TestTable.csv'))
dates = defaultdict(default_factory)
for row in reader:
sd = int(row["SD"])
dates[row["Dates"]][0] += sd
max = dates[row["Dates"]][1]
dates[row["Dates"]][1] = amount if max is None else amount if amount > max else max
min = dates[row["Date"]][2]
dates[row["Dates"]][2] = amount if min is None else amount if amount < min else min
dates[row["Dates"]][3] += 1
for date in dates:
dates[date][3] = dates[date][0]/dates[date][3]
writer = csv.writer(open(r'C:\SandBox\VALIDATION\TestAvg.csv', 'w', newline = ''))
writer.writerow(["Date", "SD", "max", "min", "mean"])
writer.writerows([date] + dates[date] for date in dates)
編輯:只是爲了澄清,我想實現每月總平均,即一月平均,平均日等..不計算平均單個日期。
你可以發佈整個stacktrace/error嗎? – jgritty 2012-03-30 20:29:16
如果您計算的是平均值而非中位數,您爲什麼關心最小值和最大值? – jgritty 2012-03-30 20:37:18
日期,雪深或日期,SD? – WolframH 2012-03-30 20:42:58