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

光伏系统时序CSV数据拼接异常:DataFrame维度远小于预期

问题分析与修复方案

核心问题排查

你的代码存在两个关键错误,导致拼接后的数据量远小于预期:

  1. 循环逻辑错误
    • 内层循环中,name始终被赋值为第一个文件的路径,完全没有遍历目录下的其他CSV文件
    • if name.endswith('.csv')语句缩进错误,不在内层循环范围内,只会处理最后一次赋值的(重复的)文件路径
  2. 重复读取同一文件
    由于上述逻辑错误,代码一直在重复读取1 Apr 2021.csv这一个文件,而非遍历所有每日数据文件

修复后的代码

import pandas as pd
import os

excel_dir = '/kaggle/input/pv-output-1/PV 2122'
PV_2122 = pd.DataFrame()  # 初始化空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)

# 检查拼接后的数据形状(注意shape是属性,不是方法,不需要加括号)
print(PV_2122.shape)

后续分组计算与绘图步骤

1. 数据预处理

先将timestamp转换为datetime格式,确保时序分析的正确性:

PV_2122['timestamp'] = pd.to_datetime(PV_2122['timestamp'])

2. 分组计算平均发电量

假设光伏系统列名为pv_system,发电量列名为power,替换为你的实际列名即可:

avg_power = PV_2122.groupby(['pv_system', 'timestamp'])['power'].mean().reset_index()

3. 绘制时序变化图表

import matplotlib.pyplot as plt

# 按光伏系统拆分绘制曲线
for system in avg_power['pv_system'].unique():
    system_data = avg_power[avg_power['pv_system'] == system]
    plt.plot(system_data['timestamp'], system_data['power'], label=f'光伏系统{system}')

plt.xlabel('时间')
plt.ylabel('平均发电量')
plt.title('各光伏系统发电量时序变化')
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者Joy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:27:18