获取python中的Row百分比来绘制

时间:2016-03-08 23:17:54

标签: python pandas histogram

您好我正在寻找创建某种频率表,我可以获得行(或列)百分比,目的是能够在条形图中并排绘制数据。输出看起来像这样:

       Male  Female
 Mon   21%     79%
 Tues  33%     67%
 Weds  11%     89%

目前我的数据如下:

Day  Gender
Mon  Male
Mon  Female
Mon  Female
Weds Female
Fri  Male

最后我只想要5个条形图(每天一个),每个性别有两个条形图。我试过groupby:

df.groupby(['day','gender']).size()

但是这只会给出原始计数,并且两个直方图都无法解释,并且条形图看起来很奇怪,因为我无法正常化(某些日子的体积比其他日子高得多)。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

在上面执行你的组之后,你需要取消堆叠结果(这会产生一个数据透视表)。

gb = df.groupby(['Day','Gender']).size().unstack()
>>> gb
Gender    Female      Male
Day                       
Fri          NaN  1.000000
Mon     0.666667  0.333333
Weds    1.000000       NaN

您可能希望用零填充NaN(.fillna(0))。

现在您可以将此结果除以行的总和:

>>> gb.div(gb.sum(axis=1).values, axis=0)
Gender    Female      Male
Day                       
Fri          NaN  1.000000
Mon     0.666667  0.333333
Weds    1.000000       NaN

您可以通过附加.plot(kind='bar')

来绘制此图