2016-07-09 36 views
8

Quando si esegue il seguente codice, il risultato di dask.dataframe.head() dipende nPartitions:le npartizioni influenzano il risultato di dask.dataframe.head()?

import dask.dataframe as dd 
import pandas as pd 
df = pd.DataFrame({'A': [1,2,3], 'B': [2,3,4]}) 
ddf = dd.from_pandas(df, npartitions = 3) 
print(ddf.head()) 

Questo produce il seguente risultato:

A B 
0 1 2 

Tuttavia, quando ho impostato a 1 nPartitions o 2, ottengo il risultato atteso:

A B 
0 1 2 
1 2 3 
2 3 4 

sembra essere importante, che nPartition è inferiore alla lunghezza del dataframe. È questo? Devo sempre controllare la dimensione dei miei dati prima di convertirli in una cornice dask?

+0

Tutti i dati (righe) sono ancora lì, anche se non saranno mostrati completamente da '.head()', '.tail()', ecc. Ma se lo salvate usando 'to_hdf()', 'to_csv()', ecc. allora verranno scritte __all__ righe. – MaxU

risposta

4

Secondo la documentazione dd.head() controlla solo la prima partizione:

head(n=5, compute=True)

prime n righe del set di dati

Caveat, questo controlla solo le prime n righe della prima partizione.

Quindi la risposta è sì, dd.head() è influenzato dal numero di partizioni presenti nel dataframe del tuo dask.

Tuttavia il numero di righe nella prima partizione dovrebbe essere più grande del numero di righe di solito si desidera visualizzare quando si utilizza dd.head() — altrimenti utilizzando dask non dovrebbe pagare. L'unico caso comune quando questo potrebbe non essere vero è quando si prendono le prime n righe/elementi dopo il filtraggio, come spiegato in this question.

+0

Sì, l'esame di un set di dati filtrato era la situazione, in cui ero un po 'sorpreso del risultato della testa;) Grazie per aver indicato la documentazione. –