你可以使用 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()**函数的完整文档。