Файлы к уроку: Файлы доступны только спонсорам канала. Оформите спонсорскую подписку всего за 49 — 149 рублей, если хотите получить максимум от обучения. Стать спонсором канала: https://www.youtube.com/channel/UCwAru3vDmH-IdYtwK7JWN4w/join
В этом уроке мы дополним урок по объединению XLSX файлов с помощью Python.
Что мы добавим:
- Воспользуемся модулем os, чтобы сменить рабочую директорию и не указывать директорию каждый раз заново
- Воспользуемся модулем tqdm для создания Progress Bar
- При помощи команды print мы вначале каждого витка цикла выведем на экран время старта обработки каждого файла
В первой ячейке импортируем модули:
import glob
import pandas as pd
import os
from tqdm import tqdm_notebook as tqdm
from datetime import datetime
os.chdir(r'c:\Users\Timur\Downloads\PQ\Comrade Excel TV 2.1. Отобразить время запуска\0002. Объединить много XLSX файлов в один CSV')
os.getcwd()
По сравнению с прошлым вариантом здесь добавился импорт модуля os для смены директории, модуль tqdm для Progress Bar и модуль datetime для вывода даты и времени.
Команда os.getcwd() выводит на экран текущую рабочую директорию. Мы вводим эту команду просто, чтобы убедиться, что директория сменилась.
Во второй ячейке получим список всех XLSX файлов в папке:
files = [item for item in glob.glob('*{}'.format('.xlsx'))]
files
В третьей ячейке создаем цикл, который обработает и объединит все файлы XLSX в один датайрейм:
combined = pd.DataFrame()
for filename in tqdm(files):
print(filename, "Начало: ", datetime.time(datetime.now()))
file = pd.read_excel(filename,
skiprows=8,
header=1,
usecols=['Дата\nконтракта','Код точки\nпродаж','Пользователь','MSISDN','ICC'])
file = file[['Дата\nконтракта','Код точки\nпродаж','Пользователь','MSISDN','ICC']]
file.columns=['date','posid','user','msisdn','icc']
combined = pd.concat([combined, file])
print("Готово: ", datetime.time(datetime.now()))
Здесь мы применили функцию tqdm для вывода Progress Bar, а также перед обработкой файла выводим время начала его обработки.
В четвертой ячейке запишем получившийся датафрейм в файл CSV:
combined.to_csv(os.getcwd()+'\combined.csv')