2013-07-09 13 views
9

come importare i dati excel in un dataframe in python.lettura excel in un frame di dati python a partire dalla riga 5 e intestazioni incluse

Fondamentalmente la cartella di lavoro excel esegue qualche vba all'apertura che aggiorna una tabella pivot e fa altre cose.

Quindi desidero importare i risultati dell'aggiornamento della tabella pivot in un dataframe in python per ulteriori analisi.

import xlrd 

wb = xlrd.open_workbook('C:\Users\cb\Machine_Learning\cMap_Joins.xlsm') 

#sheetnames 
print wb.sheet_names() 

#number of sheets 
print wb.nsheets 

L'aggiornamento e l'apertura del file funzionano correttamente. Ma come faccio a selezionare i dati dal primo foglio da dire la fila 5 compresa l'intestazione verso il basso fino all'ultimo record n.

+0

Grazie Andy. Non sono riuscito a far funzionare pd.ExcelFile con un file .xlsm e non riuscivo a installare openpyxl che dovrebbe funzionare con file .xlsx e .xlsm. Ho appena cambiato il mio VBA per salvare come .xls. tutto ha funzionato quindi tranne la parte skip_rows = 4 ma ho appena rimosso le righe indesiderate in seguito in python con df2 = df [2:] – IcemanBerlin

+0

Oh. In realtà ho appena regolato skip_rows = 4 con skiprows = 4 e anche quella parte ha funzionato. grazie mille. Ottieni una stella d'argento ... oro se il file .xlsm ha funzionato;) – IcemanBerlin

+0

Whoops my bad! Aggiungerà un problema sui file xlsm su github. –

risposta

18

È possibile utilizzare pandi ExcelFile parse metodo per leggere fogli Excel, vedere io docs:

xls = pd.ExcelFile('C:\Users\cb\Machine_Learning\cMap_Joins.xlsm') 

df = xls.parse('Sheet1', skiprows=4, index_col=None, na_values=['NA']) 

skiprows ignorerà le prime 4 righe (cioè partono da indice di riga 4), e diversi other options.

+0

Oltre a questo * pandas.read_excel() * può anche essere utilizzato per leggere i file Excel. È lo stesso di pandas.ExcelFile() – rrawat

+0

@rwt ['pd.read_excel'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html) è preferibile, questa risposta pre -Dato! –

5

La risposta accettata è vecchia (come discusso nei commenti della risposta accettata). Ora l'opzione preferita sta usando pd.read_excel()

Problemi correlati