使用CSV中的数据计算集成值

2024-06-17 13:19:53 发布

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

我正在从多个CSV文件读取数据。在下面的示例中,我们只使用一个文件。CSV包含两列数据,“EFT”和“CTR”。读入数据后,我尝试使用CTR值计算积分值,并将这些计算的积分值存储在名为ITCER的新列中。如果我分析大约10000个数据点,整个过程大约需要15秒。理想情况下,我将分析来自8个不同文件的25000个数据点。因此,这确实需要一点时间。有人对如何修改代码来计算ITCER(集成部分)以使其运行更快有什么建议吗。在

代码:

import pandas as pd
from pandas import *
#### User input; run numbers - will be fed into the program as part of the file name..
files = [20135501]

#create dataframes to store data temporarily based on EFTs

ITCER = DataFrame()
b = []

####  process data path
shorts = ['Python/CSV/Run Files/' + str(i) + '.csv' for i in files]

#### reads process data
ferms = [pd.read_csv(s) for s in shorts]
csvDFs = [(ferm).apply(pd.Series.interpolate) for ferm in ferms]

for i in range(len(files)):    
#Calculations
    for j in range(len(ferms[i])):
        if j == 0:
            c = ferms[i].irow(j)['CTR [mM/h]']
        if j > 0:
            g = ferms[i].irow(j)['CTR [mM/h]']
            h = ferms[i].irow(j-1)['CTR [mM/h]']
            c = c + (g+h)/120000
        b.append(c)    
        itcer = ITCER.append(b)         
    eft = csvDFs[i]['EFT (h)']

#insert calculations
    csvDFs[i]['EFT'] = eft
    csvDFs[i]['ITCER'] = itcer

#keep specific columns and then save file in folder
    csvDFs[i] = csvDFs[i][['EFT','ITCER']]
    csvDFs[i].to_csv('Python/CSV/Test/'+ str(files[i])+'.csv', index = False)

Tags: 文件csv数据infordatafilespd