如何在 pandas 中按组计算相关性
您可以使用以下基本语法在 pandas 中按组计算两个变量之间的相关性:
df. groupby (' group_var ')[[' values1 ',' values2 ']]. corr (). unstack (). iloc [:, 1 ]
以下示例展示了如何在实践中使用此语法。
示例:按 Pandas 中的组计算相关性
假设我们有以下 pandas DataFrame:
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 中执行其他常见操作:
如何在 Pandas 中执行 GroupBy 求和
如何在 Pandas 中使用 Groupby 和 Plot
如何在 Pandas 中使用 GroupBy 计算唯一值