【问题标题】:create vectors for Kruskal-Wallis H-test python为 Kruskal-Wallis H-test python 创建向量
【发布时间】:2016-06-19 10:00:19
【问题描述】:

我有如下数据集

df = pd.DataFrame({'numbers':range(9), 'group':['a', 'b', 'c']*3})

 group numbers
0   a   0
1   b   1
2   c   2
3   a   3
4   b   4
5   c   5
6   a   6
7   b   7
8   c   8

我想创建向量

a = [0, 3, 6]
b = [1, 4, 7]
c = [2, 5, 8]

对于 Kruskal-Wallis H-test python

stats.kruskal(a, b, c)

或者可能是 R 中的类似物(数字~组)

【问题讨论】:

    标签: python pandas dataframe kruskal-wallis


    【解决方案1】:

    我不熟悉 Kruskal-Wallis 测试的任何特殊要求,但您可以通过以下方式访问这些分组数组:

    groupednumbers = {}
    for grp in df['group'].unique(): 
        groupednumbers[grp] = df['numbers'][df['group']==grp].values
    
    print(groupednumbers)
    *** {'c': array([2, 5, 8]), 'b': array([1, 4, 7]), 'a': array([0, 3, 6])}
    

    也就是说,您可以通过显式调用 groupednumbers['a'] 等或通过列表获取向量:

    args = groupednumbers.values()
    

    ...或者如果您需要它们按顺序排列:

    args = [groupednumbers[grp] for grp in sorted(df['group'].unique())]
    

    然后调用

    stats.kruskal(*args)
    

    或者如果您需要实际列表,您可以使用list(df['numbers'][...].values。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 2015-08-03
      • 2015-05-03
      • 2018-02-14
      • 2022-01-21
      • 2016-05-07
      • 2018-03-14
      • 2015-04-11
      相关资源
      最近更新 更多