我有一个循环,每次都给出新的值k1和k2,但是问题是在我的数据集中,在k1和k2中所有值都为零的情况。当程序遇到它们时,它只会引发错误并且无法完成循环,并且仍然存在大量计算。我该如何使这样的案件如不适用之类的东西被签署,然后继续进行下去?
python3
import pandas
from scipy.stats import mannwhitneyu
print(mannwhitneyu(k1, k2))
我针对不同的观察结果进行了Mann-Whitney U检验,我希望周期不会因错误而停止,只是要注意,此处不可能做到这一点
错误示例(上面的第3行是正常的):
MannwhitneyuResult(statistic=3240.0, pvalue=0.16166098643677973)
MannwhitneyuResult(statistic=2958.5, pvalue=0.008850960706454409)
Traceback (most recent call last):
File "ars1", line 95, in <module>
print(mannwhitneyu(k1, k2))
File "/storage/software/python-3.6.0/lib/python3.6/site-packages/scipy/stats/stats.py", line 4883, in mannwhitneyu
raise ValueError('All numbers are identical in mannwhitneyu')
ValueError: All numbers are identical in mannwhitneyu
答案 0 :(得分:0)
如果2个数组相等,则可以继续循环。例如,如果:
k1 = [0,0,0,0,0];
k2 = [0,0,0,0,0];
然后您可以检查是否为k1 == k2
。如果为真,则对循环使用continue。像这样:
if ( k1 == k2 ) == True: continue
在致电mannwhitneyu(k1, k2)
答案 1 :(得分:0)
我在循环中进行了尝试,并将其保存在文件夹中的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))