df计算整个dataframe的相关系数矩阵及P值
时间: 2024-09-30 13:13:50 浏览: 46
Python数据相关系数矩阵和热力图轻松实现教程
5星 · 资源好评率100%
在Python的数据分析库pandas中,如果你有一个DataFrame `df`,可以使用`corr()`函数来计算整个DataFrame内各列之间的一组皮尔逊相关系数。同时,它还会生成一个包含P值的表格。下面是一个例子:
```python
import pandas as pd
import numpy as np
from statsmodels.sandbox.stats.multicomp import multipletests
# 假设 df 是一个 pandas DataFrame
df = pd.DataFrame(np.random.rand(100, 5), columns=['A', 'B', 'C', 'D', 'E'])
# 使用 .corr() 获取相关系数矩阵
correlation_matrix = df.corr()
# P值通常由 corr() 自动计算,但默认不显示。我们可以手动计算并添加:
# 提取系数数据(忽略对角线,因为对角线相关系数为1)
correlation_data = correlation_matrix.values[:-1, :-1]
# 对数据进行假设检验,得到显著性水平(通常是0.05)下的p值
p_values = np.ones_like(correlation_data)
_, p_values, _, _ = multipletests(correlation_data.flatten(), alpha=0.05, method='bonferroni')
# 将p值转换回原来的形状,并放在原矩阵的下方
p_values = pd.DataFrame(p_values.reshape(*correlation_matrix.shape), index=correlation_matrix.index[:-1], columns=correlation_matrix.columns[:-1])
# 结果数据框将包含相关系数和p值
correlation_results = pd.concat([correlation_matrix, p_values], axis=1)
print(correlation_results)
```
这段代码首先计算了皮尔逊相关系数,然后使用`multipletests`函数进行了多比较校正(如Bonferroni修正),得到了显著性的p值。
阅读全文