如何在 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

由于相关系数均为正,这表明两支球队的得分和助攻之间存在正相关关系。

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

相关:什么被认为是“强”相关性?

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

 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 计算唯一值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注