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

使用Python Seaborn拆分 分隔多值列、计数并绘制统计图表

实现方案

核心思路是自动按单元格内的换行分隔符拆分所有多值条目,不需要手动预设任何配料组合规则,全程自动识别所有出现过的配料,拆分后直接统计绘图即可。

关键修改点

  • 读取CSV后对Toppings列做拆分展开:以\r\n为分隔符切分每个单元格的字符串,将切分得到的多个配料转为独立行,自动清除配料名称前后多余空格、过滤空条目,全程自动识别所有出现过的配料,无需手动枚举任何组合规则。
  • 绘图数据源替换为拆分后的单值配料数据集,原有样式配置、百分比标注、长标签自动换行逻辑无需改动即可复用。
  • 百分比计算基数可按需调整:统计「选该配料的订单占总订单比例」时,基数取原CSV的总订单行数;统计「该配料出现次数占所有配料总出现次数比例」时,基数取拆分后的配料总条目数。

修改后完整可运行代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import seaborn as sns
import math
import io
import textwrap
%matplotlib inline
sns.set_style('ticks')
import warnings
warnings.filterwarnings('ignore')

# 读取源文件
data = pd.read_csv('E:/testing_data.csv')
supplies = pd.DataFrame(data)

# ---------- 多值单元格拆分逻辑 ----------
# 按\r\n分隔符拆分每个单元格的配料,展开为独立行,清理空格和空值
split_toppings = supplies['Toppings'].str.split(pat=r'\r\n').explode().str.strip()
split_toppings = split_toppings[split_toppings != ''].reset_index(drop=True)
# 构造拆分后的单值统计数据集
topping_stat = pd.DataFrame({'Toppings': split_toppings})

# 绘图部分
sns.set(style="darkgrid")
# 基数配置:占总订单比例用len(supplies),占配料总出现次数比例用len(topping_stat)
total = float(len(supplies))
ax = sns.countplot(
    x='Toppings', 
    hue="Toppings", 
    data=topping_stat, 
    dodge=False, 
    order = topping_stat['Toppings'].value_counts().index
)
plt.legend(loc='upper right', title='Supplies Needed')
plt.title('Distribution of Supplies');
plt.xlabel('Supplies', fontsize=15)
plt.ylabel('Number of Occurrences', fontsize=15)
plt.rcParams["figure.figsize"] = (15,10)
plt.rcParams['font.size'] = '12'

for p in ax.patches:
    percentage = '{:.1f}%'.format(100 * p.get_height()/total)
    x = p.get_x() + p.get_width()/2
    y = p.get_height() + .01
    ax.annotate(percentage, (x, y), ha='center', color='black', size=10)

labels = [textwrap.fill(label.get_text(), 15) for label in ax.get_xticklabels()]
ax.set_xticklabels(labels);
plt.show()

效果说明

代码会自动识别所有出现过的配料,不管是单值单元格还是多值组合单元格,都会被拆成独立的配料条目统计,后续新增配料、新增组合都不需要修改代码,直接运行即可自动完成统计绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:18:42