python - 有没有办法通过 groupby 绘制几个条形图?
问题描述
train['Name_title'].groupby(pd.qcut(train['Name_Len'],5)).value_counts(normalize = True)
部分输出是:
Name_Len Name_title
(11.999, 19.0] Mr. 0.803922
Miss. 0.151961
Mrs. 0.019608
Master. 0.009804
Col. 0.004902
Dr. 0.004902
Rev. 0.004902
(19.0, 23.0] Mr. 0.698718
Miss. 0.237179
Master. 0.025641
Mrs. 0.019231
Dr. 0.006410
Mlle. 0.006410
Rev. 0.006410
我想绘制每个组的每个标题的比例。有什么办法可以直接做到吗?
先感谢您。
解决方案
您可以使用交叉表来制表并使用带有 堆叠=True 的熊猫图:
np.random.seed(111)
train = pd.DataFrame({'Name_title':np.random.choice(['Mr','Mrs','Miss'],20),
'Name_Len':np.random.uniform(1,50,20)})
pd.crosstab(pd.qcut(train['Name_Len'],5),
train['Name_title'],normalize='index').plot.bar(stacked=True)
如果你 unstack 它也可以工作:
train['Name_title'].groupby(
pd.qcut(train['Name_Len'],5)
).value_counts(normalize = True).unstack().plot.bar(stacked=True)
推荐阅读
- c - 如何提示用户从C中的键盘输入整数和字符
- java - 如何处理java中的递归Stackoverflows
- sas - 如何区分是读入数字还是字符观察?
- android - 使用 android ime 切换 Archor 选择
- javascript - 在 Angular 中使用点击事件处理多个组件
- bash - 如何将通过命令行输入的字符串类型转换为shell脚本中的时间类型?
- angular-cli - ng build 卡在 95%
- php - 如何在 foreach 循环中求和计数查询?
- ruby-on-rails - 参数存在时的 ActionController::ParameterMissing
- asp.net - Web API 在本地工作正常但在服务器上返回 501?