Добавить в корзинуПозвонить
Найти в Дзене
Анастасия Софт

💻 Как создать динамичные отчеты и графики в Excel с помощью Python

Excel — это как старая добрая сковородка: все с ней работали, все её уважают, но никто не мечтает провести с ней всю жизнь. Особенно когда нужно каждый день генерировать одни и те же отчеты, копируя данные из тысяч источников, создавая графики вручную и мечтая, чтобы это делал кто-нибудь другой… например, Python. Сегодня мы превратим Python в идеального ассистента, который: Допустим, вы — аналитик продаж в интернет-магазине. Каждую неделю вы готовите Excel-отчет по продажам: таблицы по категориям, сравнение по регионам, график роста и падения спроса. Один раз — ок. Но каждую неделю? Нет, спасибо. Установим нужное (если не установлено): pip install pandas openpyxl xlsxwriter matplotlib import pandas as pd
import os
from datetime import datetime
# Загружаем данные из CSV (например, экспорт из CRM)
data = pd.read_csv('sales_data.csv')
# Выведем первые строки для понимания
print(data.head()) Комментарий:
Мы читаем данные о продажах из CSV-файла. В реальности — это может быть выгрузка из
Оглавление
Как создать динамичные отчеты и графики в Excel с помощью Python
Как создать динамичные отчеты и графики в Excel с помощью Python

Пролог

Excel — это как старая добрая сковородка: все с ней работали, все её уважают, но никто не мечтает провести с ней всю жизнь. Особенно когда нужно каждый день генерировать одни и те же отчеты, копируя данные из тысяч источников, создавая графики вручную и мечтая, чтобы это делал кто-нибудь другой… например, Python.

Сегодня мы превратим Python в идеального ассистента, который:

  • Загружает данные
  • Обрабатывает их
  • Создает отчет в Excel
  • Добавляет графики
  • Все это делает автоматически и стильно

🎯 Задача из реальной жизни

Допустим, вы — аналитик продаж в интернет-магазине. Каждую неделю вы готовите Excel-отчет по продажам: таблицы по категориям, сравнение по регионам, график роста и падения спроса. Один раз — ок. Но каждую неделю? Нет, спасибо.

🛠️ Что будем использовать

  • Pandas — для работы с таблицами
  • Openpyxl / XlsxWriter — для Excel
  • Matplotlib — для графиков
  • os / datetime — для автоматизации

Установим нужное (если не установлено):

pip install pandas openpyxl xlsxwriter matplotlib

📂 Шаг 1: Подгружаем и обрабатываем данные

import pandas as pd
import os
from datetime import datetime

# Загружаем данные из CSV (например, экспорт из CRM)
data = pd.read_csv('sales_data.csv')

# Выведем первые строки для понимания
print(data.head())

Комментарий:

Мы читаем данные о продажах из CSV-файла. В реальности — это может быть выгрузка из 1С, CRM, Excel и так далее. data.head() помогает быстро взглянуть на структуру.

📊 Шаг 2: Немного магии с данными

Допустим, у нас в данных есть колонки: Дата, Регион, Категория, Продажи.

# Приводим даты к нужному формату
data['Дата'] = pd.to_datetime(data['Дата'])

# Группируем по дате и категории
pivot_table = data.pivot_table(
index='Дата',
columns='Категория',
values='Продажи',
aggfunc='sum'
)

# Заполним пустоты нулями
pivot_table = pivot_table.fillna(0)

print(pivot_table.tail())

Комментарий:

Создаем сводную таблицу: по дням и категориям. Это уже почти мини-отчет. Пустые значения заполняем нулями — вдруг кто-то ничего не купил в тот день. Бывает.

📈 Шаг 3: Создаем график

import matplotlib.pyplot as plt

# Настроим стиль графика
plt.style.use('ggplot')

# Строим график
pivot_table.plot(figsize=(12, 6))

# Название и подписи
plt.title('Продажи по категориям')
plt.xlabel('Дата')
plt.ylabel('Сумма продаж')

# Сохраняем график как картинку
chart_filename = 'sales_chart.png'
plt.tight_layout()
plt.savefig(chart_filename)

plt.close()

Комментарий:

Создаем красивый график и сохраняем как PNG. Это пригодится при вставке в Excel. И да — plt.close() нужен, чтобы график не висел в памяти.

📘 Шаг 4: Формируем Excel-отчет

output_file = f"Отчет_продаж_{datetime.today().date()}.xlsx"

with pd.ExcelWriter(output_file, engine='xlsxwriter') as writer:
# Записываем сырые данные
data.to_excel(writer, sheet_name='Исходные данные', index=False)

# Сводная таблица
pivot_table.to_excel(writer, sheet_name='Сводка')

# Получаем workbook и worksheet объекты
workbook = writer.book
worksheet = writer.sheets['Сводка']

# Вставляем график как изображение
worksheet.insert_image('H2', chart_filename)

Комментарий:

Создаем Excel с двумя листами: один — сырые данные, второй — обработанная сводка. Вставляем туда график как картинку. Выглядит презентабельно.

🧼 Шаг 5: Убираем за собой

# Удаляем временный файл с графиком
os.remove(chart_filename)

Комментарий:

Мы чистоплотные — временный файл с графиком больше не нужен.

📦 Финальный результат

В папке появляется Excel-файл:

📁 Отчет_продаж_2025-04-12.xlsx

В нем:

  • Таблица с сырыми данными
  • Красивый лист со сводкой по категориям
  • Визуализация прямо в файле
  • Всё автоматизировано

🚀 Бонус: делаем скрипт регулярным

Хотите, чтобы это делалось по расписанию? Используйте:

  • Windows Task Scheduler или cron для Linux
  • Упакуйте в .bat или .sh файл
  • Или оберните в Flask API для автоматической генерации по запросу

🔚 Итоги

Вы теперь умеете:

  • Обрабатывать данные из CSV
  • Создавать сводные таблицы в pandas
  • Генерировать графики с matplotlib
  • Формировать Excel-файлы с картинками и стилем
  • Делать это регулярно без головной боли

💬 И немного мотивации

Каждый раз, когда вы автоматизируете рутинный отчет, где-то в мире один аналитик встает и аплодирует.

А Excel вздыхает с облегчением.