看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 pandas
中,corr()
方法用于计算数据框(DataFrame
)列之间的相关性。
DataFrame.corr(method='pearson',
min_periods=1,
numeric_only=False)
可用的数据类型:
通常可以用于包含数值数据的 DataFrame
或 Series
。
参数意义:
method
(可选,默认值为 'pearson'):指定计算相关性的方法,可以是 'pearson'(皮尔逊相关系数,默认)、'kendall'(肯德尔相关系数)、'spearman'(斯皮尔曼相关系数)。min_periods
(可选,默认值为 1):参与计算相关性的每对列所需的最小观测值数量。numeric_only
(可选,默认值为 False
):如果为 True
,则仅计算数字列之间的相关性。返回值:
返回一个数据框,其中行和列的索引与原始数据框相同,单元格中的值是相应列之间的相关性系数。值的范围在 -1 到 1 之间,-1 表示完全负相关,1 表示完全正相关,0 表示无相关性。
使用场景:
假设有一个数据集,我们希望计算各列之间的相关系数矩阵:
import pandas as pd
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [2, 4, 6, 8, 10],
'C': [5, 4, 3, 2, 1],
'D': [1, 3, 5, 7, 9]
}
df = pd.DataFrame(data)
# 计算相关系数矩阵
corr_matrix = df.corr(method='pearson')
print("相关系数矩阵:")
print(corr_matrix)
输出:
相关系数矩阵:
A B C D
A 1.000000 1.000000 -1.000000 1.000000
B 1.000000 1.000000 -1.000000 1.000000
C -1.000000 -1.000000 1.000000 -1.000000
D 1.000000 1.000000 -1.000000 1.000000
在这个示例中:
A
和 B
完全正相关(相关系数为 1)。A
和 C
完全负相关(相关系数为 -1)。B
和 C
完全负相关(相关系数为 -1)。A
和 D
完全正相关(相关系数为 1)。传入一个可调用对象:
def histogram_intersection(a, b):
v = np.minimum(a, b).sum().round(decimals=1)
return v
df = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
columns=['dogs', 'cats'])
df.corr(method=histogram_intersection)
dogs cats
dogs 1.0 0.3
cats 0.3 1.0
df = pd.DataFrame([(1, 1), (2, np.nan), (np.nan, 3), (4, 4)],
columns=['dogs', 'cats'])
df.corr(min_periods=3)
dogs cats
dogs 1.0 NaN
cats NaN 1.0
这些结果帮助我们理解数据中变量之间的线性关系。
更新时间:2024-08-07 20:45:36 标签:pandas python corr 相关性 相关系数