【问题标题】:How to ignore NaN in the dataframe for Mann-whitney u test?如何在 Mann-whitney u 测试的数据框中忽略 NaN?
【发布时间】:2019-02-15 08:53:29
【问题描述】:

我有一个如下的数据框。

我想要通过比较每一列来检验 Mann-whitney u 的 p 值。 例如,我在下面尝试过。

from scipy.stats import mannwhitneyu
mannwhitneyu(df['A'], df['B'])

这会产生以下值。

MannwhitneyuResult(statistic=3.5, pvalue=1.8224273379076809e-05)

我想知道NaN是否影响结果,因此我按照图中的描述制作了以下df2df3数据帧并尝试如下。

mannwhitneyu(df2, df3)

这导致

MannwhitneyuResult(statistic=3.5, pvalue=0.00025322465545184154)

所以我认为NaN 值影响了结果。 有谁知道如何忽略数据框中的NaN 值?

【问题讨论】:

    标签: python pandas static scipy nan


    【解决方案1】:

    如您所见,mannwhitneyu 函数中没有参数允许您在遇到 NaN 值时指定其行为,但如果您检查它的 source code,您会发现它不需要NaN 值在计算某些键值时考虑(n1n2ranked 等)。这让我怀疑当某些输入值丢失时您会得到的任何结果。如果您不想使用NaN-ignoring 功能自己实现该功能,最好的办法可能是创建新的数组而不像您所做的那样丢失值,或者按照其他建议使用df['A'].dropna()回答。

    【讨论】:

      【解决方案2】:

      你可以使用df.dropna()你可以在这里找到大量的文档dropna

      根据您的示例,语法将如下所示:

      mannwhitneyu(df['A'].dropna(),df['B'])
      

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        • 1970-01-01
        • 2013-07-11
        • 2013-05-28
        相关资源
        最近更新 更多