【问题标题】:Creating separate groups based on dataframe variable根据数据框变量创建单独的组
【发布时间】:2021-09-29 23:48:43
【问题描述】:

我从 pandas 数据框中获取了 2 个具有 +100 值的变量,现在看起来像这样:

var1 var2
0.66 Yes
0.034 No
0.422 Yes
0.934 No
0.66 Yes
0.04 Yes

我正在尝试对这些独立组进行 Mann whitney U 检验:

Group1 = "if var1 = "yes" | Group 2 = if var1 = "no" 

我不确定如何使这些组适合 Mann whitney U 框架?

from scipy.stats import mannwhitneyu
U1, p = mannwhitneyu(group1, group2, method="exact")

【问题讨论】:

    标签: python pandas statistics pycharm


    【解决方案1】:

    一口气,groupby var2 并展开两个数组:

    from scipy.stats import mannwhitneyu
    U1, p = mannwhitneyu(*df.groupby('var2')['var1'].apply(list))
    U1, p
    

    输出:(4.0, 0.4071687463160714)

    其他选项:

    from scipy.stats import mannwhitneyu
    U1, p = mannwhitneyu(df.query('var2 == "yes"')['var1'], df.query('var2 == "no"')['var1'])
    U1, p
    

    注意。 method="exact" 参数对我不起作用,即使在手动分配组时也是如此

    【讨论】:

    • 谢谢,我收到此错误消息:mannwhitneyu() 需要 2 到 4 个位置参数,但给出了 5 个,我不确定它的含义。
    • 看起来你在 var2 中有两个以上的变量,输出是什么:df.groupby('var2')['var1'].apply(list)
    • 啊,太棒了!谢谢。我确实注意到其中一个组下降了一行。所以 len(var1) 是 68,这很好,但 len(var2) 是 457,但应该是 458。看看 df,它已经删除了第一行?
    • 如果您的值不是是/否,我添加了另一个选项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2016-02-13
    • 1970-01-01
    • 2020-08-07
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多