tutorial read leer excelfile data column python excel pandas dataframe

leer - python pandas read excel column



Usar Pandas para pd.read_excel() para varias hojas de cálculo del mismo libro de trabajo (4)

Tengo un gran archivo de hoja de cálculo (.xlsx) que estoy procesando usando Python pandas. Sucede que necesito datos de dos pestañas en ese archivo grande. Una de las pestañas tiene una tonelada de datos y la otra solo unas pocas celdas cuadradas.

Cuando uso pd.read_excel() en cualquier hoja de cálculo, me parece que todo el archivo está cargado (no solo la hoja de trabajo que me interesa). Entonces, cuando uso el método dos veces (una para cada hoja), efectivamente tengo que sufrir todo el libro de trabajo que se lee dos veces (aunque solo estamos usando la hoja especificada).

¿Lo estoy usando mal o solo está limitado de esta manera?

¡Gracias!


Hay 3 opciones:

  1. Lea la primera hoja directamente en el marco de datos
  2. Lea el archivo de Excel y obtenga una lista de hojas. Luego elige y carga las hojas.
  3. Lea todas las hojas y guárdelas en un diccionario.

Muestra de código:

import pandas as pd df = pd.read_excel(''excel_file_path.xls'') # this will read the first sheet into df xls = pd.ExcelFile(''excel_file_path.xls'') # Now you can list all sheets in the file xls.sheet_names # [''house'', ''house_extra'', ...] # to read just one sheet to dataframe: df = pd.read_excel(file_name, sheetname="house") # to read all sheets to a map sheet_to_df_map = {} for sheet_name in xls.sheet_names: sheet_to_df_map[sheet_name] = xls.parse(sheet_name)

Actualizar:

# @ihightower pointed out in the comments that all sheets can be # directly read into an ordered dictionary in 1 step # for pandas version >= 0.21.0 sheet_to_df_map = pd.read_excel(file_name, sheet_name=None) # for pandas version < 0.21.0 sheet_to_df_map = pd.read_excel(file_name, sheetname=None)

Actualización 2: Gracias @toto_tico por señalarlo.

nombre de la hoja: cadena, int, lista mixta de cadenas / ints, o Ninguno, predeterminado 0 Desaprobado desde la versión 0.21.0: use sheet_name en su lugar Source Link


También podría especificar el nombre de la hoja como parámetro:

data_file = pd.read_excel(''path_to_file.xls'', sheetname="sheet_name")

solo subirá la hoja "sheet_name"


También puede usar el índice para la hoja:

xls = pd.ExcelFile(''path_to_file.xls'') sheet1 = xls.parse(0)

le dará la primera hoja de trabajo. para la segunda hoja de trabajo:

sheet2 = xls.parse(1)


Pruebe pd.ExcelFile :

xls = pd.ExcelFile(''path_to_file.xls'') df1 = pd.read_excel(xls, ''Sheet1'') df2 = pd.read_excel(xls, ''Sheet2'')

Como señaló @HaPsantran, todo el archivo de Excel se lee durante la llamada a ExcelFile() (no parece haber una forma de evitar esto). Esto simplemente le ahorra tener que leer el mismo archivo cada vez que desea acceder a una hoja nueva.

Tenga en cuenta que el argumento de pd.read_excel() para pd.read_excel() puede ser el nombre de la hoja (como arriba), un número entero que especifica el número de hoja (por ej. 0, 1, etc.), una lista de nombres o índices de hoja o None . Si se proporciona una lista, devuelve un diccionario donde las claves son los nombres / índices de las hojas y los valores son los marcos de datos. El valor predeterminado es simplemente devolver la primera hoja (es decir, sheet_name=0 ).

Si se especifica None , todas las hojas se devuelven, como un {sheet_name:dataframe} .