gpt4 book ai didi

python - 使用 Blaze 包查找特定行的有效方法?

转载 作者:行者123 更新时间:2023-11-28 18:28:48 25 4
gpt4 key购买 nike

我有一个包含约 7400 万行的数据表,我使用 blaze 加载它。

from blaze import CSV, data  
csv = CSV('train.csv')
t = data(csv)

它有这些字段:A、B、C、D、E、F、G

由于这是一个如此大的数据框,我如何才能有效地输出符合特定条件的行?例如,我想要 A==4、B==8、E==10 的行。有没有办法对查找进行多任务处理?例如,通过线程或并行编程什么的?

并行编程的意思是,例如,一个线程将尝试从第 1 行到第 100000 行找到匹配行,第二个线程将尝试从第 100001 行到 200000 行找到匹配行,依此类推...

最佳答案

您的选择标准很简单:

t[(t.A == 4) & (t.B == 8) & (t.E == 10)]

以现成的 iris 示例数据集为例:

from blaze import data
from blaze.utils import example
iris = data(example('iris.csv'))

iris[(iris.sepal_length == 7) & (iris.petal_length > 2)]
sepal_length sepal_width petal_length petal_width species
50 7 3.2 4.7 1.4 Iris-versicolor

文档讨论 parallel processing在 Blaze 中。

Note that one can only parallelize over datasets that can be easily split in a non-serial fashion. In particular one can not parallelize computation over a single CSV file. Collections of CSV files and binary storage systems like HDF5 and BColz all support multiprocessing.

显示使用多处理时单个 csv 文件的计时大致相同:

import multiprocessing
pool = multiprocessing.Pool(4)

%timeit -n 1000 compute(iris[(iris.sepal_length > 7) & (iris.petal_length > 2)],
map=pool.map)
1000 loops, best of 1: 12.1 ms per loop

%timeit -n 1000 compute(iris[(iris.sepal_length > 7) & (iris.petal_length > 2)])
1000 loops, best of 1: 11.7 ms per loop

关于python - 使用 Blaze 包查找特定行的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com