当前位置:  开发笔记 > 编程语言 > 正文

如何在熊猫中制作非数值数据的条形图

如何解决《如何在熊猫中制作非数值数据的条形图》经验,为你挑选了2个好方法。

假设我有这些数据:

>>> df = pd.DataFrame(data={"age": [11, 12, 11, 11, 13, 11, 12, 11],
                        "response": ["Yes", "No", "Yes", "Yes", "Yes", "No", "Yes", "Yes"]})
>>> df
    age response
0   11  Yes
1   12  No
2   11  Yes
3   11  Yes
4   13  Yes
5   11  No
6   12  Yes
7   11  Yes

我想制作一个条形图,显示按年龄汇总的是或否答案.有可能吗?我曾尝试histkind=bar,但也能按年龄排序,而不是绘图年龄和响应分开.

它看起来像这样:

  ^
4 |   o
3 |   o
2 |   o
1 |   ox      ox      o
0 .----------------------->
      11      12      13  

o"是" 在哪里,x是"否".

此外,是否可以将数字分组?例如,如果您的范围从11到50,则可以将其放入5年的箱中.此外,是否可以在轴上或单个条上显示百分比或计数?



1> Learner..:

要生成多条形图,首先需要按年龄和响应进行分组,然后将数据帧取消堆叠:

df=df.groupby(['age','response']).size()
df=df.unstack()
df.plot(kind='bar')

这是输出图:

酒吧情节



2> Stefan..:

bin查看您的数据,pandas.cut() 请查看文档.对于分类图,我发现该seaborns软件包非常有用 - 请参阅有关分类图的教程.下面是一个示例,用于使用随机样本提到的箱子的是/否计数图:

df = pd.DataFrame(data={"age": randint(10, 50, 1000),
                    "response": [choice(['Yes', 'No']) for i in range(1000)]})

df['age_group'] = pd.cut(df.age, bins=[g for g in range(10, 51, 5)], include_lowest=True)
df.head()

   age response age_group
0   48      Yes  (45, 50]
1   31       No  (30, 35]
2   25      Yes  (20, 25]
3   29      Yes  (25, 30]
4   19      Yes  (15, 20]

import seaborn as sns
sns.countplot(y='response', hue='age_group', data=df, palette="Greens_d")

在此输入图像描述

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有