pandas相关系数与协方差计算实战:pct_change、corr、cov详解
本文详解pandas中计算相关系数与协方差的核心方法。通过实例演示如何使用pct_change计算百分比变化,利用corr和cov计算列间相关性与协方差矩阵,并讲解DataFrame与Series间的对齐计算规则及axis参数的应用,帮助开发者掌握数据统计分析基础。
计算百分比变化与查看指定行数
首先介绍如何获取数据的百分比变化以及查看指定行数的数据。在pandas中,可以通过调用相关方法实现这一需求,具体代码实现见下方示例。
a = np.arange(1,13).reshape(6,2)
data = DataFrame(a)
#计算列的百分比变化,如果想计算行设置axis=1
print(data.pct_change())
'''
0 1
0 NaN NaN
1 2.000000 1.000000
2 0.666667 0.500000
3 0.400000 0.333333
4 0.285714 0.250000
5 0.222222 0.200000
'''
#输出前五行,默认是5,可以通过设置n参数来设置输出的行数
print(data.head())
'''
0 1
0 1 2
1 3 4
2 5 6
3 7 8
4 9 10
'''
#输出最后五行
print(data.tail())
'''
0 1
1 3 4
2 5 6
3 7 8
4 9 10
5 11 12
'''
计算DataFrame列间的相关系数与协方差
接下来演示如何计算DataFrame中各列之间的相关系数与协方差。这通常涉及对数据列进行统计关联分析,具体操作代码如下所示。
a = np.arange(1,10).reshape(3,3)
data = DataFrame(a,index=["a","b","c"],columns=["one","two","three"])
print(data)
'''
one two three
a 1 2 3
b 4 5 6
c 7 8 9
'''
#计算第一列和第二列的相关系数
print(data.one.corr(data.two))
#1.0
#返回一个相关系数矩阵
print(data.corr())
'''
one two three
one 1.0 1.0 1.0
two 1.0 1.0 1.0
three 1.0 1.0 1.0
'''
#计算第一列和第二列的协方差
print(data.one.cov(data.two))
#9.0
#返回一个协方差矩阵
print(data.cov())
'''
one two three
one 9.0 9.0 9.0
two 9.0 9.0 9.0
three 9.0 9.0 9.0
'''
计算DataFrame与列或Series的相关系数
此外,还可以计算整个DataFrame与特定列或Series之间的相关系数。这种跨对象的相关性计算在实际数据分析中同样常见,参考以下代码实现。
a = np.arange(1,10).reshape(3,3)
data = DataFrame(a,index=["a","b","c"],columns=["one","two","three"])
print(data)
'''
one two three
a 1 2 3
b 4 5 6
c 7 8 9
'''
#计算data与第三列的相关系数
print(data.corrwith(data.three))
'''
one 1.0
two 1.0
three 1.0
'''
#计算data与Series的相关系数
#在定义Series的时候,索引一定要去DataFrame的索引一样
s = Series([5,3,1],index=["a","b","c"])
print(data.corrwith(s))
'''
one -1.0
two -1.0
three -1.0
'''
索引对齐与axis参数注意事项
需要特别注意,当使用DataFrame或Series计算相关系数或协方差时,系统会依据索引对齐原则,仅对索引重叠且非NA的数据进行计算。对于无法对齐的索引部分,将自动填充为NA值。默认情况下,计算均针对DataFrame的列进行;若需改为对行进行计算,只需将axis参数设置为1即可。
以上内容涵盖了pandas中相关系数与协方差的主要应用场景与实现方式,旨在为读者提供实用的参考。希望这些示例能帮助大家在数据处理工作中更高效地运用相关功能。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













