如何在Pandas中使用corrwith()(附实例)

570 阅读2分钟

你可以使用 pandas 中的**corrwith()**函数来计算两个不同的 pandas DataFrames 中具有相同名称的数字列之间的成对相关性。

这个函数使用以下基本语法:

df1.corrwith(df2)

注意:这个函数与**corr()**函数不同,后者是用来计算同一DataFrame中两个数值列之间的相关性。

下面的例子展示了如何在实践中使用**corrwith()**函数。

例子:如何在Pandas中使用corrwith()函数

假设我们有以下两个pandas DataFrame:

import pandas as pd

#create first DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F'],
                    'points': [18, 22, 29, 25, 14, 11],
                    'assists': [4, 5, 5, 4, 8, 12],
                    'rebounds': [10, 6, 4, 6, 3, 5]})

print(df1)

  team  points  assists  rebounds
0    A      18        4        10
1    B      22        5         6
2    C      29        5         4
3    D      25        4         6
4    E      14        8         3
5    F      11       12         5

#create second DataFrame 
df2 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F'],
                    'points': [22, 25, 27, 35, 25, 20],
                    'assists': [15, 13, 8, 8, 5, 8],
                    'rebs': [4, 11, 12, 8, 7, 10]})

print(df2)

  team  points  assists  rebs
0    A      22       15     4
1    B      25       13    11
2    C      27        8    12
3    D      35        8     8
4    E      25        5     7
5    F      20        8    10

我们可以使用corrwith()函数来计算这两个DataFrames中名称相同的数字列之间的相关性:

#calculate correlation between numeric columns with same names in each DataFrame
df1.corrwith(df2)

points      0.677051
assists    -0.478184
rebounds         NaN
rebs             NaN
dtype: float64

从输出结果中我们可以看到:

  • 两个数据框架中积分列的数值之间的相关性是0.677
  • 两个数据框架中的助攻列的值之间的相关性是**-0.478**。

由于篮板篮板的列名在两个DataFrames中都不存在,所以这些列的值都被返回为NaN

注1:默认情况下,corrwith()函数计算列之间的皮尔逊相关系数,但你也可以指定method='kendall'或method='spearman'来代替计算不同类型的相关系数。

注意#2:你可以在这里找到**corrwith()**函数的完整文档。