Автоматизуйте завантаження та об'єднання даних з кількох аркушів Excel
Тепер ви готові автоматизувати імпорт інформації про лістинги з усіх трьох бірж у файлі listings.xlsx, реалізувавши цикл for. Ось що потрібно зробити:
- Отримайте назви аркушів об'єкта
pd.ExcelFile()за допомогою його атрибутаsheet_names. - Створіть порожній список.
- Напишіть цикл for, який проходить через ці назви аркушів, щоб зчитати дані з відповідного аркуша Excel у змінну. За потреби додайте референсну колонку. Додавайте вміст цієї змінної до списку на кожній ітерації.
- Об'єднайте датафрейми у списку.
Як завжди, звертайтеся до попередніх вправ у цьому розділі або до документації pandas, якщо вам потрібна допомога. pandas імпортовано як pd.
Ця вправа є частиною курсу
Імпорт і керування фінансовими даними в Python
Інструкції до вправи
- Створіть об'єкт
pd.ExcelFile()з файлуlistings.xlsxі присвойте зміннійxls. - Отримайте назви аркушів із атрибута
.sheet_namesоб'єктаxlsі присвойтеexchanges. - Створіть порожній список і присвойте його змінній
listings. - Ітеруйтеся по
exchangesза допомогою циклу for із змінною ітератораexchange. На кожній ітерації:- Використайте
pd.read_excel()зxlsяк джерелом даних,exchangeяк аргументомsheet_nameі'n/a'якna_valuesдля обробки пропущених значень. Присвойте результат зміннійlisting. - Створіть у
listingнову колонку'Exchange'зі значеннямexchange(змінна-ітератор). - Додайте отриманий датафрейм
listingдоlistings.
- Використайте
- Використайте
pd.concat()для об'єднання вмістуlistingsі присвойте результатlisting_data. - Перегляньте вміст
listing_data, викликавши.info().
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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()