私は20年の平均を計算するデータセットを持っています。データは次のようになります。問題パンダを使用してデータセットの全範囲のグループ化されたデータの平均を計算する
1974 1 1 5.3 4.6 7.3 3.4
1974 1 2 3.3 7.2 4.5 6.5
...
2005 12 364 4.2 5.2 3.3 4.6
2005 12 365 3.1 5.5 2.6 6.8
あり、ファイルにはヘッダーがありませんが、最初の列は、年二列月、3列目の年の日を含みます。残りの列は温度データです。
私は20年間の各日の平均気温を計算したいと思います。私はそれを行う最善の方法は、日ごとにデータをグループ化し、特定の年の範囲で毎日の平均を計算することだと思いました。ここに私のコードです:
import pandas as pd
hist_fn = 'tmean_daily_1974_2005.txt'
twenty_year_fn = '20_yr_mean_1974_1993.txt'
start = 1974
end = 1993
hist_mean = pd.read_csv(hist_fn, sep='\s+', header=None)
# Limit dataframe to only the 20 years for which I want the mean calculated
interval_mean = hist_mean[(hist_mean[0]>=start) & (hist_mean[0]<=end)]
# Rename the first column to reflect what mean this file is displaying
interval_mean.iloc[:, 0] = ("%s-%s" % (start, end))
# Generate mean for each day spread across all the years in the dataframe
interval_mean.iloc[:, 3:] = interval_mean.groupby(2, as_index=False).mean().iloc[:, 2:]
# Write multiyear mean to txt
interval_mean.to_csv(twenty_year_fn, sep='\t', header=False, index=False)
データセットが20年以上にわたり、私が使用した方法は、最初の20年の期間のために働いていますが、入力された年のその他のセットのために私に(主に)空のテキストファイルを提供します。
私はこれらの入力を使用するときに、それは動作します:
start = 1974
end = 1993
、それがこのようなファイル生成:
1974-1993 1 1 4.33 5.25 6.84 3.67
1974-1993 1 2 7.23 6.22 5.65 6.23
...
1974-1993 12 364 5.12 4.34 5.21 2.16
1974-1993 12 365 4.81 5.95 3.56 6.78
が、私はこれへの入力を変更します。
start = 1975
end = 1994
を
温度なしの.txtファイルを生成します。
1975-1994 1 1
1975-1994 1 2
...
1975-1994 12 364
1975-1994 12 365
この方法が最初の20年間の期間では機能しますが、後続の間隔ではなぜ機能しないのか分かりません。データが整理される方法やスライスされる方法とは関係がありますか?それが邪魔だ今とき
あなたの答えの2番目の部分は、ドキュメントの右側のセクションに私を指摘し、問題を正しく解決しました。最初の部分は必要ではありませんでした。何年もの間、私は毎年何年もの間、何年もの間、手段を欲しかったからです。投稿の最初のセクションを削除できますか?それは質問に対処していないからですか? – Neil
完了。ちょうどあなたのコードは、次のものを1つのグループとみなすことに注意してください。[01-01-1974、01-02-1974、01-03-1974、...、01-12-1974、01-01-1975、... ] '(そしてそれに対して1つの行を生成する)。私はそれが「複数年の期間にわたる年の毎日」とはみなしません。 – tmrlvi