Файлы к уроку:
Описание
У нас есть несколько однообразных книг Excel. В каждой книге Excel находится несколько листов с единой структурой. Нам нужно одновременно объединить все книги и все листы в них в одну таблицу.
Решим эту задачу с помощью модуля pandas.
Решение
Сначала импортируем нужные модули.
# Импорт модулей
import pandas as pd
import os
import glob
Укажем директорию, в которой находятся файлы.
# Сменим директорию
os.chdir('data')
Создадим список книг для объединения.
# Список файлов Excel для объединения
xl_files = glob.glob('*.xlsx')
Создадим датафрейм, в который запишем таблицы.
# Читаем каждую книгу объединяем все листы в один датафрейм
combined = pd.DataFrame()
Читаем каждый файл и объединяем все таблицы.
# Цикл по файлам
for xl_file in xl_files:
# Создать объект ExcelFile
xl_file_obj = pd.ExcelFile(xl_file)
# Цикл по листам
for sheet_name in xl_file_obj.sheet_names:
# Прочитать нужный лист книги
data = pd.read_excel(xl_file_obj,
sheet_name=sheet_name)
# Создадать столбец с названием книги
data['workbook'] = xl_file
# Создать столбец с названием листа
data['sheet'] = sheet_name
# Дописать в датафрейм combined
combined = combined.append(data)
Запишем результат в книгу Excel.
combined.to_excel('sales_combined.xlsx',
index=False)
Примененные функции
- os.getcwd
- os.chdir
- glob.glob
- pandas.ExcelFile
- pandas.DataFrame
- pandas.read_excel
- pandas.DataFrame.append
- pandas.DataFrame.to_excel