如何可视化多值分类字段中各分类的分布?以蔬菜清单数据集为例
蔬菜分布可视化方案解答
1. 柱状图适用性判断
用柱状图展示单种蔬菜的分布完全合适,柱状图的核心适用场景就是不同分类指标的数值对比,你需要展示每种蔬菜的出现频次,用柱状图可以非常直观地看出不同蔬菜的出现频率差异。
2. 现有代码可优化点
你当前的实现思路是通顺的,但存在一个潜在隐患和简化空间:
- 计数逻辑存在误匹配风险:用
str.contains()做模糊匹配,若后续数据中出现包含其他蔬菜名的复合名称(比如"onion sprout"),会导致统计结果不准 - 可借助pandas内置方法简化代码,不需要循环遍历统计
3. 优化后实现代码
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 拆分蔬菜列,转换为单行单蔬菜的结构后直接统计频次 veg_series = df["veg"].dropna().str.replace(', ', ',').str.split(',').explode() veg_count = veg_series.value_counts().reset_index() veg_count.columns = ['蔬菜种类', '出现频次'] # 绘制柱状图 plt.figure(figsize=(16,8)) ax = sns.barplot(data=veg_count, x='蔬菜种类', y='出现频次', palette="pastel") ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha="right") plt.show()
4. 可选其他可视化方案
如果后续蔬菜种类超过20种,也可以根据需求选择:
- 水平柱状图:不需要旋转x轴标签,阅读体验更好
- 饼图/环形图:适合展示每种蔬菜占总出现次数的比例,但种类超过10种不推荐,会导致标签拥挤
内容的提问来源于stack exchange,提问作者July Jones
相关产品推荐
相关产品推荐

