ComenzarEmpieza gratis

Automatiza la carga y combinación de datos desde varias hojas de Excel

Ya estás listo para automatizar la importación de la información de cotización de los tres mercados en el archivo de Excel listings.xlsx usando un bucle for. Esto es lo que harás:

  1. Recupera los nombres de las hojas de un objeto pd.ExcelFile() usando su atributo sheet_names.
  2. Crea una lista vacía.
  3. Escribe un bucle for que recorra esos nombres de hoja para leer los datos de la hoja correspondiente del archivo de Excel en una variable. Añade una columna de referencia, si lo ves conveniente. Añade el contenido de esta variable a la lista en cada iteración.
  4. Concatena los DataFrames de la lista.

Como siempre, consulta los ejercicios anteriores de este capítulo o la documentación de pandas si necesitas ayuda. pandas se ha importado como pd.

Este ejercicio forma parte del curso

Importación y gestión de datos financieros en Python

Ver curso

Instrucciones del ejercicio

  • Crea el objeto pd.ExcelFile() usando el archivo listings.xlsx y asígnalo a la variable xls.
  • Recupera los nombres de las hojas desde el atributo .sheet_names de xls y asígnalos a exchanges.
  • Crea una lista vacía y asígnala a la variable listings.
  • Recorre exchanges usando un bucle for con exchange como variable iteradora. En cada iteración:
    • Usa pd.read_excel() con xls como fuente de datos, exchange como argumento sheet_name y 'n/a' como na_values para tratar los valores faltantes. Asigna el resultado a listing.
    • Crea una nueva columna en listing llamada 'Exchange' con el valor exchange (la variable iteradora).
    • Añade el DataFrame listing resultante a listings.
  • Usa pd.concat() para concatenar el contenido de listings y asígnalo a listing_data.
  • Inspecciona el contenido de listing_data usando .info().

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Create the pd.ExcelFile() object
xls = ____

# Extract the sheet names from xls
exchanges = ____.____

# Create an empty list: listings


# Import the data
for exchange in exchanges:
    listing = pd.____(____, sheet_name=____, na_values='n/a')
    listing['Exchange'] = ____
    listings.____(____)

# Concatenate the listings: listing_data
listing_data = pd.____(____)

# Inspect the results
listing_data.info()
Editar y ejecutar código