光伏数据可视化异常:合并数据后图表呈累积而非均值形态
问题排查与解决方案
数据背景
- 18个月内每日对3组光伏装置每2分钟采集输出数据
- 单份CSV文件包含1列
TimeStamp、3列对应装置的PV输出数据
需求目标
- 计算各装置每个时间点的18个月平均值(同一时间点的所有数据求和后除以天数)
- 生成各装置PV输出随时间变化的折线图
现存问题
已完成数据合并与重复列清理,但绘制pv-green装置图表时,结果呈现原始数据的累积散点形态,而非预期的时间点均值折线图,核心问题如下:
- 数据合并逻辑错误:
os.walk遍历路径与拼接路径重复,导致文件被多次读取,数据冗余 - 绘图时误用原始全量数据,而非已计算好的时间点均值数据集
- 列合并代码存在冗余操作
修正代码
import pandas as pd import os import matplotlib.pyplot as plt # 数据合并逻辑修正 excel_dir = '/kaggle/input/pv-updated/PV' PV_2122 = pd.DataFrame() # 遍历指定目录下的所有CSV文件,避免重复读取 for filename in os.listdir(excel_dir): if filename.endswith('.csv'): file_path = os.path.join(excel_dir, filename) df = pd.read_csv(file_path) PV_2122 = pd.concat([PV_2122, df], ignore_index=True) # 合并重复列(简化操作) PV_2122['pv_green'] = PV_2122['PV-Green'].combine_first(PV_2122['PV Green']) PV_2122.drop(['PV-Green', 'PV Green'], axis=1, inplace=True) # 计算每个时间点的均值 average_pv_green = PV_2122.groupby('TimeStamp')['pv_green'].mean().reset_index() # 绘制时间点均值折线图 plt.figure(figsize=(10, 6)) plt.plot(average_pv_green['TimeStamp'], average_pv_green['pv_green'], label='PV Green 时间点均值', color='b') plt.xlabel('时间戳') plt.ylabel('PV输出均值') plt.title('PV Green 18个月时间点均值变化') plt.xticks(rotation=90, fontsize=5) plt.legend() plt.tight_layout() # 自动调整布局避免标签被截断 plt.show()
关键修正点说明
- 数据合并:改用
os.listdir直接遍历目标目录,避免os.walk的路径层级问题,同时初始化空DataFrame,避免重复读取初始文件 - 列合并:单次
combine_first即可完成两列数据的合并,简化冗余代码 - 绘图逻辑:使用计算好的
average_pv_green数据集绘制折线图,而非原始全量数据,匹配需求中的时间点均值展示
内容的提问来源于stack exchange,提问作者Joy
相关产品推荐
相关产品推荐

