在python中加速读取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在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文件读取操作
提前谢谢我想你最好的选择是 然后使用多处理读取所有块。您有:
我认为你最好的选择是 然后使用多处理读取所有块。您有:
我们需要更多信息,例如,列的类型是什么,您是否有重复的字符串数据,它们是否正确键入,例如,没有混合的数字和非数字数据,等等。向我们展示一个示例会有所帮助。我认为您的最佳选择是,然后使用多处理读取所有数据块:您好,我已使用示例文件数据进行了更新,实际上,它是一种混合类型。我们需要更多信息,例如,列是什么类型的,您是否有重复的字符串数据,它们是否正确键入,例如,没有混合的数字和非数字数据,等等。向我们展示一个示例会有所帮助。我认为您的最佳选择是,然后使用多处理读取所有数据块:嗨,我用一个示例文件数据进行了更新,实际上它是混合型的。
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()