首页 > 解决方案 > 将多个 csv 加载到数据框中的最快方法

问题描述

我有一个包含许多 csv(100+)的文件夹,每个 csv 包含许多行。

我正在使用以下代码将 csv 加载到数据框中,但这需要相当长的时间。加载这些数据的最快方法是什么?

import os
import glob
import sqlite3
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

path = '/Users/DATA'
all_files = glob.glob(os.path.join(path,'*.csv'))

np_array_list = []
for file_ in all_files:
    df = pd.read_csv(file_, index_col = None, header = 0, low_memory = False,
                     usecols = [1, 6, 7, 8, 9, 10, 11, 14, 16, 17, 22, 23])
    np_array_list.append(df.as_matrix())

comb_np_array = np.vstack(np_array_list)
big_data = pd.DataFrame(comb_np_array)

标签: pythonpandasperformancecsvnumpy

解决方案


我建议使用生成器表达式来避免将所有数据两次加载到内存中。

dfs = (pd.read_csv(file_, **kwargs) for file_ in all_files)
pd.concat(dfs)

您也可以尝试将engine='c'参数传递给阅读器以加快速度。


推荐阅读