Или: как сделать отчёт красивым без мишуры
Введение
В мире данных и аналитики часто сталкиваешься с ситуацией, когда нужно автоматически создать графики и диаграммы для отчётов в Excel. И это не только удобно, но и важно — визуализация помогает быстро донести суть данных, особенно если речь идет о числе, процентах и трендах.
Задача на сегодня: создадим графики в Excel автоматически с помощью Python. Мы будем использовать две библиотеки:
- pandas — для работы с данными в табличном виде.
- openpyxl — для создания и манипуляции самими графиками в Excel.
Установим библиотеки:
pip install pandas openpyxl
🧪 Пример задачи
Представьте себе следующую ситуацию:
Вы работаете аналитиком в компании, которая продаёт товар. У вас есть таблица с данными о продажах по месяцам, регионам и типам товаров. Ваша задача — создать график продаж по месяцам для каждого типа товара и отправить его в Excel в виде отчёта.
Данные для примера:
import pandas as pd
# Создаём исходные данные
data = {
'Месяц': ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь'],
'Товар A': [150, 200, 250, 300, 350, 400],
'Товар B': [180, 220, 270, 320, 380, 450],
'Товар C': [130, 160, 200, 240, 280, 330]
}
# Преобразуем данные в DataFrame
df = pd.DataFrame(data)
# Покажем данные
print(df)
Это простая таблица с продажами товаров по месяцам. Нам нужно создать для неё график.
🔧 Шаг 1: Основы работы с openpyxl — создание Excel-файла
Для начала давайте просто сохраним эти данные в Excel, чтобы потом добавить график. Это можно сделать с помощью pandas и openpyxl.
# Сохраняем данные в Excel
with pd.ExcelWriter('sales_report.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name='Продажи')
📝 Файл sales_report.xlsx будет содержать таблицу с данными.
📉 Шаг 2: Создание графика
Теперь перейдём к самому интересному: добавим график в Excel! Для этого будем использовать библиотеку openpyxl, которая позволяет не только работать с данными, но и добавлять визуализацию (графики и диаграммы).
2.1: Подключаем openpyxl и загружаем файл
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference
# Загружаем файл
wb = load_workbook('sales_report.xlsx')
ws = wb['Продажи'] # Открываем лист с данными
📚 Мы используем load_workbook, чтобы загрузить файл и получить доступ к листу с данными.
2.2: Создаём график
Теперь создадим линейный график, который будет отображать динамику продаж каждого товара по месяцам.
# Создаём объект линейного графика
chart = LineChart()
# Определяем диапазон данных для графика
data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
chart.add_data(data, titles_from_data=True)
# Определяем категории (оси X) — это месяцы
categories = Reference(ws, min_col=1, min_row=2, max_row=7)
chart.set_categories(categories)
# Добавляем график на лист
ws.add_chart(chart, "F2") # Позиция, куда вставляем график (начиная с ячейки F2)
📈 Вот и всё, что нужно для добавления графика! Мы указали диапазоны данных и категорий, а затем добавили сам график в Excel.
💅 Шаг 3: Украсим график и файл
Теперь, чтобы график выглядел немного более презентабельно, можно сделать несколько мелких изменений:
- Установим название для графика.
- Сделаем оси более чёткими.
- Добавим стиль для заголовков.
# Название графика
chart.title = "Продажи по месяцам"
# Стиль осей
chart.x_axis.title = 'Месяц'
chart.y_axis.title = 'Продажи (₽)'
# Задаём шрифт заголовков
from openpyxl.styles import Font
chart.title.font = Font(size=14, bold=True)
chart.x_axis.title.font = Font(size=12)
chart.y_axis.title.font = Font(size=12)
🎨 Теперь график не только работает, но и выглядит красиво!
📝 Шаг 4: Сохраняем файл
После того как график добавлен и всё отформатировано, сохраним файл.
# Сохраняем файл с графиком
wb.save('sales_report_with_chart.xlsx')
🥳 Всё готово! В файле sales_report_with_chart.xlsx теперь будет и таблица, и график, который показывает динамику продаж по месяцам для каждого товара.
🏆 Проверка: что получилось?
- У нас есть Excel-файл с таблицей.
- Добавлен график, отображающий продажи по месяцам для трёх товаров.
- Файл можно открыть в Excel и сразу видеть данные и графики.
🛠 Бонус: Как сделать другие виды графиков?
Мы только что создали линейный график, но с помощью openpyxl можно создать и другие типы диаграмм, например:
- Столбчатый график (BarChart)
- Круговая диаграмма (PieChart)
- Гистограмма (Histogram)
Пример с столбчатым графиком:
from openpyxl.chart import BarChart
# Создаём столбчатый график
bar_chart = BarChart()
bar_chart.add_data(data, titles_from_data=True)
bar_chart.set_categories(categories)
# Добавляем столбчатый график на лист
ws.add_chart(bar_chart, "F20") # Размещаем график ниже линейного
🧑💻 Вывод
Теперь ты знаешь, как автоматически создавать графики в Excel с помощью Python. Это не только упрощает подготовку отчётов, но и делает их более профессиональными и понятными для всех, кто их будет просматривать.
Вместо того чтобы вручную рисовать графики, ты можешь генерировать их на лету — быстро, эффективно и без ошибок. 🚀
🔮 Что дальше?
- Хочешь узнать, как добавлять несколько графиков в один файл?
- Нужно научиться генерировать графики для динамических данных, например, с базы данных?
- Или, может быть, ты хочешь узнать, как отправить отчёт с графиками по email?
Пиши — разберём всё, как по нотам! 😎