Python快速数据导入列范围

时间:2017-07-03 16:48:27

标签: python pandas import dask

我正在使用以下代码从500 *.txt个文件中导出3列中的2列(触发器和振幅):

    from glob import glob
    import pandas

    dataFileList = glob( '*.txt' )
    nbDataSamplesFiles = len(dataFileList)
    amplitudes = []
    colnames = ['time','trigger','amplitude']
    for dataFileName in dataFileList :
        #Method4
        data = pandas.read_csv( dataFileName, delim_whitespace=True, skipinitialspace=True, names = colnames ) #Environ 4.5s pour 500 fichiers
        trigger1 = data['trigger'].tolist()
        amplitude1 = data.amplitude.tolist() #another way
        amplitudes.append( amplitude1 ) #list of lists

    amplitudes = np.asarray( amplitudes ) #matrix nbFiles x nbSamples

这项工作大约需要3.5秒。

我需要它更快,有没有办法使用相同或另一个python模块?

我怎样才能实现它?

更新1:使用dask

import dask.dataframe as dd

amplitudes = []
for dataFileName in dataFileList :
    df = dd.read_csv(urlpath = dataFileName, delim_whitespace=True, skipinitialspace=True, names = colnames )
    trigger1 = df.trigger.values
    amplitude1 = df.amplitude.values
    amplitudes.append( amplitude1 ) #list of arrays

我想查看amplitude1的内容:

ipdb> amplitude1[111:121]
*** ValueError: ('Arrays chunk sizes are unknown: %s', (nan,))

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Dask可能是尝试处理CSV的大型集合/目录的好选择 - 浏览Dask Docs - Specific Usecase