Sto attualmente utilizzando pandas per leggere un file di Excel e presentare i nomi dei fogli all'utente, in modo da poter select quale foglio vuole utilizzare. Il problema è che i file sono davvero grandi (70 colonne x 65k righe), che richiedono fino a 14s per caricare su un notebook (gli stessi dati in un file CSV stanno prendendo 3s).
Il mio codice in panda è così:
xls = pandas.ExcelFile(path) sheets = xls.sheet_names
Ho provato prima xlrd, ma ho ottenuto risultati simili. Questo è stato il mio codice con xlrd:
xls = xlrd.open_workbook(path) sheets = xls.sheet_names
Quindi, qualcuno può suggerire un modo più veloce per recuperare i nomi dei fogli da un file Excel rispetto a leggere l'integer file?
è ansible utilizzare la libreria xlrd e aprire la cartella di lavoro con la bandiera "on_demand = True", in modo che i fogli non verranno caricati automaticamente.
Quindi è ansible recuperare i nomi dei fogli in modo analogo a quelli dei panda:
import xlrd xls = xlrd.open_workbook(r'<path_to_your_excel_file>', on_demand=True) print xls.sheet_names() # <- remeber: xlrd sheet_names is a function, not a property
Poiché i pandas
usano xlrd
per la lettura di fogli di Excel e passa tutti gli argomenti della parola chiave da pandas.ExcelFile
a xlrd.open_workbook
, pd.ExcelFile
accetta anche la bandiera on_demand
. Pertanto, non è necessario caricare xlrd
separatamente:
xls = pandas.ExcelFile(path, on_demand = True) sheets = xls.sheet_names