一、简介
dataframe.corr()是Pandas库中的一个函数,用于计算DataFrame中各列之间的相关系数。相关系数衡量的是两个变量之间线性关系的强度和方向,结果在-1到1之间,分别表示完全负相关和完全正相关。
二、语法和参数
1
|
DataFrame.corr(method='pearson', min_periods=1)
|
method: 可选。计算相关系数的方法,有’pearson’(默认)、‘kendall’、'spearman’三种可选。
- 'pearson':标准皮尔逊相关系数。
- 'kendall':肯德尔等级相关系数。
- 'spearman':斯皮尔曼等级相关系数。
min_periods: 可选。每对元素的最小数量,以便计算相关系数。
三、实例
3.1 计算默认的皮尔逊相关系数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pandas as pd
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [5, 4, 3, 2, 1],
'C': [2, 2, 3, 4, 4]
}
df = pd.DataFrame(data)
# 计算相关系数
correlation_matrix = df.corr()
print(correlation_matrix)
|
输出:
A B C
A 1.000000 -1.000000 0.948683
B -1.000000 1.000000 -0.948683
C 0.948683 -0.948683 1.000000
3.2 计算斯皮尔曼相关系数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pandas as pd
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [5, 4, 3, 2, 1],
'C': [2, 2, 3, 4, 4]
}
df = pd.DataFrame(data)
# 计算相关系数
correlation_matrix = df.corr(method='spearman')
print(correlation_matrix)
|
输出:
A B C
A 1.000000 -1.000000 0.948683
B -1.000000 1.000000 -0.948683
C 0.948683 -0.948683 1.000000
3.3 计算斯皮尔曼相关系数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pandas as pd
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [5, 4, 3, 2, 1],
'C': [2, 2, 3, 4, 4]
}
df = pd.DataFrame(data)
# 计算相关系数
correlation_matrix = df.corr(method='kendall')
print(correlation_matrix)
|
输出
A B C
A 1.000000 -1.000000 0.894427
B -1.000000 1.000000 -0.894427
C 0.894427 -0.894427 1.000000
四、注意事项
- 当使用kendall和spearman方法时,计算可能会比pearson方法慢,因为这些方法需要排序。
- 如果数据集中存在NaN值,默认情况下这些值会被忽略。
- 计算相关系数前,确保数据已经清洗并准备好,以避免错误或不准确的结果。
|