请求:展示列前12个值的图表并修复代码仅显示单一年份问题
问题修复方案
问题根源
原代码的问题在于:遍历所有分类时,对每个分类只取了前12条数据,这12条数据大概率集中在同一年,导致分组后仅能得到单一年份的统计结果,无法展示该分类的所有年份数据。而你的需求是展示Category列中前12个不同值对应的各年份数据图表。
修复后的代码
import pandas as pd import matplotlib.pyplot as plt # 从Deadline列提取年份 ks['Year'] = pd.to_datetime(ks['Deadline']).dt.year # 获取Category列的前12个不同分类值 top_12_categories = ks['Category'].unique()[:12] # 获取数据集中所有存在的年份,用于补全缺失年份的计数 all_years = ks['Year'].unique() all_years.sort() for category in top_12_categories: # 提取当前分类的全部数据 product_df = ks[ks['Category'] == category] # 按年份分组统计数量,用reindex补全所有年份(缺失年份计数设为0) product_counts = product_df.groupby('Year').size().reindex(all_years, fill_value=0) # 绘制折线图 plt.plot(product_counts.index, product_counts.values, marker='o', linestyle='-', label=category) plt.xlabel('年份') plt.ylabel('数量') plt.title(f'{category}分类各年份数量统计(前12个分类)') plt.xticks(all_years, rotation=45, ha='right') plt.legend() plt.tight_layout() # 自动调整布局,避免标签被截断 plt.show()
关键修改点
- 调整为只遍历前12个独特分类,匹配你“展示某一列前12个值对应图表”的需求
- 移除每个分类取前12条数据的操作,保留该分类全部数据,确保能统计到所有年份
- 新增
reindex操作补全所有存在的年份,缺失年份计数设为0,避免图表断档或仅显示部分年份 - 添加
plt.tight_layout()解决年份标签被截断的问题
内容的提问来源于stack exchange,提问作者Yasmin Sayed
相关产品推荐
相关产品推荐

