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:
- Recupera los nombres de las hojas de un objeto
pd.ExcelFile()usando su atributosheet_names. - Crea una lista vacía.
- 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.
- 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
Instrucciones del ejercicio
- Crea el objeto
pd.ExcelFile()usando el archivolistings.xlsxy asígnalo a la variablexls. - Recupera los nombres de las hojas desde el atributo
.sheet_namesdexlsy asígnalos aexchanges. - Crea una lista vacía y asígnala a la variable
listings. - Recorre
exchangesusando un bucle for conexchangecomo variable iteradora. En cada iteración:- Usa
pd.read_excel()conxlscomo fuente de datos,exchangecomo argumentosheet_namey'n/a'comona_valuespara tratar los valores faltantes. Asigna el resultado alisting. - Crea una nueva columna en
listingllamada'Exchange'con el valorexchange(la variable iteradora). - Añade el DataFrame
listingresultante alistings.
- Usa
- Usa
pd.concat()para concatenar el contenido delistingsy asígnalo alisting_data. - Inspecciona el contenido de
listing_datausando.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()