2017-10-18 3 views
1

Ist dies eine gültige Art der Beladung Teilmengen eines dask Datenrahmen in dem Speicher:Subsetting Dask Datenrahmen

while i < len_df: 
    j = i + batch_size 
    if j > len_df: 
     j = len_df 
    subset = df.loc[i:j,'source_country_codes'].compute() 

ich irgendwo gelesen, dass dies nicht richtig sein kann, weil, wie dask ordnet Zahlen Index, weil es die größere Teilung Datenrahmen in kleinere Pandas dfs. Auch ich glaube nicht, dass dask Datenrahmen ein iloc Attribut hat. Ich verwende Version 0.15.2

In Bezug auf Anwendungsfälle wäre dies eine Möglichkeit zum Laden von Datensätzen zu Deep Learning (Keras).

Antwort

1

Wenn Ihr Dataset bekannte Divisionen hat, dann funktioniert das vielleicht, aber ich empfehle nur eine Partition auf einmal zu berechnen.

for part in df.to_delayed(): 
    subset = part.compute() 

können Sie in etwa die Größe steuern, indem sie vorher repartitioning

for part in df.repartition(npartitions=100).to_delayed(): 
    subset = part.compute() 

Dies ist nicht genau die gleiche, weil es nicht eine feste Anzahl von Zeilen in jeder Partition garantiert, aber das Garantie könnte ziemlich teuer sein, abhängig davon, wie die Daten erhalten werden.

+0

Aber die letztere Methode wird garantieren, dass ich den gesamten Datensatz richtig durchlaufen werde? Ich sollte auch erwähnen, dass ich dies früher getan habe: "df = dd.from_pandas (df, 16)". Wird es einen Konflikt verursachen oder einfach eine andere Partition machen? –

+1

Ja, dies beinhaltet den gesamten Datensatz. Sie können die Partition sicher partitionieren. Oder Sie können from_pandas mit einer anderen Anzahl von Partitionen aufrufen. Hier sollte alles funktionieren. – MRocklin

Verwandte Themen