Время прочтения: 2 мин.
Не смотря на широко развивающуюся автоматизацию, еще приходится сталкиваться с отсутствием баз данных. Например, некоторые отчеты сохраняются в отдельных файлах Excel в разрезе каждого дня, причем в каждом файле содержатся множество листов с названиями городов. Естественно для анализа информации нам понадобится объединение информации в сводный отчет, причем с сохранением названий городов. Эту задачу помог нам решить Pandas совместно с библиотекой os, при условии одинаковой структуры отчетов и названия листов в файлах. Рассмотрим программу пошагово.
Шаг 1.
Импортируем необходимые библиотеки.
import pandas as pd
from os import listdir
import os
Шаг 2.
Создадим список, в котором перечислим все необходимые наименования листов,
и пустой объект Dataframe (далее – DF), который будет собирать в себе все отчеты, которые необходимо объединить.
_list = {'Хаб','СовГ','КнаА','Бир','Вл','Нах',
'Усс','ДалР','Спасск','Арс','ДалГ',
'Благ','Св','Бел','Рай','Зея',
'ЮС','Маг','Кам'}
Шаг 3.
Используя цикл «for» каждый Excel-файл в указанной директории (в нашем случае рабочая директория совпадает с директорией, в которой расположен скрипт) импортируется его при помощи метода «read_excel()» в объект DF. После чего, используя метод «append()», добавляем импортированный DF в DF, созданный в Шаге 2. По итогу мы получаем объект DF, содержащий в себе данные всех исходных файлов в директории.
for city in _list:
print(city)
fileList = listdir(os.getcwd())
for file in fileList:
if file[0] != '~' and file[-4:] == 'xlsx':
print(file)
try:
fileData = pd.read_excel(
file,
sheetname=city,
)
fileData['city'] = city
data = data.append(fileData, ignore_index=True)
except:
print('ERROR^', city, file)
Шаг 4. Используя метод «to_excel()» экспортируем данные из объединенного DF в файл Excel.
data.to_excel('result\\result.xlsx', index=False)
print('end')
Задача выполнена.