こんにちは私はPythonの新しいユーザーです。私が想像していたことはかなり基本的な作業でした。毎月の平均データを集計するための集計データ
私は毎日の積雪深度データを含むいくつかの(> 50)csvファイルを持っています。私は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
。私はデータのコードの別の例を変更することができましたが、私の辞書のキー値として日付を使用するためのキーエラーを受け取りました。
アドバイスはありますか?
コードこれまで:
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)
EDIT:だけ明確にする、私はすなわち、1月1つの日付の平均を計算していない...など、2月が意味する、意味、毎月の総平均値を達成しようとしています。 Date
が列名であるようにあなたは、データのあなたの例から、(例えばmin = dates[row["Date"]][2]
)それはDate
あるカラム名(例えばmax = dates[row["Dates"]][1]
)、および他の場所としてDates
を使用していた
stacktrace/error全体を投稿できますか? – jgritty
中央値ではなく平均を計算する場合、なぜ最小値と最大値を気にしますか? – jgritty
日付、雪の深さまたは日付、SD? – WolframH