Función Pandas pd.read_excel()

Python math 模块Funciones comunes de Pandas


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ámetrosTipoDescripciónValor predeterminado
iostr, ExcelFile, path object, file-like objectRuta del archivo Excel u objeto ExcelFileObligatorio
sheet_namestr, int, list, NoneNombre o índice de la hoja de cálculo a leer; `None` lee todas las hojas de cálculo0
headerint, list of intNúmero de fila que se usará como nombres de columnas; 0 indica la primera fila0
nameslist-likeLista personalizada de nombres de columnasNone
index_colint, strColumna utilizada como índice de filasNone
usecolsint, str, listLeer solo las columnas especificadasNone
dtypedictEspecificar el tipo de datos de las columnasNone
skiprowslist-like, intOmitir las filas especificadasNone
nrowsintLeer solo las primeras n filasNone

Valor de retorno

  • Tipo de retorno:pd.DataFrameodict of DataFrames
  • Cuandosheet_nameSi es una sola hoja de cálculo, devuelve un DataFrame.
  • Cuandosheet_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 pandas as pd
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 instalaropenpyxlla 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.

h2 class="example">Ejemplo
import pandas as pd

# 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

import pandas as pd

# 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 instalaropenpyxl:pip install openpyxl。
  • Para leer el formato .xls se necesita instalarxlrd: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 usarusecolsel 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.

Python math 模块Funciones comunes de Pandas

Otras extensiones