如何使用cycle在python中执行Mann-Whitney U测试?

如何使用cycle在python中执行Mann-Whitney U测试?,python,pandas,loops,scipy,statistics,Python,Pandas,Loops,Scipy,Statistics,我有一个循环,每次都会给出新的值k1和k2,但问题是在我的数据集中,有一些情况下,k1和k2中的所有值都是零。当程序运行到它们身上时,它只是抛出一个错误,并没有完成循环,还有很多计算。我如何才能让这些案例像NA或其他东西一样被签署,然后循环继续 python3 import pandas from scipy.stats import mannwhitneyu print(mannwhitneyu(k1, k2)) 我对不同的观测值进行了Mann-Whitney U检验,我希望循环不会

我有一个循环,每次都会给出新的值k1和k2,但问题是在我的数据集中,有一些情况下,k1和k2中的所有值都是零。当程序运行到它们身上时,它只是抛出一个错误,并没有完成循环,还有很多计算。我如何才能让这些案例像NA或其他东西一样被签署,然后循环继续

python3 

import pandas

from scipy.stats import mannwhitneyu

print(mannwhitneyu(k1, k2))
我对不同的观测值进行了Mann-Whitney U检验,我希望循环不会在错误处停止,只是要注意,这在这里是不可能的

错误示例(上面第3行是正常的):

MannwhitneyuResult(统计=3240.0,pvalue=0.16166098643677973)
MannwhitneyuResult(统计=2958.5,pvalue=0.008850960706454409)
回溯(最近一次呼叫最后一次):
文件“ars1”,第95行,在
印刷品(mannwhitneyu(k1,k2))
mannwhitneyu中的文件“/storage/software/python-3.6.0/lib/python3.6/site packages/scipy/stats/stats.py”,第4883行
raise VALUE ERROR(‘mannwhitneyu’中的所有数字都相同)
ValueError:mannwhitneyu中的所有数字都相同

如果两个数组相等,则可以继续循环。例如,如果:

k1 = [0,0,0,0,0];
k2 = [0,0,0,0,0];
然后您可以检查
k1==k2
。如果是真的,只需对循环使用continue。像这样:

if ( k1 == k2 ) == True: continue
在你打电话给曼惠特尼尤(k1,k2)之前
  • 我在循环中尝试了它,还将它保存在一个文件夹中的csv文件中

  • 转换列表中的序列,并检查其是否相等

      for y in df.columns:
          target = df[y]
          list_mann_white = []
    
    
          for x in df.columns:
              if list(target) == list(df[x]):
                  pass
              else:
                  list_mann_white.append([stats.mannwhitneyu(target,df[x])[1],x])
    
          list_mann_white.sort()
          mann_csv = pd.DataFrame(chi_list)
          mann_csv.to_csv('Mann/target_{}.csv'.format(y))
    

  • 哦!非常感谢。你能告诉我现在如何进行多重比较的p值修正吗?我今天写了一篇文章:
      for y in df.columns:
          target = df[y]
          list_mann_white = []
    
    
          for x in df.columns:
              if list(target) == list(df[x]):
                  pass
              else:
                  list_mann_white.append([stats.mannwhitneyu(target,df[x])[1],x])
    
          list_mann_white.sort()
          mann_csv = pd.DataFrame(chi_list)
          mann_csv.to_csv('Mann/target_{}.csv'.format(y))