You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

光伏数据可视化异常:合并数据后图表呈累积而非均值形态

问题排查与解决方案

数据背景

  • 18个月内每日对3组光伏装置每2分钟采集输出数据
  • 单份CSV文件包含1列TimeStamp、3列对应装置的PV输出数据

需求目标

  • 计算各装置每个时间点的18个月平均值(同一时间点的所有数据求和后除以天数)
  • 生成各装置PV输出随时间变化的折线图

现存问题

已完成数据合并与重复列清理,但绘制pv-green装置图表时,结果呈现原始数据的累积散点形态,而非预期的时间点均值折线图,核心问题如下:

  1. 数据合并逻辑错误:os.walk遍历路径与拼接路径重复,导致文件被多次读取,数据冗余
  2. 绘图时误用原始全量数据,而非已计算好的时间点均值数据集
  3. 列合并代码存在冗余操作

修正代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:04:51