DataFrame多组年度数据频率绘制及影视直方图故障排查
问题解答
一、具体故障修复:迪士尼影视类型分布直方图无图形问题
常见原因及修复方案
数据筛选错误
确认是否正确排除了episode类型,筛选出目标数据:# 正确筛选movie和series子集 df_movie = df[df['type'] == 'movie'] df_series = df[df['type'] == 'series']打印
len(df_movie)和len(df_series)验证数据是否非空,若为0则说明筛选条件有误。plt.hist参数使用不当
必须指定要统计的数值型列(比如上映年份release_year),不能直接传入整个DataFrame子集:import matplotlib.pyplot as plt # 正确调用方式:指定统计列、设置分组区分参数 plt.hist(df_movie['release_year'], bins=15, alpha=0.5, label='Movie') plt.hist(df_series['release_year'], bins=15, alpha=0.5, label='Series') # 补充可视化元素 plt.xlabel('上映年份') plt.ylabel('数量') plt.title('迪士尼电影与剧集年度发行频率对比') plt.legend() plt.grid(axis='y', linestyle='--') plt.show()数据类型异常
检查统计列(如release_year)是否为数值类型,若为字符串需转换并清理空值:import pandas as pd df['release_year'] = pd.to_numeric(df['release_year'], errors='coerce') df = df.dropna(subset=['release_year'])
二、通用方法:基于DataFrame绘制多组年度频率分布图
标准步骤
- 数据预处理
- 筛选出需要对比的分组数据
- 确保统计列(如年度)为数值型,清理空值、异常值
- 绘图实现
- 方式一:matplotlib原生实现分组直方图
如上述故障修复中的代码,通过多次调用plt.hist分别绘制各组,用alpha(透明度)、label区分分组 - 方式二:用seaborn简化分组绘图
import seaborn as sns # 先筛选目标类型 df_filtered = df[df['type'].isin(['movie', 'series'])] sns.histplot(data=df_filtered, x='release_year', hue='type', bins=15, alpha=0.5) plt.title('年度发行频率按类型对比') plt.show()
- 方式一:matplotlib原生实现分组直方图
- 可视化优化
根据数据分布调整bins数量,添加坐标轴标签、标题、图例,按需开启网格提升可读性
内容的提问来源于stack exchange,提问作者EyeOfIlum
相关产品推荐
相关产品推荐

