Automatizace načítání a spojování dat z více listů Excelového sešitu
Teď je čas zautomatizovat import dat o burzovních kotacích ze všech tří burz v souboru listings.xlsx pomocí cyklu for. Postup bude následující:
- Získej názvy listů objektu
pd.ExcelFile()pomocí jeho atributusheet_names. - Vytvoř prázdný seznam.
- Napiš cyklus for, který prochází tyto názvy listů, načítá data z příslušného listu Excelového souboru do proměnné, přidá referenční sloupec (pokud chceš), a obsah proměnné v každé iteraci přidá do seznamu.
- Spoj DataFramy ze seznamu dohromady.
Kdykoli budeš potřebovat pomoc, podívej se na předchozí cvičení v této kapitole nebo do dokumentace pandas. pandas je importován jako pd.
Toto cvičení je součástí kurzu
Importing and Managing Financial Data in Python
Pokyny k cvičení
- Vytvoř objekt
pd.ExcelFile()ze souborulistings.xlsxa přiřaď ho do proměnnéxls. - Načti názvy listů z atributu
.sheet_namesobjektuxlsa přiřaď je do proměnnéexchanges. - Vytvoř prázdný seznam a přiřaď ho do proměnné
listings. - Projdi
exchangespomocí cyklu for s iterační proměnnouexchange. V každé iteraci:- Použij
pd.read_excel()sxlsjako zdrojem dat,exchangejako argumentemsheet_namea'n/a'jakona_valuespro ošetření chybějících hodnot. Výsledek přiřaď do proměnnélisting. - V
listingvytvoř nový sloupec'Exchange's hodnotouexchange(iterační proměnná). - Přidej výsledný DataFrame
listingdo seznamulistings.
- Použij
- Pomocí
pd.concat()spoj obsah seznamulistingsa výsledek přiřaď do proměnnélisting_data. - Prozkoumej obsah
listing_datapomocí.info().
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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()