如何优化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
相关产品推荐
相关产品推荐

