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

🧠 Как интегрировать Excel с Python для работы с большими объемами данных

Или как не сойти с ума, имея 200 тысяч строк и Excel 2016 Excel — штука удобная, но…
Когда таблица переваливает за 50–100 тысяч строк — он начинает вести себя, как ноутбук в мороз: медленно, капризно и с риском не проснуться. 👉 Решение?
Интеграция с Python.
Python легко жонглирует миллионами строк, а потом отдаёт Excel уже переваренное, чистенькое и с нужными формулами. pip install pandas openpyxl xlsxwriter Допустим, у нас есть файл sales_data.xlsx, который содержит 200 000 строк с продажами по магазинам, регионам и датам. Колонки: Мы хотим: import pandas as pd
# Загружаем Excel-файл (только нужный лист)
df = pd.read_excel('sales_data.xlsx', sheet_name='Продажи')
# Смотрим размер
print(f"Загружено строк: {len(df)}") 💬 Комментарии: # Удалим строки с пустыми значениями в ключевых колонках
df.dropna(subset=['Регион', 'Магазин', 'Сумма'], inplace=True)
# Убедимся, что "Сумма" — это число
df['Сумма'] = pd.to_numeric(df['Сумма'], errors='coerce')
df.dropna(subset=['Сумма'], inplace=
Оглавление

Или как не сойти с ума, имея 200 тысяч строк и Excel 2016

Как интегрировать Excel с Python для работы с большими объемами данных
Как интегрировать Excel с Python для работы с большими объемами данных

🤔 Почему вообще стоит это делать?

Excel — штука удобная, но…

Когда таблица переваливает за 50–100 тысяч строк — он начинает вести себя, как ноутбук в мороз: медленно, капризно и с риском не проснуться.

👉 Решение?

Интеграция с Python.

Python легко жонглирует миллионами строк, а потом отдаёт Excel уже переваренное, чистенькое и с нужными формулами.

🔧 Что мы разберём:

  • Как быстро загрузить огромный Excel-файл в Python
  • Как его почистить, агрегировать и подсчитать всё нужное
  • Как выгрузить обратно в Excel, без тормозов и магии Ctrl+Z
  • Как это автоматизировать, чтобы больше никогда не страдать

📦 Что потребуется:

pip install pandas openpyxl xlsxwriter

  • pandas — главный герой: обработка, фильтрация, расчёты
  • openpyxl — для чтения/записи Excel (особенно .xlsx)
  • xlsxwriter — если хочешь красиво экспортировать обратно

📁 Исходная задача

Допустим, у нас есть файл sales_data.xlsx, который содержит 200 000 строк с продажами по магазинам, регионам и датам.

Колонки:

  • Дата
  • Регион
  • Магазин
  • Товар
  • Количество
  • Сумма

Мы хотим:

  1. Узнать, сколько всего продано по регионам
  2. Определить топ-5 магазинов по выручке
  3. Выгрузить итоги в новый Excel-файл с автоформатированием

🚀 Шаг 1: Загружаем Excel в Python

import pandas as pd

# Загружаем Excel-файл (только нужный лист)
df = pd.read_excel('sales_data.xlsx', sheet_name='Продажи')

# Смотрим размер
print(f"Загружено строк: {len(df)}")

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

  • sheet_name — указываем явно, чтобы не тащить всё подряд.
  • pandas читает Excel быстро, но не стоит перегружать — берём только нужное.

🧹 Шаг 2: Чистим данные

# Удалим строки с пустыми значениями в ключевых колонках
df.dropna(subset=['Регион', 'Магазин', 'Сумма'], inplace=True)

# Убедимся, что "Сумма" — это число
df['Сумма'] = pd.to_numeric(df['Сумма'], errors='coerce')
df.dropna(subset=['Сумма'], inplace=True)

# Приводим все регионы к единому регистру
df['Регион'] = df['Регион'].str.title()

💬 Почему это важно?

  • Пропуски и мусор в больших данных → страшные баги.
  • Типы данных часто едут из Excel — например, числа приходят как строки.
  • title() нормализует москва, МОСКВА, Москва в одно.

📊 Шаг 3: Группировка и агрегация

Продажи по регионам:

sales_by_region = df.groupby('Регион')['Сумма'].sum().sort_values(ascending=False)

print(sales_by_region.head())

Топ-5 магазинов по выручке:

top_shops = df.groupby('Магазин')['Сумма'].sum().sort_values(ascending=False).head(5)

print(top_shops)

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

  • groupby — это как сводная таблица на стероидах.
  • sum() — суммирует выручку.
  • sort_values() — позволяет понять, кто топ, а кто аутсайдер.

💾 Шаг 4: Выгрузка обратно в Excel

with pd.ExcelWriter('результаты_анализа.xlsx', engine='xlsxwriter') as writer:
sales_by_region.to_excel(writer, sheet_name='По регионам')
top_shops.to_excel(writer, sheet_name='Топ магазины')

# Получаем доступ к объекту книги
workbook = writer.book
worksheet = writer.sheets['По регионам']

# Формат для заголовков
header_format = workbook.add_format({'bold': True, 'bg_color': '#D7E4BC'})

# Применим формат к первой строке
worksheet.set_row(0, None, header_format)

# Подгоним ширину колонок
worksheet.set_column('A:B', 20)

💬 Здесь начинается магия:

xlsxwriter позволяет
стилизовать Excel, как ты хочешь: шрифты, цвета, ширина — всё под контролем.

🔁 Бонус: Цикл автоматизации

Ты можешь завернуть это всё в одну функцию, и потом просто вызывать её по расписанию, с новыми файлами:

def process_sales(filepath):
df = pd.read_excel(filepath)
df.dropna(subset=['Регион', 'Магазин', 'Сумма'], inplace=True)
df['Сумма'] = pd.to_numeric(df['Сумма'], errors='coerce')
df['Регион'] = df['Регион'].str.title()

sales_by_region = df.groupby('Регион')['Сумма'].sum().sort_values(ascending=False)
top_shops = df.groupby('Магазин')['Сумма'].sum().sort_values(ascending=False).head(5)

with pd.ExcelWriter('анализ_' + filepath, engine='xlsxwriter') as writer:
sales_by_region.to_excel(writer, sheet_name='По регионам')
top_shops.to_excel(writer, sheet_name='Топ магазины')

print("Файл готов 🎉")

📈 Результат

Ты получил:

✅ Полноценную аналитику из огромной Excel-таблицы

✅ Автоматизированную обработку данных

✅ Красивый Excel-отчёт без тормозов

✅ Возможность запускать это каждый день / неделю / по кнопке

🧠 Напоследок

Вот почему Excel + Python — идеальная пара:

  • Excel: понятный для пользователей и менеджеров
  • Python: мощный для обработки, расчётов и автоматизации

Да, Excel — это удобная кофемашина, но Python — это бариста, который знает, как сделать 500 чашек в час ☕🐍