gpt4 book ai didi

python - pandas 列相关性具有统计显着性

转载 作者:行者123 更新时间:2023-12-01 19:19:23 25 4
gpt4 key购买 nike

给定 pandas 数据帧 df,获取其列 df.1df.2 之间的相关性的最佳方法是什么?

我不希望输出用 NaN 来计算行数,而 pandas 内置相关性会这样做。但我也希望它输出 pvalue 或标准错误,而内置函数则不会。

SciPy 似乎被 NaN 所困扰,尽管我相信它确实报告了重要性。

数据示例:

     1           2
0 2 NaN
1 NaN 1
2 1 2
3 -4 3
4 1.3 1
5 NaN NaN

最佳答案

一次计算所有 p 值,您可以使用calculate_pvalues 函数(代码如下):

df = pd.DataFrame({'A':[1,2,3], 'B':[2,5,3], 'C':[5,2,1], 'D':['text',2,3] })
calculate_pvalues(df)

输出类似于corr()(但具有 p 值):

            A       B       C
A 0 0.7877 0.1789
B 0.7877 0 0.6088
C 0.1789 0.6088 0
<小时/>

详细信息:

  • D 列会被自动忽略,因为它包含文本。
  • p 值四舍五入至小数点后 4 位
  • 您可以进行子集化以指示确切的列:calculate_pvalues(df[['A','B','C']]
<小时/>

以下是函数代码:

from scipy.stats import pearsonr
import pandas as pd

def calculate_pvalues(df):
dfcols = pd.DataFrame(columns=df.columns)
pvalues = dfcols.transpose().join(dfcols, how='outer')
for r in df.columns:
for c in df.columns:
tmp = df[df[r].notnull() & df[c].notnull()]
pvalues[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
return pvalues

关于python - pandas 列相关性具有统计显着性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com