从csv fi读取数据时查找列表的累积和

2024-06-28 20:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到cumulative sum of the list

我正在阅读30个类似的csv文件位于文件夹deg\u pvsyst\u运行。文件名为:

 "Energy_Base_Year00_-0.6%modqual.csv",
 "Energy_Base_Year01_-0.3%modqual.csv",  ......,  
 "Energy_Base_Year30_-8.4%modqual.csv

““

我正在读取上述每个csv文件中的EïGrid列(跳过第0-9、11和12行,其中包含标题信息)。请建议

a)如果有一种较短/更简单的方法可以在跳过行的同时读取csv,而不是我所做的(skiprows=[0,1,2,3,4,5,6,7,8,9,11,12]

b)如果使用itertools方法或cumsum函数将是计算称为Cumulative_Annual_Deg的列表的累积和的更好选择

代码:

import os, csv, re
import pandas as pd
from itertools import accumulate

Year, Degradation, Mean_EP, Annual_Deg, Cumulative_Annual_Deg =[],[],[],[],[]


cwd = os.getcwd()
csv_files = [f for f in os.listdir(cwd + '\\' + 'deg_pvsyst_runs') if f.endswith('.csv')]

for i,j in enumerate(csv_files):
    df = pd.read_csv(os.getcwd() + "\\deg_pvsyst_runs\\" + j, skiprows=[0,1,2,3,4,5,6,7,8,9,11,12])
    Mean_EP.append(df['E_Grid'].sum()/10**6)
    Annual_Deg.append((Mean_EP[i-1] - Mean_EP[i])/Mean_EP[i-1])
    Cumulative_Annual_Deg.append(list(accumulate(Annual_Deg[i])))

错误:

Cumulative_Annual_Deg.append(list(accumulate(Annual_Deg[i])))

   TypeError: 'numpy.float64' object is not iterable

编辑:

Annual_Deg是由csv文件之间的增量(%change)计算组成的列表。我想计算Cumulative_Annual_Deg来计算累积和。你知道吗

所需输出:

  • Annual_Mean_EP = [9559.88, 9533.31, 9506.67,...,8731.85]

    Annual_Deg = [0, 0.00278, 0.00279,...,0.00297]

    Cumulative_Annual_Deg' = [0, 0.00278, 0.00557, ..., 0.08661]

或屏幕截图

enter image description here


Tags: 文件csvbaseosmeanlistenergyep
1条回答
网友
1楼 · 发布于 2024-06-28 20:34:07

可以在计算列表之后计算累积和。所以累积线应该被带到for循环之外。 替换下一行

    Cumulative_Annual_Deg.append(list(accumulate(Annual_Deg[i])))

Cumulative_Annual_Deg = list(accumulate(Annual_Deg))

您可以在https://docs.python.org/3/library/itertools.html#itertool-functions上找到有关itertools的更多信息

相关问题 更多 >