【问题标题】:use pandas to handle massive csv file使用 pandas 处理海量 csv 文件
【发布时间】:2019-01-21 13:42:32
【问题描述】:

读取批量 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')

【问题讨论】:

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


    【解决方案1】:

    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 通过分块在常量内存中处理。

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 2023-03-24
      • 2021-04-24
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多