为Kruskal-Wallis H-test python创建向量

时间:2016-03-05 16:48:34

标签: python pandas dataframe kruskal-wallis

我的数据集如下

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(数字〜组)

1 个答案:

答案 0 :(得分:4)

我不熟悉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。)