2016-07-24 9 views
1

私はテラバイト単位のデータを持っています。したがって、標準の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)それはこのように行うことができます:あなたはテラバイトのデータで作業する必要がある場合、私はHadoopのクラスタ上のApacheスパークのために行くだろう一般アプローチとして

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

my_mean = cumsum/i 

関連する問題