在python中加速读取csv

在python中加速读取csv,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试使用Pandas'read_csv'方法解析一个大约5000万行的巨大csv文件 下面是我正在使用的代码片段: df_chunk=pd.read_csvdb_export_文件,分隔符=“~!”,engine='python',header=None,keep_default_na=False,na_values=[],chunksize=10**6,iterator=True 在使用pd.concat方法之后,我得到了用于进一步处理的整套数据帧 相反,一切正常,从该csv文件读取操作

我正在尝试使用Pandas'read_csv'方法解析一个大约5000万行的巨大csv文件

下面是我正在使用的代码片段:

df_chunk=pd.read_csvdb_export_文件,分隔符=“~!”,engine='python',header=None,keep_default_na=False,na_values=[],chunksize=10**6,iterator=True

在使用pd.concat方法之后,我得到了用于进一步处理的整套数据帧

相反,一切正常,从该csv文件读取操作几乎需要6分钟来创建数据帧

我的问题是,是否有其他方法可以使用相同的模块和方法加快此过程

下面是以csv文件形式显示的示例数据

155487~-64721487465~!A1_NUM~!1 155487~!-45875722734~!A32_ENG~!这是一个很好的设施 458448~!-14588001153~!T12_定时~!23-02-2015 14:50:30 458448~!-10741214586~!Q2_56


提前谢谢

我想你最好的选择是

然后使用多处理读取所有块。您有:


我认为你最好的选择是

然后使用多处理读取所有块。您有:


我们需要更多信息,例如,列的类型是什么,您是否有重复的字符串数据,它们是否正确键入,例如,没有混合的数字和非数字数据,等等。向我们展示一个示例会有所帮助。我认为您的最佳选择是,然后使用多处理读取所有数据块:您好,我已使用示例文件数据进行了更新,实际上,它是一种混合类型。我们需要更多信息,例如,列是什么类型的,您是否有重复的字符串数据,它们是否正确键入,例如,没有混合的数字和非数字数据,等等。向我们展示一个示例会有所帮助。我认为您的最佳选择是,然后使用多处理读取所有数据块:嗨,我用一个示例文件数据进行了更新,实际上它是混合型的。
split -l LINES_PER_FILE YOUR.CSV OUTPUT_NAMES
import os
import pandas as pd 
from multiprocessing import Pool

# wrap your csv importer in a function that can be mapped
def read_csv(filename):
    'converts a filename to a pandas dataframe'
    return pd.read_csv(filename)


def main():
    # set up your pool
    pool = Pool(processes=8) # or whatever your hardware can support

    # get a list of file names
    files = os.listdir('.')
    file_list = [filename for filename in files if filename.split('.')[1]=='csv']

    # have your pool map the file names to dataframes
    df_list = pool.map(read_csv, file_list)

    # reduce the list of dataframes to a single dataframe
    combined_df = pd.concat(df_list, ignore_index=True)

if __name__ == '__main__':
    main()