Automatisera inläsning och sammanslagning av data från flera Excel-kalkylblad
Nu är du redo att automatisera importen av listningsinformation från alla tre börser i Excel-filen listings.xlsx med hjälp av en for-loop. Här är vad du ska göra:
- Hämta bladnamnen från ett
pd.ExcelFile()-objekt via dess attributsheet_names. - Skapa en tom lista.
- Skriv en for-loop som itererar igenom bladnamnen och läser in data från motsvarande blad i Excel-filen till en variabel. Lägg till en referenskolumn om du vill. Lägg till innehållet i variabeln i listan vid varje iteration.
- Konkatenera DataFrames i listan.
Som vanligt kan du titta på tidigare övningar i det här kapitlet eller i pandas-dokumentationen om du behöver hjälp. pandas har importerats som pd.
Den här övningen är en del av kursen
Importera och hantera finansiell data i Python
Övningsinstruktioner
- Skapa
pd.ExcelFile()-objektet med filenlistings.xlsxoch tilldela det till variabelnxls. - Hämta bladnamnen från attributet
.sheet_namespåxlsoch tilldela tillexchanges. - Skapa en tom lista och tilldela den till variabeln
listings. - Iterera över
exchangesmed en for-loop därexchangeär iteratorvariabeln. Gör följande i varje iteration:- Använd
pd.read_excel()medxlssom datakälla,exchangesom argument försheet_nameoch'n/a'somna_valuesför att hantera saknade värden. Tilldela resultatet tilllisting. - Skapa en ny kolumn i
listingmed namnet'Exchange'och värdetexchange(iteratorvariabeln). - Lägg till den resulterande
listing-DataFrame:n ilistings.
- Använd
- Använd
pd.concat()för att konkatenera innehållet ilistingsoch tilldela resultatet tilllisting_data. - Granska innehållet i
listing_datamed.info().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()