使用熊猫处理海量的csv文件

时间:2019-01-21 13:42:32

标签: python python-3.x pandas pandas-groupby chunking

  

读取批量CSV_FILE,如果文件有500万,我没有问题   行数,但是如果尝试在大量代码上运行此代码则出现问题   文件大约3亿行,但对我不起作用,是   有什么方法可以增强代码或块功能,从而增强   响应时间

import pandas as pd
import timeit
df = pd.read_csv('/home/mahmoudod/Desktop/to_dict/text1.txt'
                ,dtype='unicode'
                ,index_col=False
                ,error_bad_lines=False
                ,sep = ';'
                ,low_memory = False
                ,names =['DATE'
                ,'IMSI'
                ,'WEBSITE'
                ,'LINKUP'
                ,'LINKDOWN'
                ,'COUNT'
                ,'CONNECTION']

                 )
#df.DATE = pd.to_datetime(df.DATE)
group = df.groupby(['IMSI','WEBSITE']).agg({'DATE':[min,max]
    ,'LINKUP':'sum'
    , 'LINKDOWN':'sum'
    , 'COUNT':'max'
    ,'CONNECTION':'sum'
            })
group.to_csv('/home/mahmoudod/Desktop/to_dict/output.txt')

1 个答案:

答案 0 :(得分:2)

dask.dataframe提供了一种内部解决方案:

import dask.dataframe as dd

df = dd.read_csv(...)
group = df.groupby(...).aggregate({...}).compute()
group.to_csv('output.txt')

这未经测试。建议您阅读documentation来熟悉语法。需要了解的重要一点是,dd.read_csv不会读取内存中的整个文件,并且在调用compute之前不会处理任何操作,此时dask会通过分块在常量内存中进行处理。