如何使用cycle在python中执行Mann-Whitney U测试?
我有一个循环,每次都会给出新的值k1和k2,但问题是在我的数据集中,有一些情况下,k1和k2中的所有值都是零。当程序运行到它们身上时,它只是抛出一个错误,并没有完成循环,还有很多计算。我如何才能让这些案例像NA或其他东西一样被签署,然后循环继续如何使用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检验,我希望循环不会
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)之前
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))