Pandasでグループごとの相関を計算する方法


次の基本構文を使用して、pandas のグループごとに 2 つの変数間の相関関係を計算できます。

 df. groupby (' group_var ')[[' values1 ',' values2 ']]. corr (). unstack (). iloc [:, 1 ]

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

例: Pandas でグループごとの相関を計算する

次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [2, 7, 9, 3, 12, 10, 14, 21]})

#view DataFrame
print (df)

次のコードを使用して、チームごとにグループ化されたポイントアシストの間の相関関係を計算できます。

 #calculate correlation between points and assists, grouped by team
df. groupby (' team ')[[' points ',' assists ']]. corr (). unstack (). iloc [:, 1 ]

team
At 0.603053
B 0.981798
Name: (points, assists), dtype: float64

結果から次のことがわかります。

  • チーム A の得点とアシストの間の相関係数は0.603053です。
  • チーム B の得点とアシストの間の相関係数は0.981798です。

どちらの相関係数も正であるため、両チームの得点とアシストの関係が正であることがわかります。

つまり、より多くの得点を獲得する傾向があるプレーヤーは、より多くのアシストを記録する傾向もあります。

関連: 「強い」相関関係とは何ですか?

unstack関数とiloc関数を使用しないことで構文を短縮することもできますが、結果はさらに醜くなることに注意してください。

 df. groupby (' team ')[[' points ',' assists ']]. corr ()

		assist points
team			
A points 1.000000 0.603053
        assists 0.603053 1.000000
B points 1.000000 0.981798
        assists 0.981798 1.000000

この構文は両方のチームの相関行列を生成し、余分な情報を提供します。

追加リソース

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

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

コメントを追加する

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