python - 循环产生不正确的统计数据和 P 值
问题描述
我正在尝试简化我进行 t 测试的流程,并找到了一种基于过滤标志循环遍历每一列的方法。但是,当我执行循环功能时,结果是
- 所有相同的统计数据和 P 值
- 如果我作为一个独立的人来做,那就不同了。
1:错误
对于 df1.filter(like='DELTA').columns 中的 col:
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA'] ,df1[df1['COHORT_FLAG']==0] ['MH_IP_DELTA'])
打印(col + ': ' + 'Stats=%.3f, p=%.3f' % (stat, p))
2:对:
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA'] ,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
知道为什么循环不能正常工作,还有另一种方法可以遍历大型记录集吗?我不想每次都手动输入 [col]。
解决方案
您的问题中没有可使用的数据框,但我可以指出问题可能来自哪里。首先,我将格式化您的代码,以便我们与正在查看的内容在同一页面上:
1(“正确”):
for col in df1.filter(like='DELTA').columns:
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA'] ,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
print(col + ': ' + 'Stats=%.3f, p=%.3f' % (stat, p))
2(“错误”):
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA'] ,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
首先要注意的是,“正确”和“错误”代码片段中的关键行之间没有区别。这告诉我们问题在于循环的构造方式。查看循环,我们看到除了语句col
之外永远不会出现。print()
循环产生所有相同值的事实证实了循环没有在不同的列上循环。
如果没有数据框,我不知道您对哪些列感兴趣,而且我对您使用的统计功能也不太熟悉。但是您需要告诉您的程序感兴趣的列。'MH_IP_DELTA'
如果这是要col
更改的列,也许您会更改。不确定这是否是感兴趣的变量,因为我看不到您的数据框中发生了什么,但这是我的猜测。
它是哪一列,你需要在哪里改变它取决于你自己来决定,但问题是你的代码,正如你所写的,只是简单地运行同一段代码 X 次,其中 X 是列数。
推荐阅读
- javascript - 如何更改嵌入文本的字体大小
- jsf - 检查复选框菜单中的选定项目
- sql - 尝试将外键添加到现有表时出现模糊错误
- kubernetes - 强制 kubernetes 入口 cname 格式
- react-native - 如何在 React Native 中加入 2 个堆栈导航器
- php - laravel 5.5 禁止/停用用户
- r - 将数字存在的位置更改为 1
- javascript - 如何使用 Javascript 以块(流)的形式播放来自 url 的音频
- javascript - 如何在网页中的按钮上有一个突出显示的小图标来显示新的更新?
- python - 将钱分成票据的功能