如何在Python中基于pandas crosstab结果仅绘制1值占比的柱状图
pandas仅提取crosstab中1值结果绘制柱状图的方法
直接在你现有统计逻辑的基础上,提取1对应的列再调用绘图接口即可,操作步骤如下:
- 首先将你统计得到的交叉表结果赋值给变量方便调用:
import pandas as pd # 你的原有统计逻辑,赋值给ct变量 ct = pd.crosstab(df['item'], df['values'], normalize='index').mul(100).sort_values(by=1, ascending=False)
- 提取1值对应列,直接绘制柱状图:
pandas的crosstab输出结果为DataFrame结构,列名就是原values字段的取值(0、1),直接取列名为1的序列绘图即可,无需额外过滤0值:
import matplotlib.pyplot as plt # 仅提取values=1的占比数据绘制柱状图,可自行调整样式参数 ct[1].plot( kind='bar', figsize=(10, 6), title='各item对应values=1的占比(%)', xlabel='item分类', ylabel='占比百分比', rot=45, # 旋转x轴标签避免重叠 color='#1f77b4' ) plt.tight_layout() # 自动调整布局避免标签截断 plt.show()
注意:如果你的values字段存储的是字符串格式的"0""1",将提取列的代码改为ct["1"]即可。
内容的提问来源于stack exchange,提问作者joe8ones
相关产品推荐
相关产品推荐

