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

関連: Pandas で日付範囲を作成する方法

次の構文を使用して、週ごとにグループ化された売上の合計を計算できます。

 #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 で条件付きでカウントする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です