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

Python 使用Blaze包查找特定行的有效方法?,python,multithreading,pandas,parallel-processing,blaze,Python,Multithreading,Pandas,Parallel Processing,Blaze,我有一个数据表,有大约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行查找匹配行,第二个线程将

我有一个数据表,有大约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
医生们热烈讨论

请注意,只能在可以以非串行方式轻松拆分的数据集上进行并行化。特别是不能在单个CSV文件上并行计算。CSV文件集合和二进制存储系统(如HDF5和BColz)都支持多处理

显示使用多处理时单个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
你有没有看过《我不知道火焰》,但这里的答案似乎指向了你想要的方向