基于python将较大的文本文件读取为dataframe时(文本文件可能是csv或者xlsx类型)。直接用pandas对整个文件进行读取的话,会比较耗时。
这里提供一个简单的加速方案:分批读取。

需要首先将文件转为可以分批读取的数据类型:csv(’,‘分隔)或者tsv(’\t’分隔)。
然后基于 pandas 的 read_csv函数的 chunksize参数实现分批读取(此参数用于设定每批读入多少行数据)。一般设置为一个稍大的整数即可明显提速。
封装成以下的函数,可以直接调用:
说明:此函数针对csv文件,如果文件不是基于逗号分隔,在read_csv函数中设置对应的sep参数(分隔符)。

def read_single_csv(input_path):
    import pandas as pd
    df_chunk=pd.read_csv(input_path,chunksize=1000)
    res_chunk=[]
    for chunk in df_chunk:
        res_chunk.append(chunk)
    res_df=pd.concat(res_chunk)
    return res_df

以上方案在文件行数较大的情况下(数十万行以上),亲测提速明显。

问题背景基于python将较大的文本文件读取为dataframe时(文本文件可能是csv或者xlsx类型)。直接用pandas对整个文件进行读取的话,会比较耗时。这里提供一个简单的加速方案:分批读取。实现方案需要首先将文件转为可以分批读取的数据类型:csv(’,‘分隔)或者tsv(’\t’分隔)。然后基于 pandas 的 read_csv函数的 chunksize参数实现分批读取(此参数用于设定每批读入多少行数据)。一般设置为一个稍大的整数即可明显提速。封装成以下的函数,可以直接调用:def print(chunk.tail(10)) 以上这篇python读取几个G的csv文件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:pythoncsv文件时指定行为表头或无表头的方法Python把对应格 首先使用office打不开 然后在python使用基本的pandas.read_csv打开文件时:MemoryError 最后查阅read_csv文档发现可以分块读取。 read_csv中有个参数chunksize,通过指定一个chunksize分块大小来读取文件,返回的是一个可迭代的对象TextFileReader,IO pandas的chunk分块读取 read_chunks = pd.read_csv(csv_path, encoding='utf-8', iterator=True, chunksize=65535) 参数说明: 问题描述: 网上建议使用pandas包的DataFrame处理方便高效,比csv包好。但执行时非常慢,1600万行记录(1.6GB),跑了5小时都没结束(4列置空,1列Hash) # 需要hash的示例代码 for field in field_list: for i in range(0, len(csv_df.index)): if not pd.isnull(csv_df[field][i]):
第一:pandas.read_csv读取本地csv文件为数据框形式 data=pd.read_csv('G:\data_operation\python_book\chapter5\\sales.csv') 第二:如果存在日期格式数据,利用pandas.to_datatime()改变类型 data.iloc[:,1]=pd.to_datetime(data.iloc[:,1]) 注意:=号,这样在原始的数据框中,改变了列的类型 第三:查看列类型 print(data.dtypes) 第四:方法一:保存至MYSQL【缺点耗时长】 利用MYSQLdb库,封装成一个类,实现创建表,添加数据的操作
由于客户提供的是excel文件,在使用时期望使用csv文件格式,且对某些字段内容需要做一些处理,如从某个字段中固定的几位抽取出来,独立作为一个字段等,下面记录下使用acaconda处理的过程; import pandas df = pandas.read_excel("/***/***.xlsx") df.columns = [内部为你给你的excel每一列自定义的名称](比如我给我的excel自定义列表为: ["url","productName","***",。。。,"***"]) (下面开始你自己的表演,对每一列内容进行你自己需要的处理) df["url"] = df["url"].