​如何提高 python pd.read_csv的效率?

我用python pd.read_csv读取一个目录里的几百个不是很大的文件,进行循环计算,不写文件,要重复读好多次进行多次计算,很浪费时间,有什么方法只读一次嘛?比如把所有文件都保留在内存?

​如何提高 python pd.read_csv的效率?

for i in range(1,200,1):

for files in os.listdir(path):

file = path+files

df = pd.read_csv(file,encoding="utf_8_sig")

然后使用i 计算所有文件

1. 指定数据类型:`pd.read_csv`函数的`dtype`参数允许你指定每列的数据类型,避免了pandas自动识别数据类型所消耗的时间。如果你知道每列的数据类型,可以使用`dtype`参数明确地指定它们。

2. 使用更小的数据类型:Pandas支持一些较小的数据类型,如`int8`和`float16`,你可以在读取时使用这些较小的数据类型,以减少内存占用和提高读取速度。例如,`pd.read_csv('file.csv', dtype={'column_name': 'int16'})`。

3. 使用`read_csv`函数的`chunksize`参数:`chunksize`参数允许你一次读取一部分数据,这样可以减少内存消耗。你可以在循环中使用`pd.concat`或`pd.append`将所有分块数据合并成一个数据帧。

4. 选择性读取列:如果只需要某些列,可以使用`usecols`参数指定所需列的名称或索引,以减少内存消耗和提高读取速度。

5. 使用多进程或多线程:通过使用多进程或多线程可以同时读取和处理多个文件,提高整体效率。Python的`concurrent.futures`模块提供了方便的并发功能。

6. 使用`dask`库:`dask`是一个灵活的延迟计算库,它可以处理大型数据集并自动将其切分成多个分块。它对`pandas`的API进行了扩展,可以无缝地替代`pd.read_csv`函数,并在处理大型数据集时具有更高的性能和可伸缩性。

7. 将数据预处理保存为二进制文件:如果你需要重复读取相同的文件进行多次计算,可以将数据预处理保存为二进制文件(如`.npy`或`.pkl`),然后使用`np.load`或`pd.read_pickle`进行读取,这样可以节省读取和预处理数据的时间。
温馨提示:答案为网友推荐,仅供参考