Автоматизация загрузки и объединения данных с нескольких листов Excel
Теперь вы готовы автоматизировать импорт информации о листингах со всех трёх бирж из файла Excel listings.xlsx с помощью цикла for. Вот что предстоит сделать:
- Получить имена листов объекта
pd.ExcelFile()через атрибутsheet_names. - Создать пустой список.
- Написать цикл for, который перебирает имена листов, считывает данные с соответствующего листа Excel в переменную, при необходимости добавляет столбец-идентификатор и добавляет содержимое переменной в список на каждой итерации.
- Объединить DataFrame из списка с помощью конкатенации.
При необходимости обращайтесь к предыдущим упражнениям этой главы или к документации 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(переменной итератора). - Добавьте полученный DataFrame
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()