2016-07-24 62 views
1

我有数据在TB中。因此,当我无法同时加载所有数据时,标准pandasnumpy程序(group-bymeanhistogram等)将不起作用。大数据方法:数据时刻的迭代(块式)计算

我的数据来自pandas.HDFStore.select,它可以返回一个可变块大小块的迭代器。

现在我需要的是如何基于迭代方法计算数据矩的方法。

期望值是直截了当:

n, mean = 0, 0 
for chunk in iterator: 
    nCurrent = len(chunk) 
    meanCurrent = chunk['variable'].mean() 
    mean = (n * mean + nCurrent * meanCurrent)/(n + nCurrent) 
    n += nCurrent 

但是目前还不清楚一般的方法是什么。我怎样才能做到这一点高阶时刻

此外,我有兴趣绘制分布。说我决定去直方图。在开始时不知道分配的限制,很难创建垃圾箱。我是否首先需要遍历整个发行版以获取最小值和最大值,然后创建箱并开始计数?还是有更好的方法?

回答

0

的均值(mean),它可以这样做:

i, cumsum = 0 
for chunk in store.select('key', chunksize=N): 
    cumsum += chunk['variable'].sum() 
    i += len(chunk) 

my_mean = cumsum/i 

作为一般的方法,如果你有一个数据

的TB的工作,我会去上运行Hadoop集群的一个Apache星火