如何在Pandas中按组计算相关关系

799 阅读1分钟

你可以使用下面的基本语法,在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

由于两个相关系数都是正数,这告诉我们两队的得分和助攻之间的关系是正数。

也就是说,倾向于得更多分数的球员也倾向于记录更多的助攻。

相关链接: 什么被认为是 "强 "相关关系?

请注意,我们可以通过不使用unstackiloc函数来缩短语法,但结果会更难看。

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.