2016-07-24 13 views
1

Ich habe Daten in den Terabyte. Daher funktionieren die Standards pandas und numpy Prozeduren (group-by, mean, histogram usw.) nicht, wenn ich nicht alle Daten gleichzeitig laden kann.Big-Data-Methoden: Iterative (Chunk-weise) Berechnung von Daten Momenten

Meine Daten stammen von pandas.HDFStore.select, die einen Iterator mit Chunks variabler Chunk-Größe zurückgeben können.

Alles, was ich brauche, sind Methoden zur Berechnung von Momenten der Daten auf der Grundlage iterativer Ansätze.

Der erwartete Wert ist straight-forward:

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

aber es ist klar, nicht das, was der allgemeine Ansatz ist. Wie würde ich das für Momente höherer Ordnung tun?

Auch ich bin daran interessiert, die Verteilung zu planen. Sagen wir, ich entscheide mich für ein Histogramm. Ohne die Grenzen der Verteilung zu Beginn zu kennen, ist es schwierig, die Behälter zu erstellen. Muss ich zuerst einmal durch die gesamte Distribution iterieren, um die Min- und Max-Werte zu erhalten, und dann Bins erstellen und mit dem Zählen beginnen? Oder gibt es einen besseren Ansatz?

Antwort

0

für die durchschnittliche (mean) kann wie folgt geschehen:

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

my_mean = cumsum/i 

Als allgemeinen Ansatz i für einen Apache Funken auf Hadoop Cluster gehen würde, wenn Sie

mit Terabytes von Daten arbeiten