for root, dirs, files in os.walk(root_dir): for file in files: if file.endswith('.csv'): # 读取csv文件并将其合并到数据框中 filepath = os.path.join(root, file) csv = pd.read_csv(filepath, encoding='GBK') df = df.append(csv, ignore_index=True)代码怎么加速?举个例子
时间: 2024-03-17 13:45:58 浏览: 121
可以尝试使用并行化的方式来加速这段代码,例如使用Python内置的multiprocessing库来实现多进程处理。
具体实现可以将每个csv文件的读取和合并操作封装成一个函数,然后使用multiprocessing.Pool来创建一个进程池,将这些函数分发到不同的进程中执行,最后将结果合并即可。
示例代码如下:
```python
import os
import pandas as pd
from multiprocessing import Pool
def read_csv(filepath):
return pd.read_csv(filepath, encoding='GBK')
def merge_csv(root_dir):
csv_files = []
for root, dirs, files in os.walk(root_dir):
for file in files:
if file.endswith('.csv'):
csv_files.append(os.path.join(root, file))
with Pool(processes=os.cpu_count()) as pool:
csv_data = pool.map(read_csv, csv_files)
return pd.concat(csv_data, ignore_index=True)
```
这样就能大大提高代码的运行效率。另外,还可以尝试对数据进行分块处理,每次只处理一部分数据,这样可以避免内存占用过大导致程序崩溃的问题。
阅读全文