パンダ: diff で groupby を使用する方法


次の基本構文を使用して、pandas のdiff()関数とともにgroupby()関数を使用できます。

 df = df. sort_values (by=[' group_var1 ', ' group_var2 '])

df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )

この特定の例では、DataFrame の行を 2 つの特定の変数で並べ替えてから、それらをgroup_var1でグループ化し、 values_var列の行の差を計算します。

fillna(0) は、DataFrame 内の連続した行間でグループ変数の値が変化するたびにゼロを挿入するように pandas に指示することに注意してください。

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas で diff を使用して groupby を使用する方法

異なる日付に 2 つの異なる店舗で行われた合計売上高を含む次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' date ': pd. to_datetime (['2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04',
                                           '2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04']),
                   ' sales ': [12, 15, 24, 24, 14, 19, 12, 38]})

#view DataFrame
print (df)

  blind date sales
0 A 2022-01-01 12
1 A 2022-01-02 15
2 A 2022-01-03 24
3 A 2022-01-04 24
4 B 2022-01-01 14
5 B 2022-01-02 19
6 B 2022-01-03 12
7 B 2022-01-04 38

ここで、店舗ごとにグループ化された、連続する日付間の売上値の差を含むsales_diffという新しい列を作成するとします。

これを行うには、次の構文を使用できます。

 #sort DataFrame by store and date
df = df. sort_values (by=[' store ', ' date '])

#create new column that contains difference between sales grouped by store
df[' sales_diff '] = df. groupby ([' store '])[' sales ']. diff (). fillna ( 0 )

#view update DataFrame
print (df)

  store date sales sales_diff
0 A 2022-01-01 12 0.0
1 A 2022-01-02 15 3.0
2 A 2022-01-03 24 9.0
3 A 2022-01-04 24 0.0
4 B 2022-01-01 14 0.0
5 B 2022-01-02 19 5.0
6 B 2022-01-03 12 -7.0
7 B 2022-01-04 38 26.0

新しいsales_diff列には、店舗ごとにグループ化された、連続する日付間の売上値の差が含まれます。

たとえば、次のことがわかります。

  • 2022 年 1 月 1 日と 2022 年 2 月 1 日の店舗 A の売上の差は3です。
  • 2022/02/01 と 2022/03/01 の間の店舗 A の売上の差は9です。
  • 2022 年 1 月 3 日と 2022 年 1 月 4 日の店舗 A の売上の差は0です。

等々。

追加リソース

次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。

Pandas で GroupBy 合計を実行する方法
Pandas で Groupby と Plot を使用する方法
Pandas で GroupBy を使用して一意の値をカウントする方法

コメントを追加する

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