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

基于含多标签的Pandas DataFrame创建分组/堆叠条形图

解决Pandas多标签列的条形图绘制问题

我来帮你搞定这个多标签列的条形图绘制需求!首先咱们先把你的示例数据整理好,然后一步步拆分标签、统计频次,最后画出清晰的条形图。

第一步:准备示例数据和导入库

首先先把你的DataFrame用代码还原,同时导入需要的库:

import pandas as pd
from matplotlib import pyplot as plt

# 构建你的示例DataFrame
data = {
    'Name': ['foo', 'bar', 'bla', 'blu', 'boo', 'faa'],
    'Cat_1': ['P', 'R, M', 'E', 'F', 'G', 'P, E'],
    'Cat_2': ['Apples, Pears, Cats', 'Apples', 'Pears', 'Cats, Pears', 'Apples, Pears', 'Apples, Cats']
}
df = pd.DataFrame(data)

第二步:拆分多标签列

因为Cat_1和Cat_2里的标签是用逗号分隔的,我们需要把每个标签拆分成单独的行,这样才能统计每个标签的出现次数。用str.split()拆分字符串,再用explode()把列表展开成多行:

# 处理Cat_1列:拆分并展开
cat1_expanded = df['Cat_1'].str.split(', ', expand=True).stack().reset_index(level=1, drop=True).rename('Cat_1')
# 处理Cat_2列:拆分并展开
cat2_expanded = df['Cat_2'].str.split(', ', expand=True).stack().reset_index(level=1, drop=True).rename('Cat_2')

# 统计每个标签的出现频次
cat1_counts = cat1_expanded.value_counts().sort_index()
cat2_counts = cat2_expanded.value_counts().sort_index()

第三步:绘制条形图

现在我们可以把两个列的标签频次分别绘制,或者放在同一个图里对比。这里用子图来展示两个列的条形图,更清晰:

# 创建子图,1行2列
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))

# 绘制Cat_1的条形图
cat1_counts.plot(kind='bar', ax=ax1, color='#1f77b4')
ax1.set_title('Cat_1标签频次')
ax1.set_xlabel('标签')
ax1.set_ylabel('出现次数')

# 绘制Cat_2的条形图
cat2_counts.plot(kind='bar', ax=ax2, color='#ff7f0e')
ax2.set_title('Cat_2标签频次')
ax2.set_xlabel('标签')
ax2.set_ylabel('出现次数')

# 调整布局,避免标签重叠
plt.tight_layout()
plt.show()

额外优化:合并对比的条形图

如果你想把两个列的标签放在同一个图里对比,可以先把两个统计结果合并成一个DataFrame,再绘制:

# 合并两个统计结果
combined_counts = pd.DataFrame({
    'Cat_1': cat1_counts,
    'Cat_2': cat2_counts
}).fillna(0)  # 把不存在的标签次数设为0

# 绘制堆叠或分组条形图
combined_counts.plot(kind='bar', figsize=(10, 6), rot=0)
plt.title('Cat_1 vs Cat_2 标签频次对比')
plt.xlabel('标签')
plt.ylabel('出现次数')
plt.legend(title='类别')
plt.show()

这样处理后,就能清晰展示每个标签在对应列中的出现次数啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:22:59