繁体   English   中英

如何更快地将多个 csv 文件转换为数组?

[英]How to convert multiple csv files into array faster?

我有一个包含 9000 个 CSV 文件的文件夹。 每个文件有 5000 行和 12 列。 出于深度学习训练的目的,我需要将整个文件(所有文件)转换为形状数组(9000,5000,12)。 我正在使用此代码进行工作:


path=mypath+'//'+li[0]+'.csv' #li is a list containing the filenames, this is for a filtering purpose, please ignore this  
df=pd.read_csv(path)
a=np.array(df)

path=mypath+'//'+li[1]+'.csv'   
df=pd.read_csv(path)
arr=np.array(df)
a=np.stack((a,arr))
for filename in li[2:]:
    path=mypath+'//'+filename+'.csv'   
    df=pd.read_csv(path) 
    arr=np.array(df)
    if(arr.shape[0]!=4999):
        
        continue
    
    a=np.append(a,[arr],axis=0)

因此,基本上,我将每个 CSV 文件转换为数据帧,然后将数据帧转换为数组。 最后将 arrays 堆叠在一起。

这个过程花费了太多时间。 1 小时内仅转换了 2000 个文件。 有没有更快的方法可以达到我的目的?

抱歉我的编码格式不好,我只是在粗略地做,花了太多时间

终于解决了问题。 感谢@0 0,我已经预先分配了数组,只用了 3 分钟就完成了我的工作!

os.chdir("E://2-1//reserach//tanvir sir//datasets//ECGDataDenoised//filter//")
from glob import glob
import numpy as np
strain = glob("*.csv")



arr=np.zeros(( 9061,4999,12  ))
i=0
for filename in strain:
      
    df=pd.read_csv(filename) 
    
    arr[i]=df.values
    i=i+1

数组的最终形状是 (9061,4999,12),如我所愿!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM