我有一个数据框如下。
我希望通过比较每一列来测试Mann-whitney u测试的p值。作为一个例子,我在下面尝试过。
from scipy.stats import mannwhitneyu
mannwhitneyu(df['A'], df['B'])
这导致以下值。
MannwhitneyuResult(statistic=3.5, pvalue=1.8224273379076809e-05)
我想知道NaN
是否影响了结果,因此我制作了以下df2
和df3
数据帧,如图所示并尝试如下。
mannwhitneyu(df2, df3)
这导致了
MannwhitneyuResult(statistic=3.5, pvalue=0.00025322465545184154)
所以我认为NaN
值会影响结果。有谁知道如何忽略数据帧中的NaN
值?
正如您所看到的,mannwhitneyu
函数中没有参数允许您在遇到NaN
值时指定其行为,但是如果您检查其source code,您可以看到它在计算某些值时不考虑NaN
值。关键值(n1
,n2
,ranked
等)。这让我怀疑在缺少某些输入值时会得到的任何结果。如果你不想用NaN
-ignoring功能自己实现这个功能,那么最好的办法就是创建新的数组,而不是像你那样缺少值,或者按照另一个答案的建议使用df['A'].dropna()
。