我需要获得两个分类变量之间频率的均值和中位数。 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语句执行此操作?我的数据集比这大得多。
答案 0 :(得分:1)
一列需要value_counts
或groupby
+ 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