【问题标题】:Saving output of scipy.stats.spearmanr() to excel or text将 scipy.stats.spearmanr() 的输出保存到 excel 或文本
【发布时间】:2019-07-27 10:30:05
【问题描述】:

我需要生成包含检验统计量和 p 值的相关矩阵(这在心理学研究中确实很常见)并且我正在使用

spearmanr()

来自 scipy.stats 来做到这一点。

我有一个看起来像这样的数据集

v_1    v_2    v_3    v_4    v_5
 1      4      2      5      3 
 5      3      6      2      4 
 6      2      4      1      1 
 2      5      3      2      6 
 6      3      2      2      3

当我调用 spearmanr() 时

cor1 = spearmanr(v_1, v_4)

可以在控制台看到输出,也可以

print(cor1)

返回

SpearmanrResult(correlation=array([[x,y,z,a,b,c]]), (pvalue=array([[x,y,z,a,b,c]]))

但是我无法对那些允许我以我选择的风格进行报告的价值观做任何事情。

我尝试使用

将它们转换为 pandas DF
cors = pd.DataFrame(cor1)

我已经尝试用 to_excel 等将其写入 excel 或文本。

我错过了一些愚蠢的东西。

请帮忙。

【问题讨论】:

    标签: python pandas scipy visualization correlation


    【解决方案1】:

    cor1 实际上是一个 NamedTuple。您可以访问相关字段: cor1.correlationcor1.pvalue

    或者你可以在调用spearman时直接分解:

    cor, pvalue = spearmanr(v_1, v_4)

    然后可以将这些数组转换为 DataFrame 并写入 excel。

    例如pd.DataFrame(cor).to_csv("correlation.csv")

    【讨论】:

    • 谢谢一百万,但是当我尝试这个确切的代码时,我得到: pd.DataFrame(cor).to_csv("correlation.csv") Traceback(最近一次通话):文件“",第 3 行,在 <module> pd.DataFrame(cor).to_csv("correlation.csv") 文件 "/anaconda3/lib/python3.7/site-packages/pandas/core /frame.py",第 422 行,在 <b>init</b> 中引发 ValueError('DataFrame 构造函数未正确调用!') ValueError: DataFrame 构造函数未正确调用! 我已确保参数与我的实际数据集相关。</module>
    • @KevOMalley743 对于示例输入,您将其调用为两个向量,并将返回相关性和 pvalue 的单个值。您不能从中创建数据框。鉴于您正在为多维数据计算 spearman 并因此获取相关数组和 pvalus 它将正常工作。有关示例,请参见此处:docs.scipy.org/doc/scipy/reference/generated/…
    • 第二条评论真的很有帮助,非常感谢您抽出宝贵的时间。对我来说,python 学家对可视化相关性的看法如此不同,这似乎很奇怪。多年来我一直在使用 spss,并希望摆脱它,但我会说,即使 python 在数据清理方面做得更好,spss 仍然有一些更好的功能。
    猜你喜欢
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多