2016-07-24 67 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星火