假设我有这些数据:
>>> 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
我想制作一个条形图,显示按年龄汇总的是或否答案.有可能吗?我曾尝试hist
和kind=bar
,但也能按年龄排序,而不是绘图年龄和响应分开.
它看起来像这样:
^ 4 | o 3 | o 2 | o 1 | ox ox o 0 .-----------------------> 11 12 13
o
"是" 在哪里,x
是"否".
此外,是否可以将数字分组?例如,如果您的范围从11到50,则可以将其放入5年的箱中.此外,是否可以在轴上或单个条上显示百分比或计数?
要生成多条形图,首先需要按年龄和响应进行分组,然后将数据帧取消堆叠:
df=df.groupby(['age','response']).size() df=df.unstack() df.plot(kind='bar')
这是输出图:
要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")