python - 如何使用循环或并行计算将大数据输入python pandas?

标签 python loops csv pandas parallel-processing

我有一个 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/

相关文章:

python - 从列表中获取匹配的字符串并创建新列表

python - 如何在保持结构的同时写入预先存在的 xml 文件?

python - 为什么我的 Ubuntu 20.04 DEV 机器上安装了多个 Python 版本?

java - 如何退出 Java 中的 do while 循环?

java - Opencsv将所有数据存储在单列中

csv - 根据Rust中的文件名读取CSV或压缩CSV

Python内存表数据结构分析(dict、list、combo)

python - 在python中动态将dict转换为类

python - 在 Android (Kotlin) 中运行 tflite 分类器

performance - 在Haskell中执行恒定空间嵌套循环的正确方法是什么?