Spyder环境下CSV绘图仅使用前25行数据的实现方法
代码调整方案(最小改动适配需求)
核心问题定位
你当前的逻辑里csv.reader是逐行全量遍历文件内容,没有做读取行数截断,才会把500行全量存入列表;之前设置nrows=3的pd.read_csv读取结果根本没有接入后续绘图流程,属于冗余代码,没有实际作用。
具体调整步骤
- 第一步:给csv遍历流程加行数截断,实现仅读前25条有效实例
在原来的逐行遍历逻辑基础上新增行计数,读满25条有效数据(跳过表头)就强制终止遍历,避免全量读文件,参考调整后的代码:# 初始化行计数,定义需要读取的有效数据行数 row_counter = 0 TARGET_READ_ROWS = 25 x, y, z, xx = [], [], [], [] # 清空之前全量读取的列表内容 with open("你的DKI雅加达新冠数据.csv", "r", encoding="utf-8") as f: csv_reader = csv.reader(f) next(csv_reader) # 跳过CSV表头行,避免表头被当成数据存入 for row in csv_reader: # 读满25条有效数据就直接退出循环,不再遍历后续行 if row_counter >= TARGET_READ_ROWS: break # 按原有逻辑把当前行的四个字段存入对应列表,替换成你实际的列索引即可 x.append(row[日期对应的列索引]) y.append(int(row[新增病例数对应的列索引])) z.append(int(row[死亡数对应的列索引])) xx.append(int(row[治愈数对应的列索引])) row_counter += 1 # 计数+1 - 第二步:绘图阶段切片取前20条数据,适配实际展示要求
前面读了25条数据存列表后,绘图时不要直接用全量列表,通过Python列表切片取前20个元素传入绘图函数,原来的自定义标记、图例、数值偏移标注逻辑只需要把传入的数据源换成切片后的列表即可,不需要大改:# 切片取前20条绘图数据 plot_x = x[:20] plot_y = y[:20] plot_z = z[:20] plot_xx = xx[:20] # 后续matplotlib绘图逻辑(折线绘制、标记设置、图例、数值偏移标注)全部替换为上述plot_*开头的列表即可
避坑提醒
- 原有带数值偏移标注的绘图循环,记得把遍历索引范围改成前20个元素,不要沿用之前遍历全量列表的逻辑,避免出现标注和折线不匹配的问题
- 之前写的
pd.read_csv(..., nrows=3)的代码段和当前逻辑无关联,属于冗余代码,要么直接删除,要么如果后续想简化逻辑,可以直接用pd.read_csv("xxx.csv", nrows=26)(算上1行表头实际读25条有效数据)读取后转成列表,替代自己写的csv遍历流程,代码量更少 - 跳表头的步骤不能漏,不然表头行的文本内容会被当成第一条数据存入列表,既会挤占25条的计数名额,也会因为文本没法转成整数触发类型报错
内容的提问来源于stack exchange,提问作者ty520
相关产品推荐
相关产品推荐

