我有一个 8gb 的 csv 文件,我无法运行代码,因为它显示内存错误。
file = "./data.csv"
df = pd.read_csv(file, sep="/", header=0, dtype=str)
我想使用 python 将文件拆分为 8 个小文件(“按 id 排序”)。最后,有一个循环,以便输出文件将具有所有 8 个文件的输出。
或者我想尝试并行计算。主要目标是在 python pandas 中处理 8gb 数据。谢谢。
我的 csv 文件包含大量以“/”作为逗号分隔符的数据,
id venue time code value ......
AAA Paris 28/05/2016 09:10 PAR 45 ......
111 Budapest 14/08/2016 19:00 BUD 62 ......
AAA Tokyo 05/11/2016 23:20 TYO 56 ......
111 LA 12/12/2016 05:55 LAX 05 ......
111 New York 08/01/2016 04:25 NYC 14 ......
AAA Sydney 04/05/2016 21:40 SYD 2 ......
ABX HongKong 28/03/2016 17:10 HKG 5 ......
ABX London 25/07/2016 13:02 LON 22 ......
AAA Dubai 01/04/2016 18:45 DXB 19 ......
.
.
.
.
最佳答案
import numpy as np
from multiprocessing import Pool
def processor(df):
# Some work
df.sort_values('id', inplace=True)
return df
size = 8
df_split = np.array_split(df, size)
cores = 8
pool = Pool(cores)
for n, frame in enumerate(pool.imap(processor, df_split), start=1):
frame.to_csv('{}'.format(n))
pool.close()
pool.join()
关于python - 如何使用循环或并行计算将大数据输入python pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946141/