2014-10-20 12 views
6

Sto tuffandomi nei panda e sperimentando. Per quanto riguarda la lettura dei dati da un file Excel. Mi chiedo quale sia la differenza tra l'utilizzo di ExcelFile in read_excel. Entrambi sembrano funzionare (anche se con una sintassi leggermente diversa, come ci si potrebbe aspettare), e la documentazione supporta entrambi. In entrambi i casi, la documentazione descrive lo stesso metodo: "Legge una tabella Excel in DataFrame" e "Legge una tabella Excel in un DataFrame panda". (documentation for read_excel)ExcelFile vs. read_excel in panda

Sto vedendo le risposte qui su SO che utilizza entrambi, senza affrontare la differenza. Inoltre, una ricerca su Google non ha prodotto un risultato che discute questo problema.

WRT mio test, questi sembrano equivalenti:

path = "test/dummydata.xlsx" 
xl = pd.ExcelFile(path) 
df = xl.parse("dummydata") # sheet name 

e

path = "test/dummydata.xlsx" 
df = pd.io.excel.read_excel(path, sheetname=0) 

a parte il fatto che quest'ultimo mi salva una linea, c'è una differenza tra i due, ed è lì un motivo per usare uno dei due?

Grazie!

+0

non salva nemmeno una linea, perché: df = pd.ExcelFile (percorso) .parse ("dummydata") – MarioTheHedgehog

risposta

2

Credo che la prima implementazione di Excel di panda abbia utilizzato il processo in due fasi, ma poi ha aggiunto il processo in un passaggio denominato read_excel. Probabilmente ha lasciato il primo perché la gente lo stava già utilizzando

8

ExcelFile.parse è più veloce.

Supponiamo che tu stia leggendo i dataframes in un ciclo. Con ExcelFile.parse basta passare l'oggetto Excelfile (xl nel tuo caso). Quindi il foglio excel viene caricato una sola volta e lo usi per ottenere i tuoi dataframe. Nel caso di Read_Excel si passa il percorso anziché l'oggetto Excelfile. Quindi essenzialmente ogni volta che la cartella di lavoro viene caricata di nuovo. Fa un casino se la tua cartella di lavoro ha un sacco di fogli e decine di migliaia di righe.