更快读取大型csv作为Pandas DataFrame

时间:2019-11-12 23:58:57

标签: python windows pandas dataframe cudf

我正在读取一个csv到Pandas DataFrame中,但是读取大约需要35分钟。 csv约为120 GB。我找到了一个名为cudf的模块,该模块允许使用GPU DataFrame,但仅适用于LinuxWindows是否有类似内容?

chunk_list = []
combined_array = pd.DataFrame()
for chunk in tqdm(pd.read_csv('\\large_array.csv', header = None, 
        low_memory = False, error_bad_lines = False, chunksize = 10000)):
    print(' --- Complete')
    chunk_list.append(chunk)
array = pd.concat(chunk_list)
print(array)

2 个答案:

答案 0 :(得分:1)

您有GPU吗?如果是,请查看BlazingSQL(Python软件包中的GPU SQL引擎)。

在本文中,描述Querying a Terabyte with BlazingSQL。 BlazingSQL支持从CSV中读取。

获取GPU数据框后,将其转换为Pandas数据框

# from cuDF DataFrame to pandas DataFrame
df = gdf.to_pandas()

答案 1 :(得分:0)

如果您确实想将其读入pandas api之类的dataframe中,也可以查看dask-dataframe

要阅读csvs,这将使您的io任务跨多个内核和节点并行进行。与120 GB csv一样,这可能会通过跨节点扩展来减轻内存压力,您也可能也受内存限制。

另一个不错的选择可能是使用arrow