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

如何优化DataFrame Origin列统计结果,实现可设轴的柱状图绘制?

解决方法

有几种简单的方式可以搞定这个需求,不用纠结索引的问题:

方法1:将统计结果转为普通DataFrame

先用value_counts()统计频次,再用reset_index()把索引转成普通列,之后就能正常指定X/Y轴了:

import matplotlib.pyplot as plt

# 统计并转换格式
origin_counts = df['Origin'].value_counts().reset_index()
origin_counts.columns = ['Origin', 'Count']  # 重命名列,方便后续引用

# 绘制柱状图
plt.bar(origin_counts['Origin'], origin_counts['Count'])
plt.xlabel('国家/地区')
plt.ylabel('产品数量')
plt.title('各产地产品数量分布')
plt.xticks(rotation=45)  # 旋转X轴标签,避免重叠
plt.show()

方法2:直接用pandas Series的plot方法

value_counts()返回的Series本身就支持直接调用plot方法,不需要额外转格式:

import matplotlib.pyplot as plt

df['Origin'].value_counts().plot(kind='bar')
plt.xlabel('国家/地区')
plt.ylabel('产品数量')
plt.title('各产地产品数量分布')
plt.xticks(rotation=45)
plt.show()

方法3:用Seaborn一键生成(推荐)

Seaborn的countplot可以直接基于原始DataFrame绘制,连统计步骤都省了:

import seaborn as sns
import matplotlib.pyplot as plt

sns.countplot(data=df, x='Origin')
plt.xlabel('国家/地区')
plt.ylabel('产品数量')
plt.title('各产地产品数量分布')
plt.xticks(rotation=45)
plt.show()

这几种方法都能轻松实现你的需求,选哪种看个人习惯:如果需要保留统计数据做后续分析,用方法1;追求简洁用方法2;想要更美观的默认样式,用方法3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:10:30