python 使用pandas 讀取較大csv文件的加速技巧

問題背景

基於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

以上方案在文件行數較大的情況下(數十萬行以上),親測提速明顯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章