Función Pandas pd.read_excel()
read_excel()Es la función de la biblioteca pandas utilizada para leer archivos Excel; admite la lectura de.xlsxy.xlsarchivos Excel en formato.
Excel es el formato de archivo más utilizado en el análisis de datos empresariales; admite múltiples hojas de cálculo, formatos de celda enriquecidos, fórmulas, etc.read_excel()Puede leer los datos de un archivo Excel y convertirlos al formato DataFrame de pandas, facilitando el posterior procesamiento y análisis de datos.
Sintaxis básica y parámetros
Formato de sintaxis
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
usecols=None, dtype=None, skiprows=None, nrows=None,
na_values=None, ...)
Descripción de parámetros
| Parámetros | Tipo | Descripción | Valor predeterminado |
|---|---|---|---|
| io | str, ExcelFile, path object, file-like object | Ruta del archivo Excel u objeto ExcelFile | Obligatorio |
| sheet_name | str, int, list, None | Nombre o índice de la hoja de cálculo a leer; `None` lee todas las hojas de cálculo | 0 |
| header | int, list of int | Número de fila que se usará como nombres de columnas; 0 indica la primera fila | 0 |
| names | list-like | Lista personalizada de nombres de columnas | None |
| index_col | int, str | Columna utilizada como índice de filas | None |
| usecols | int, str, list | Leer solo las columnas especificadas | None |
| dtype | dict | Especificar el tipo de datos de las columnas | None |
| skiprows | list-like, int | Omitir las filas especificadas | None |
| nrows | int | Leer solo las primeras n filas | None |
Valor de retorno
- Tipo de retorno:
pd.DataFrameodictof DataFrames - Cuando
sheet_nameSi es una sola hoja de cálculo, devuelve un DataFrame. - Cuando
sheet_nameSi es `None` o incluye varias hojas de cálculo, devuelve un diccionario cuyas claves son los nombres de las hojas y cuyos valores son los DataFrames correspondientes.
Ejemplos
A través de los siguientes ejemplos, domina completamenteread_excel()los diversos usos.
Ejemplo 1: Leer un archivo Excel local
Primero, crea y lee un archivo Excel simple.
Ejemplo
import openpyxl # Requiere instalar: pip install openpyxl
# Crear un DataFrame
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df_original = pd.DataFrame(data)
# Escribir el DataFrame en un archivo Excel
# Ruta del archivo Excel: employees.xlsx
df_original.to_excel('employees.xlsx', index=False, engine='openpyxl')
# Leer el archivo Excel usando read_excel
# io: ruta del archivo (obligatorio)
df = pd.read_excel('employees.xlsx')
# Ver los resultados de la lectura
print("DataFrame leído:")
print(df)
print("ntipo de datos:")
print(df.dtypes)
Resultado esperado:
读取的 DataFrame:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
数据类型:
name object
age int64
city object
salary int64
Análisis del código:
pd.read_excel('employees.xlsx')Es el uso más básico; basta con pasar directamente la ruta del archivo.- De forma predeterminada, se lee la primera hoja de cálculo (sheet_name=0) y la primera fila se usa como nombres de columnas.
- Es necesario instalar
openpyxlla librería para admitir la lectura y escritura del formato .xlsx.
Ejemplo 2: Leer múltiples hojas de cálculo
Un archivo Excel puede contener múltiples hojas de cálculo,read_excel()y admite la lectura flexible de hojas de cálculo especificadas o de todas las hojas.
# Crear un archivo Excel que contenga múltiples hojas de cálculo
# Primero, crear dos DataFrames
df_sales = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'quantity': [100, 200, 150, 80],
'price': [50, 30, 40, 60]
})
df_inventory = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'stock': [500, 300, 400, 200],
'warehouse': ['WH1', 'WH2', 'WH1', 'WH3']
})
# Escribir varias hojas de cálculo en un archivo Excel
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df_sales.to_excel(writer, sheet_name='Sales', index=False)
df_inventory.to_excel(writer, sheet_name='Inventory', index=False)
# Ejemplo 2a: Leer la hoja de cálculo especificada (por nombre)
df_sales_read = pd.read_excel('multi_sheet.xlsx', sheet_name='Sales')
print("Leer la hoja de cálculo Sales:")
print(df_sales_read)
print()
# Ejemplo 2b: Leer la hoja de cálculo especificada (por índice)
df_inv_read = pd.read_excel('multi_sheet.xlsx', sheet_name=1)
print("Leer la segunda hoja de cálculo (índice 1):")
print(df_inv_read)
print()
# Ejemplo 2c: Leer todas las hojas de cálculo (devuelve un diccionario)
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print("Nombres de todas las hojas de cálculo:", list(all_sheets.keys()))
print("nRecorrer todas las hojas de cálculo:")
for sheet_name, df_sheet in all_sheets.items():
print(f"n--- {sheet_name} ---")
print(df_sheet)
Resultado esperado:
读取 Sales 工作表: product quantity price 0 A 100 50 1 B 200 30 2 C 150 40 3 D 80 60 读取第2个工作表 (索引为1): product stock warehouse 0 A 500 WH1 1 B 300 WA2 2 C 400 WH1 3 D 200 WH3 所有工作表名称: ['Sales', 'Inventory'] 遍历所有工作表: --- Sales --- product quantity price ... --- Inventory --- product stock warehouse ...
Análisis del código:
sheet_nameEl parámetro puede aceptar el nombre de la hoja de cálculo (cadena) o un índice (entero).- Al configurarlo,
sheet_name=Nonese leerán todas las hojas de cálculo, devolviendo un diccionario cuyas claves son los nombres de las hojas y cuyos valores son los DataFrames correspondientes. - Al usarlo,
pd.ExcelWriterse pueden escribir fácilmente múltiples hojas de cálculo.
Ejemplo 3: Uso avanzado - Personalizar columnas y omitir filas
En el trabajo real, los archivos Excel pueden tener formatos complejos, lo que requiere un manejo flexible.
Ejemplo
# Crear un archivo Excel con una fila de título y filas vacías
# Las primeras filas son metadatos; los datos reales comienzan en la fila 4
data_with_header = """Datos de los empleados de la empresa
Fecha de creación: 2024-01-01
Departamento: Tecnología
---
name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
"""
# Primero crear un CSV y luego convertirlo a Excel (simulando un escenario real)
import io
df_temp = pd.read_csv(io.StringIO(data_with_header.split('---')[1]))
df_temp.to_excel('complex_format.xlsx', index=False, engine='openpyxl')
# Ejemplo 3a: omitir las primeras filas y usar la fila N como nombres de columnas
df_skip = pd.read_excel('complex_format.xlsx', header=3)
print("Omitir las primeras 3 filas y usar la fila 4 como nombres de columnas:")
print(df_skip)
print()
# Ejemplo 3b: Leer solo las columnas especificadas
df_cols = pd.read_excel('complex_format.xlsx', usecols=['name', 'salary'])
print("Leer solo las columnas name y salary:")
print(df_cols)
print()
# Ejemplo 3c: Leer solo las primeras filas
df_head = pd.read_excel('complex_format.xlsx', nrows=2)
print("Leer solo las primeras 2 filas:")
print(df_head)
print()
# Ejemplo 3d: Personalizar los nombres de las columnas
df_custom_names = pd.read_excel('complex_format.xlsx',
names=['Nombre', 'Edad', 'Ciudad', 'Salario'],
header=0)
print("Nombres de columnas personalizados:")
print(df_custom_names)
Resultado esperado:
跳过前3行,使用第4行作为列名:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
只读取 name 和 salary 列:
name salary
0 Tom 8000
1 Jerry 12000
只读取前2行:
name age city salary
0 Tom 28 Beijing 8000
自定义列名:
姓名 年龄 城市 薪资
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
Análisis del código:
headerEl parámetro especifica qué fila se usa como nombres de columnas (la numeración comienza desde 0).usecolsSe puede especificar qué columnas leer; admite listas de nombres de columnas o índices de columnas.nrowsLimita el número de filas a leer; es apto para la lectura parcial de archivos grandes.namesEl parámetro puede personalizar los nombres de las columnas y sobrescribirá los nombres de columnas originales del archivo.
Notas importantes
- Para leer el formato .xlsx se necesita instalar
openpyxl:pip install openpyxl。 - Para leer el formato .xls se necesita instalar
xlrd:pip install xlrd(Nota: la versión xlrd 2.0+ ya no admite archivos .xls). - Los archivos Excel tienen límites de filas y columnas (máximo 1048576 filas, 16384 columnas); superar esos límites provocará pérdida de datos.
- Al leer archivos grandes, se puede considerar usar
usecolsel parámetro para leer solo las columnas necesarias, mejorando el rendimiento. sheet_nameEl parámetro admite el uso mixto de nombres e índices.
Resumen
read_excel()Es la función central de pandas para leer archivos Excel y es muy potente. Admite la lectura de una o varias hojas de cálculo y puede manejar con flexibilidad archivos Excel de diversos formatos.
En el trabajo real de análisis de datos, los archivos Excel son una de las fuentes de datos más comunes. Dominarread_excel()el uso de los diversos parámetros permite manejar eficientemente diversos datos de Excel, preparando para la posterior limpieza y análisis de datos. Se recomienda al lector practicar más, especialmente la lectura de múltiples hojas de cálculo y la configuración de parámetros.
Funciones comunes de Pandas