Найти в Дзене
Анастасия Софт

💼 Как с помощью Python и Excel создать финансовую модель для бизнеса

Или как прогнозировать деньги, не вызывая шамана Финансовая модель — это как карта сокровищ для бизнеса. Только вместо «X» у нас — будущая прибыль, расходы, инвестиции и немного Excel-магии. И если раньше всё это делали с помощью утомительных формул и макросов, то сегодня... мы используем Python! Быстро, гибко и не скучно. В этой статье: pip install pandas openpyxl matplotlib seaborn Представим, у нас есть Excel-файл financial_data.xlsx с тремя листами: import pandas as pd
# Загружаем данные с трёх листов Excel-файла
income = pd.read_excel('financial_data.xlsx', sheet_name='income')
expenses = pd.read_excel('financial_data.xlsx', sheet_name='expenses')
investments = pd.read_excel('financial_data.xlsx', sheet_name='investments')
# Считаем суммарные значения
total_income = income['Сумма'].sum()
total_expenses = expenses['Сумма'].sum()
total_investments = investments['Сумма'].sum()
print(f"💰 Доходы: {total_income}")
print(f"💸 Расходы: {total_expenses}")
print(f"📈 Инвестиции: {total_
Оглавление

Или как прогнозировать деньги, не вызывая шамана

🧠 Введение

Финансовая модель — это как карта сокровищ для бизнеса. Только вместо «X» у нас — будущая прибыль, расходы, инвестиции и немного Excel-магии.

И если раньше всё это делали с помощью утомительных формул и макросов, то сегодня... мы используем Python! Быстро, гибко и не скучно.

В этой статье:

  • Покажем, как Python + Excel = 🔥
  • Разберём 5 практических задач по созданию финансовой модели
  • Каждая строчка кода будет с комментарием
  • Будет весело, даже если ты бухгалтер 😉

📦 Что установим?

pip install pandas openpyxl matplotlib seaborn

📁 Структура данных

Представим, у нас есть Excel-файл financial_data.xlsx с тремя листами:

  • income — доходы
  • expenses — расходы
  • investments — инвестиции

✅ Пример 1: Загрузка данных и проверка баланса

import pandas as pd

# Загружаем данные с трёх листов Excel-файла
income = pd.read_excel('financial_data.xlsx', sheet_name='income')
expenses = pd.read_excel('financial_data.xlsx', sheet_name='expenses')
investments = pd.read_excel('financial_data.xlsx', sheet_name='investments')

# Считаем суммарные значения
total_income = income['Сумма'].sum()
total_expenses = expenses['Сумма'].sum()
total_investments = investments['Сумма'].sum()

print(f"💰 Доходы: {total_income}")
print(f"💸 Расходы: {total_expenses}")
print(f"📈 Инвестиции: {total_investments}")

# Проверим баланс
net_profit = total_income - total_expenses - total_investments
print(f"\n📊 Чистая прибыль: {net_profit}")

🔍 Что происходит:

  • Загружаем таблицы по листам
  • Суммируем все значения
  • Вычитаем расходы и инвестиции — получаем реальный результат месяца

📈 Пример 2: Визуализируем динамику доходов и расходов по месяцам

import matplotlib.pyplot as plt

# Группируем доходы и расходы по месяцам
monthly_income = income.groupby('Месяц')['Сумма'].sum()
monthly_expenses = expenses.groupby('Месяц')['Сумма'].sum()

# Строим график
plt.figure(figsize=(10, 6))
plt.plot(monthly_income.index, monthly_income.values, label='Доходы', marker='o')
plt.plot(monthly_expenses.index, monthly_expenses.values, label='Расходы', marker='x')
plt.title("📊 Доходы и расходы по месяцам")
plt.xlabel("Месяц")
plt.ylabel("Сумма")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.savefig("income_vs_expenses.png")

print("✅ График сохранён как income_vs_expenses.png")

📌 Бонус: можно вставить график прямо в Excel (через openpyxl или xlwings).

🔮 Пример 3: Прогнозирование доходов и расходов на 6 месяцев вперёд

# Предположим, что у нас есть дата и сумма
from datetime import timedelta

# Преобразуем дату
income['Дата'] = pd.to_datetime(income['Дата'])
expenses['Дата'] = pd.to_datetime(expenses['Дата'])

# Группируем по месяцу
monthly = pd.DataFrame({
'Доходы': income.groupby(income['Дата'].dt.to_period('M'))['Сумма'].sum(),
'Расходы': expenses.groupby(expenses['Дата'].dt.to_period('M'))['Сумма'].sum()
})

# Скользящее среднее за 3 месяца
forecast = monthly.rolling(3).mean().dropna().tail(1)

# Прогнозируем на следующие 6 месяцев
for i in range(1, 7):
forecast.index = [forecast.index[-1] + 1]
monthly = pd.concat([monthly, forecast])

print("📅 Прогноз на 6 месяцев вперёд:\n", monthly.tail(6))

📌 Для новичков: да, это упрощённый способ, но он уже помогает оценить тренды.

👨‍💻 Для профи: хочешь Prophet, ARIMA, LightGBM — тоже покажу!

🏦 Пример 4: Анализ рентабельности инвестиций (ROI)

# Предположим, у нас есть дата инвестиций и возвраты
# Подсчитаем ROI = (Доход от инвестиций - сумма инвестиций) / сумма инвестиций

# Группируем возвраты по проектам
returns = investments.groupby('Проект')['Возврат'].sum()
costs = investments.groupby('Проект')['Сумма'].sum()

roi = ((returns - costs) / costs) * 100
roi = roi.round(2)

print("📈 ROI по проектам:\n", roi)

📌 Теперь ты знаешь, какой проект — 💸, а какой — 🚀

📤 Пример 5: Генерация Excel-отчёта с итогами и форматированием

from openpyxl import Workbook
from openpyxl.styles import Font

# Создаём новый файл
wb = Workbook()
ws = wb.active
ws.title = "Финансовый отчёт"

# Записываем данные
ws.append(["Метрика", "Сумма"])
ws.append(["Доходы", total_income])
ws.append(["Расходы", total_expenses])
ws.append(["Инвестиции", total_investments])
ws.append(["Чистая прибыль", net_profit])

# Жирный шрифт для заголовка
for cell in ws[1]:
cell.font = Font(bold=True)

# Сохраняем файл
wb.save("financial_report.xlsx")

print("📁 Финансовый отчёт сохранён как financial_report.xlsx")

🧩 Бонус: Структура модели для дашборда или API

Ты можешь превратить эту модель в:

  • 📊 Streamlit-дэшборд
  • 📡 Flask API с прогнозом
  • 💼 Телеграм-бота, который шлёт отчёты по команде
  • ⏰ Автоматический отчёт каждый месяц через cron или schedule

📋 Что мы умеем?

-2

🧠 Вывод

Финансовая модель — это не только для MBA и CFO. С помощью Python и Excel ты можешь:

  • Анализировать бизнес-метрики
  • Быстро строить отчёты
  • Делать прогнозы и находить слабые места
  • Сохранять кучу времени на рутине

🚀 Что дальше?

  • Хочешь добавить налоговую модель?
  • Или учесть сезонность?
  • Или превратить это в веб-приложение для команды?

Пиши — сделаю следующую часть 😉