如何使用pandas加速加载数据?

2024-04-23 20:11:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用熊猫和朱庇特笔记本。我正在读取一个700MB的CSV文件,加载需要69秒。出于测试目的,这是可以接受的,因为我只需要加载它一次,并且它在notebook实例期间都会留在内存中。你知道吗

pd.read_csv(path, names=['Date','Time','Seconds','Counts','Pressure'], dtype='unicode')

我尝试使用与python可执行文件相同的代码,这使得测试非常困难,因为每次我对程序进行更改时,都需要等待69秒才能加载数据。我能做些什么来加速读取CSV文件?你知道吗


Tags: 文件csvpath实例内存目的readdate
3条回答

您可以使用拼花格式,使用

df.to_parquet('file.parquet')
pd.read_parquet('file.parquet')

您需要安装fastparquetpyarrow包。你知道吗

请注意,并非所有Python类型都能理解,因此您需要数据具有标准类型,例如numpy dtypes。你知道吗

我在这里看到了多种选择:

  • 如果测试足以使用整个数据的一部分,则可以在pd.read_csv中指定nrows参数。你知道吗
  • 为要分析的所有列指定dtype参数和/或通过parse_dates参数指定要分析的日期。你知道吗
  • 将csv文件转换成parquetfeather格式一次,以后加载这些格式会更快—正如前面指出的,它们都需要pyarrow安装。你知道吗
  • 我个人从未使用过Dask模块,因此我不能说。你知道吗

为此,您可以考虑使用daskmodule

import dask.dataframe
data = dask.dataframe.read_csv("your.csv")

Dask比普通的Pandas read_csv快得多,因为它使用并行处理,并且不将整个数据加载到内存中。这article from Eric Brown是一个很好的入门到它的潜在用途。你知道吗

相关问题 更多 >