использовать панд для обработки массивного CSV-файла - PullRequest
0 голосов
/ 21 января 2019

чтение массива CSV_FILE, у меня нет проблем, если в файле 5 миллионов строк, но проблема в том, что при попытке запустить этот код в массивном файле около 300 миллионов строк, но он не работает со мной,Есть ли способ улучшить код или функцию чанка, которые увеличивают время отклика

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 голосов
/ 21 января 2019

Одно решение предлагает dask.dataframe, который разбивается внутри:

import dask.dataframe as dd

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

Это не проверено. Я предлагаю вам прочитать документацию , чтобы ознакомиться с синтаксисом. Важно понимать, что dd.read_csv не читает весь файл в памяти, и никакие операции не обрабатываются до тех пор, пока не будет вызван compute, и в этот момент dask обрабатывает в постоянной памяти посредством чанкинга.

...