你可以使用下面的基本语法,在pandas中按组计算两个变量之间的相关关系。
df.groupby('group_var')[['values1','values2']].corr().unstack().iloc[:,1]
下面的例子展示了如何在实践中使用这种语法。
例子。在Pandas中按组计算相关性
假设我们有如下的pandas DataFrame。
import pandas as pd
#create DataFrame
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
A 0.603053
B 0.981798
Name: (points, assists), dtype: float64
从输出结果中我们可以看到。
- A队的得分和助攻之间的相关系数是0.603053。
- B队的得分和助攻之间的相关系数是0.981798。
由于两个相关系数都是正数,这告诉我们两队的得分和助攻之间的关系是正数。
也就是说,倾向于得更多分数的球员也倾向于记录更多的助攻。
相关链接: 什么被认为是 "强 "相关关系?
请注意,我们可以通过不使用unstack和iloc函数来缩短语法,但结果会更难看。
df.groupby('team')[['points','assists']].corr()
points assists
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和绘图
如何在Pandas中使用GroupBy计数唯一值
The postHow to Calculate Correlation By Group in Pandasappeared first onStatology.