Python绘制折线图:零值缺失问题解决方案求助
解决方法
你的问题出在提前过滤了correct=False的记录,导致没有错题的考试直接被排除在统计结果外,折线图自然显示不了这些考试的0值。修改思路是先保留所有题型A的记录,统计每个考试的错题数,再补全所有考试编号并填充0值。
修改后的完整代码
import pandas as pd import matplotlib.pyplot as plt # 1. 筛选所有题型A的记录,无需提前过滤对错 quest_a = df2[df2["type_question"] == "A"] # 2. 按考试编号分组,统计每组中错题(correct=False)的数量 # sum(~x)等价于统计correct为False的条目数:False取反后为True(对应int值1),sum后就是错题总数 error_counts = quest_a.groupby("n_exam")["correct"].apply(lambda x: sum(~x)) # 3. 生成完整的考试编号范围(1到12),补全缺失编号并填充0 full_exam_numbers = pd.Index(range(1, 13), name="n_exam") error_counts_full = error_counts.reindex(full_exam_numbers, fill_value=0) # 4. 绘制折线图 plt.plot(error_counts_full.index, error_counts_full.values) plt.xlabel("考试编号") plt.ylabel("题型A错题数") plt.title("各考试题型A错题数趋势") plt.xticks(range(1, 13)) # 强制x轴显示全部12个考试编号 plt.show()
关键步骤说明
- 步骤2:通过
groupby后直接统计每组错题数,避免提前过滤丢失无错题的考试记录。 - 步骤3:用
reindex匹配完整的考试编号列表,fill_value=0把无错题的考试数值设为0,确保12场考试都出现在统计结果中。 - 绘图时设置
xticks保证x轴显示所有编号,折线图就能完整展示所有考试的错题数据。
内容的提问来源于stack exchange,提问作者Arthur7920
相关产品推荐
相关产品推荐

