Matplotlib绘制DataFrame:如何避免合并重复电影条目
解决重复电影名绘图被合并的问题
核心原因
当直接用pandas按电影名列绘图时,默认会将电影名视为分类变量自动去重合并,导致重复出现的电影仅显示一次,丢失了原DataFrame的行顺序和重复条目。
解决方案
方法1:以行索引为x轴,手动设置刻度标签
利用DataFrame的行位置索引作为x轴,再将电影名设置为x轴刻度标签,就能完整保留所有行的顺序(包括重复电影):
import matplotlib.pyplot as plt # 假设你的DataFrame名为df,要绘制的数值列是'目标列'(如票房、评分等) plt.figure(figsize=(12, 6)) plt.plot(df.index, df['目标列']) # 设置x轴刻度为电影名,旋转标签避免重叠 plt.xticks(ticks=df.index, labels=df['电影名'], rotation=45, ha='right') plt.xlabel('电影') plt.ylabel('对应数值') plt.title('电影数据按原顺序绘制') plt.tight_layout() plt.show()
方法2:使用seaborn绘图并指定x为行索引
若用seaborn可视化,同样通过行索引绑定电影名标签,确保每个条目都被绘制:
import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(12, 6)) sns.lineplot(x=df.index, y='目标列', data=df, marker='o') plt.xticks(ticks=df.index, labels=df['电影名'], rotation=45, ha='right') plt.xlabel('电影') plt.ylabel('对应数值') plt.title('电影数据按原顺序绘制') plt.tight_layout() plt.show()
方法3:重置索引后使用连续索引
如果原DataFrame的索引不是连续数值,可先重置索引再绘图:
df_reset = df.reset_index(drop=True) plt.figure(figsize=(12, 6)) plt.plot(df_reset.index, df_reset['目标列']) plt.xticks(ticks=df_reset.index, labels=df_reset['电影名'], rotation=45, ha='right') plt.xlabel('电影') plt.ylabel('对应数值') plt.title('电影数据按原顺序绘制') plt.tight_layout() plt.show()
关键提示
- 不要直接将电影名列设为x轴(pandas会自动对分类变量去重)
- 通过行位置索引关联电影名标签,才能完整保留原数据的所有行和顺序
内容的提问来源于stack exchange,提问作者Kayla
相关产品推荐
相关产品推荐

