data_client

Технологии Blogger.

Excel и Python. Основы взаимодействия.

Добрый день. Прочитав эту статью Вы узнаете, как можно выгружать данные из Excel в Python, их обрабатывать в нем и сохранять назад в Excel файлы.

Excel и Python. Основы взаимодействия.
Перед тем как начнем, хотелось бы сказать пару слов о том, зачем нам понадобился Python. Этот язык программирования очень неплохо оптимизирован для работы с большими массивами данных, что позволяет нам ускорить обработку больших Excel таблиц в десятки раз, а также применять имеющиеся в Python пакеты для углубленного анализа данных, что Excel делать не умеет.

Итак, начнем по этапам:

1. Устанавливаем Python.

Для этого нам понадобится замечательный продукт Anaconda, который включает в себя как сам Python, так и необходимы нам для работы пакеты, такие как Pandas, Xlwings, NumPy и другие.
Для того, что бы установить Anaconda, заходим на официальный сайт в раздел Download и скачиваем инсталлятор для Вашей операционной системы.

Excel и Python. Основы взаимодействия.
 
Настоятельно рекомендую брать дистрибутив с версией Python 3.*, так как Python 2.* морально устарел и все реже используется в новых продуктах. Ссылка на Anaconda здесь.

После того, как Вы скачали инсталлятор, запускаете и устанавливаете его. Процесс очень простой, подробно останавливаться на нем не буду. После того как Вы установили Anaconda, в меню должен появиться соответствующий раздел. Давайте проверим, что Python установлен и работает.  Для этого запускаем Anaconda Prompt из соответствующего меню.

Excel и Python. Основы взаимодействия.

Прописываем команду python . Если у Вас все получилось, то должна отобразиться версия установленного у вас интерпритатора Python, наподобие сообщения ниже.

Excel и Python. Основы взаимодействия.

Поздравляю, Python Вы установили, можно двигаться дальше.


2. Выбираем IDE для написания кода.

IDE - это интерактивная среда для написания кода. Код можно писать хоть в блокноте, хоть в командной строке интерпритатора, но это очень неудобно. Поэтому все используют IDE. Для Python их создано множество, но я остановлюсь на двух из них, а именно Jupyter Notebook и Spider, так как они идут в комплекте поставки Anaconda.

Jupyter Notebook - это интерактивная среда разработки, которая позволяет выполнять код программы построчно и тем самым наблюдать за тем, что делает программа и какие выдает результаты.

Spyder - эта IDE, которая обладает необходимым функционалом, который помогает при написании кода, таким как подсветка синтаксиса, автозаполнения кода и т.п. Так же позволяет просматривать содержимое переменных после выполнения программы, что очень удобно при отладке и вылавливании багов.

Мне больше понравился Spyder и дальше примеры будут с его использованием, но выбор IDE - это личное дело каждого пользователя и настаивать на своем выборе я не буду.

3. Импорт необходимых пакетов Python.

Для экспорта данных из Excel в Python и их дальнейшей обработки, нам понадобятся два пакета: Pandas и Xlwings. Они оба уже включены в состав Anaconda, поэтому никаких дополнительных действий по их установки от Вас не потребуется.

Pandas - это дополнительный пакет к Python, который позволяет работать с данными, как с двумерными таблицами (Excel - это как раз и есть такая таблица).

Xlwings - также дополнительный пакет к Python, который отвечает за получение/сохранение данных из Excel файлов. Отличительными особенностями данного пакета является возможность не только редактировать  данные в Excel, но также стиль оформления ячеек, создавать дополнительные листы и т.п. Супер-фишкой является возможность запускать Python скрипты прямо из Excel файлов, но об этой особенности поговорим в других уроках.

Итак, что бы импортировать Pandas и Xlwings, проделаем следующие операции: 1. Запустить Spyder. 2. Удаляем в появившемся окне кода, все что туда программа написала по умолчанию, так как это нам не нужно. 3. Вставляем слудеющий код:
import xlwings as xw
import pandas as pd

print (xw.__version__)
print (pd.__version__)
Объясню, что делает этот фрагмент кода. Первые две строки, которые начинаются со слова import, импортируют нужные нам пакеты,  вторые две строки выводят их текущие версии в консоль Python. Это нужно, что бы проверить что все корректно работает.

Сохраняем скрипт в удобное Вам место и запускаем, если все сделали правильно в консоли будет выведены версии пакетов. В моем случае это 0.15.10, 0.25.1.

Все получилось, отлично, едем дальше. Если нет - задавайте вопросы к комментариях под статьей, буду стараться оперативно отвечать.

4. Чтение данных из Excel файла Python.

Мы добрались до самой важной части, а именно как прочитать данные из Excel файла. Для примера я создал файл с названием Excel_Python-1.xlsx и поместил в туже папку, куда сохранил скрипт из шага 3. В этом файле создал лист "Данные" и туда внес следующую информацию:

Excel и Python. Основы взаимодействия.

Для того, что бы прочитать эти данные, давайте внесем в скрипт изменения. Теперь наш скрипт будет выглядеть следующим образом:

import xlwings as xw
import pandas as pd

wb = xw.Book('Excel_Python-1.xlsx') # Открываем книгу
data_excel = wb.sheets['Данные'] # Читаем лист Данные
data_pd = data_excel.range('A1:C4').options(pd.DataFrame, header = 1, index = False).value # Создаем DataFrame
print(data_pd)
Запускаем скрипт, если все сделали правильно, то в консоли Python Вы увидите содержание Excel файла. Ура!!! Данные прочитаны. Теперь давайте остановимся подробнее на каждой из новых строк скрипта.

wb = xw.Book('Excel_Python-1.xlsx') - Открываем Excel файл с именем Excel_Python-1.xlsx и присваиваем его переменной wb.

data_excel = wb.sheets['Данные'] - Получаем доступ к листу Данные из файла, записанного в переменную wb и присваиваем его переменной data_excel.

data_pd = data_excel.range('A1:C4').options(pd.DataFrame, header = 1, index = False).value - Читаем данные с области листа A1:C4 и создаем переменную типа Pandas DataFrame (pd.DataFrame), при этом говорим что первая строка таблицы содержит заголовки (header = 1), а номеров по порядку или так называемых индексов у строк нет (index = False).

print(data_pd) - Выводим в консоль Python содержимого созданого нами DataFrame с именем data_pd.

5. Сохранение данных из Python в Excel. 

Великолепно! Данные мы прочитали, теперь давайте их немного отредактируем и сохраним назад в Excel файл.

Сначало добавим в наш DataFrame data_pd еще один столбец Пол. Это можно сделать при помощи следующей команды:

data_pd['Пол'] = ['Мужской','Мужской','Мужской']
Отлично, а теперь давайте запишем эти модифицированные данные назад в наш Excel файл:

data_excel.range('A1').options(index = False).value = data_pd
Размерем эту команду чуть подробнее. Мы говорим что в лист data_excel, который мы создали ранее, с ячейки A1 надо внести данные из нашего DataFrame data_pd, при этом индексы строк записывать не надо (index = False). Полностью код выглядит следующим образом:

import xlwings as xw
import pandas as pd

wb=xw.Book('Excel_Python-1.xlsx') # Открываем книгу
data_excel = wb.sheets['Данные'] # Читаем лист Данные
data_pd = data_excel.range('A1:C4').options(pd.DataFrame, header = 1, index = False).value # Создаем DataFrame
data_pd['Пол'] = ['Мужской','Мужской','Мужской']
data_excel.range('A1').options(index = False).value = data_pd
Запустите скрипт и посмотрите Ваш Excel файл, в нем Вы увидете, что появился новый заполненный данными столбец "Пол".

На этом этот урок я заканчиваю, в следующих уроках продолжим далее изучать Python и как его можно применять при обработке Excel файлов.
Опубликовать в Google Plus