You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas将多个0/1分布绘制到单个图表中

实现分组计数柱状图的方法

1. 数据预处理

首先我们需要把现有宽表转换为适合统计的长表,方便按label和列名分组计数:

import pandas as pd
import matplotlib.pyplot as plt

# 构造你的数据集
df = pd.DataFrame({
    'label': [0, 0, 1, 1],
    'colA': [1, 0, 0, 1],
    'colB': [0, 1, 0, 0],
    'colC': [0, 0, 1, 1]
})

# 转成长表格式,只保留值为1的记录
melted = df.melt(id_vars='label', value_vars=['colA', 'colB', 'colC'], 
                 var_name='column', value_name='flag')
melted = melted[melted['flag'] == 1]

# 统计每个列+label组合的数量
counts = melted.groupby(['column', 'label']).size().unstack(fill_value=0)

2. 绘制目标图表

要得到X轴为0/1、每个label下对应3个列的计数柱状图,直接调用plot方法即可:

# 切换行列,让X轴对应label,每个label下有3个分组柱子
counts.T.plot(kind='bar', figsize=(8, 4))
plt.ylabel('计数')
plt.xlabel('Label')
plt.title('各列按Label的计数分布')
plt.legend(title='列名')
plt.xticks(rotation=0)  # 让X轴标签水平显示
plt.show()

这段代码会生成你需要的图表:Label 0和1分别作为X轴的两个主类别,每个类别下包含colA、colB、colC三个分组的计数柱子,Y轴表示对应组合的记录数量。

内容的提问来源于stack exchange,提问作者zxcisnoias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:21:00