两个分类变量(pandas)的描述性统计

时间:2017-11-03 06:33:48

标签: python pandas pandas-groupby

我需要获得两个分类变量之间频率的均值和中位数。 E.g:

标签字母数字
Foo | A | 1
Foo | B | 2
Foo | C | 4
酒吧| A | 2
酒吧| G | 3
酒吧| N | 1
酒吧| P | 2
Cee | B | 1
Cee | B | 2
Cee | C | 4
Cee | D | 5

例如,每个标签的平均和中位数字数是多少。这里有三种可能标签中的11种(M = 3.667),中位数为4(3 foo,4 bar,4 cee)。我怎么能在大熊猫中计算出来。是否可以使用groupby语句执行此操作?我的数据集比这大得多。

1 个答案:

答案 0 :(得分:1)

一列需要value_countsgroupby + size(如果需要省略NaN,则需要count):

a = df['Label'].value_counts()
print (a)
Cee    4
Bar    4
Foo    3
Name: Label, dtype: int64

#alternative
#a = df.groupby('Label').size()
print (a.mean())
3.6666666666666665

print (a.median())
4.0
a = df.groupby(['Label','Letter']).size()
print (a)
Label  Letter
Bar    A         1
       G         1
       N         1
       P         1
Cee    B         2
       C         1
       D         1
Foo    A         1
       B         1
       C         1
dtype: int64

print (a.mean())
1.1

print (a.median())
1.0