【问题标题】:how do I change the GROUPBY order in a histogram?如何更改直方图中的 GROUPBY 顺序?
【发布时间】:2019-03-02 21:02:22
【问题描述】:

我有一个包含 4 个字段的数据框,Responderfemalema​​rriedchildren我将其绘制为直方图。

import pandas as pd
data2= data1.groupby('Responder')
data3= data2['female','married','children'].mean()
data3.plot(kind='bar') 

正如您在输出中看到的那样,它被分组了,这正是我想要的。我现在唯一想做的就是拥有它,以便将每个变量组合在一起。例如,female 有两个蓝色条,N 条第一个,Y 条第二个。然后,已婚 的 N 条和 Y 条等等。

执行此操作需要什么语法?

【问题讨论】:

  • 你能发布一些来自data1的示例数据吗?

标签: python pandas histogram


【解决方案1】:

在绘制DataFrame时,每一列成为一个图例条目,每一行成为一个横轴类别。

# Example data (different from yours):
df = pd.DataFrame({'Responder': ['Y', 'N', 'N', 'Y', 'Y', 'N', 'Y', 'N'],
                   'female': [0, 1, 1, 0, 1, 1, 0, 1], 
                   'married': [0, 1, 1, 1, 1, 0, 0, 1], 
                   'children': [0, 1, 0, 1, 1, 0, 1, 0]})

g = df.groupby('Responder')
res = g.mean().T
res
Responder     N     Y
female     1.00  0.25
married    0.75  0.50
children   0.25  0.75

res.plot(kind='bar')

顺便说一句,我不确定mean 是否是正确的选择,因为您的原始数据由二进制计数组成。归一化总和会更有意义吗?

【讨论】:

  • 谢谢彼得。我所做的只是在 data3=data2['female','married','children'].mean() 的末尾添加一个 .T。所以我想我只需要转置它。再次感谢!
  • @djacobs1216,你说得对,回想起来,唯一需要的调整就是转置 :) 不客气,编码愉快!
猜你喜欢
  • 2017-06-03
  • 2020-01-30
  • 2021-04-18
  • 2019-09-28
  • 2014-05-09
  • 2018-12-18
  • 2014-08-28
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多