python - 从 csv 文件读取数据时查找列表的累积和

标签 python pandas list csv cumsum

我想找到列表的累计总和

我正在阅读位于 deg_pvsyst_runs 文件夹中的 30 个类似的 csv 文件。文件命名为:

 "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 文件之间的增量(百分比变化)计算组成的列表。我想计算 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

最佳答案

列表计算完成后即可计算累计总和。因此累加行应该放在 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 的更多信息

关于python - 从 csv 文件读取数据时查找列表的累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57551160/

相关文章:

列表理解 : Even numbers from 0 to x

python - 如何在 Python 中提取和使用 JSON 数据

python - CP 求解器可以在特定点初始化吗?

python - 使用 PySpark 迭代 SQL.Row 列表

python - 如果表 beautifulsoup 和 pandas 中不存在类,则停止抓取 url

python - 使用组结果转换 pandas DataFrame

python - 仅在正 X 轴上绘制水平线

python - 创建位列表?

python - 按类型有效地汇总项目

c - 在C中写入结构双向链表中的字符串