Automatize o carregamento e a combinação de dados de várias planilhas do Excel
Agora você está pronto para automatizar o processo de importação das informações de listagem das três bolsas no arquivo Excel listings.xlsx, implementando um loop for. Veja o que você vai fazer:
- Obter os nomes das planilhas de um objeto
pd.ExcelFile()usando o atributosheet_names. - Criar uma lista vazia.
- Escrever um loop for que percorra esses nomes de planilha para ler os dados da planilha correspondente no arquivo Excel para uma variável. Adicione uma coluna de referência, se desejar. Acrescente o conteúdo dessa variável à lista a cada iteração.
- Concatenar os DataFrames na lista.
Como sempre, consulte os exercícios anteriores deste capítulo ou a documentação do pandas se precisar de ajuda. pandas já foi importado como pd.
Este exercício faz parte do curso
Importing and Managing Financial Data in Python
Instruções do exercício
- Crie o objeto
pd.ExcelFile()usando o arquivolistings.xlsxe atribua à variávelxls. - Obtenha os nomes das planilhas a partir do atributo
.sheet_namesdexlse atribua aexchanges. - Crie uma lista vazia e atribua à variável
listings. - Percorra
exchangesusando um loop for comexchangecomo variável iteradora. Em cada iteração:- Use
pd.read_excel()comxlscomo fonte de dados,exchangecomo argumentosheet_namee'n/a'comona_valuespara tratar valores ausentes. Atribua o resultado alisting. - Crie uma nova coluna em
listingchamada'Exchange'com o valorexchange(a variável iteradora). - Acrescente o DataFrame
listingresultante alistings.
- Use
- Use
pd.concat()para concatenar o conteúdo delistingse atribua alisting_data. - Inspecione o conteúdo de
listing_datausando.info().
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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()