Pandas dataframe で週ごとにグループ化する方法 (例あり)
次の基本構文を使用して、pandas DataFrame で行を週ごとにグループ化できます。
#convert date column to datetime and subtract one week df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ') #calculate sum of values, grouped by week df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()
この特定の数式は、日付列の行を週ごとにグループ化し、DataFrame の値の列の値の合計を計算します。
次の例は、この構文を実際に使用する方法を示しています。
例: Pandas で週ごとにグループ化する方法
ある会社のさまざまな日付の売上を示す次のパンダ データフレームがあるとします。
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})
#view DataFrame
print (df)
dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7
次の構文を使用して、週ごとにグループ化された売上の合計を計算できます。
#convert date column to datetime and subtract one week df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ') #calculate sum of values, grouped by week df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum () date 2022-01-02 32 2022-01-09 44 2022-01-16 18 Freq: W-SUN, Name: sales, dtype: int64
結果を解釈する方法は次のとおりです。
- 2022 年 1 月 2 日の翌日から始まる 1 週間で、合計32 件の販売がありました。
- 2022 年 1 月 9 日の翌日から始まる 1 週間に、合計44 件の販売がありました。
- 2022 年 1 月 16 日の翌日から始まる 1 週間に、合計18 件の販売が行われました。
デフォルトでは、パンダは週が日曜日 ( W-SUN ) の翌日から始まると想定していることに注意してください。
ただし、 ドキュメントによると、このFreqの値は変更できます。
たとえば、各週を月曜日の翌日 (つまり火曜日) から開始する場合は、 Freq=W-MONを指定できます。
同様の構文を使用して、週ごとにグループ化された最大売上高を計算できます。
#convert date column to datetime and subtract one week df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ') #calculate max of values, grouped by week df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max () date 2022-01-02 9 2022-01-09 9 2022-01-16 7 Freq: W-SUN, Name: sales, dtype: int64
結果を解釈する方法は次のとおりです。
- 2022 年 1 月 2 日の翌日から始まる 1 週間の 1 日あたりの最大販売数は9でした。
- 2022 年 1 月 9 日以降の 1 週間における 1 日あたりの最大販売数は9です。
- 2022 年 1 月 16 日の翌日から始まる 1 週間の 1 日あたりの最大販売数は7です。
注: pandas でのgroupby操作の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
Pandas DataFrame で月ごとにグループ化する方法
Pandas DataFrame で日ごとにグループ化する方法
Groupby を使用して Pandas で条件付きでカウントする方法