Простейший график построения прогнозов на Питоне
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
# Данные: выручка за 6 месяцев
months = np.array([1, 2, 3, 4, 5, 6]).reshape(-1, 1)
revenue = np.array([200, 250, 270, 300, 320, 350])
# Модель линейной регрессии
model = LinearRegression()
model.fit(months, revenue)
# Прогноз на следующие 3 месяца
future_months = np.array([7, 8, 9]).reshape(-1, 1)
predicted_revenue = model.predict(future_months)
# Визуализация
plt.figure(figsize=(8, 5))
plt.scatter(months, revenue, color='blue', label='Факт')
plt.plot(months, model.predict(months), color='green', label='Линейная модель')
plt.plot(future_months, predicted_revenue, color='red', linestyle='--', label='Прогноз')
plt.xlabel('Месяц')
plt.ylabel('Выручка (тыс. руб.)')
plt.title('Прогноз выручки на основе линейной регрессии')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()
# Проверка модели с помощью кросс-валидации
scores = cross_val_score(model, months, revenue, cv=3, scoring='r2')
print(f'Качество модели (R2, кросс-валидация): {scores.mean():.2f}')
Простейший сценарный анализ на Питоне
import numpy as np
import matplotlib.pyplot as plt
# Данные: базовая выручка и себестоимость
base_revenue = 300
base_cost = 200
# Внешние факторы (например, курсы валют и цены на сырьё)
currency_factor = 1.05 # курс валюты вырос на 5%
raw_material_factor = 1.10 # цены на сырьё выросли на 10%
# Сценарии:
# Базовый
revenue_base = base_revenue
cost_base = base_cost
# Оптимистичный: рост выручки +10%, снижение себестоимости -5%
revenue_opt = base_revenue * 1.10
cost_opt = base_cost * 0.95
# Пессимистичный: рост себестоимости +15% из-за внешних факторов
revenue_pess = base_revenue
cost_pess = base_cost * raw_material_factor * currency_factor
# Чистая прибыль
profit_base = revenue_base - cost_base
profit_opt = revenue_opt - cost_opt
profit_pess = revenue_pess - cost_pess
# Визуализация
scenarios = ['Базовый', 'Оптимистичный', 'Пессимистичный']
profits = [profit_base, profit_opt, profit_pess]
plt.figure(figsize=(8, 5))
bars = plt.bar(scenarios, profits, color=['blue', 'green', 'red'])
plt.ylabel('Чистая прибыль (тыс. руб.)')
plt.title('Сценарный анализ прибыли')
plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()
plt.show()
Простейший расчет финансовых показателей
import pandas as pd
# Чтение данных из CSV
df = pd.read_csv('financial_data.csv')
# Рассчёт маржинальности (%)
df['Маржинальность'] = ((df['Выручка'] - df['Себестоимость']) / df['Выручка']) * 100
# Рассчёт рентабельности (%)
df['Рентабельность'] = (df['Чистая прибыль'] / df['Выручка']) * 100
# Вывод результатов
print(df[['Выручка', 'Себестоимость', 'Чистая прибыль', 'Маржинальность', 'Рентабельность']])
import pandas as pd
# Загружаем данные
df = pd.read_excel('financial_data.xlsx')
# Посмотрим на данные
print(df.head())
# Добавляем колонку EBITDA
df['EBITDA'] = df['Выручка'] - df['Себестоимость'] - df['Операционные расходы']
# Выводим результат
print(df[['Период', 'EBITDA']])
import pandas as pd
# Пример данных: клиент, выручка, количество заказов
data = {'Клиент': ['A', 'B', 'C', 'D', 'E'],
'Выручка': [50000, 30000, 10000, 20000, 5000],
'Заказы': [50, 30, 5, 10, 2]}
df = pd.DataFrame(data)
# ABC-анализ
df['ABC'] = pd.qcut(df['Выручка'], q=3, labels=['C', 'B', 'A'])
# XYZ-анализ
df['XYZ'] = pd.qcut(df['Заказы'], q=3, labels=['Z', 'Y', 'X'])
print(df)
# Выделение клиентов группы AX
target_clients = df[(df['ABC'] == 'A') & (df['XYZ'] == 'X')]
print("Клиенты группы AX:")
print(target_clients)
# Средняя выручка для клиентов A и B
mean_revenue_AB = df[df['ABC'].isin(['A', 'B'])]['Выручка'].mean()
print(f"Средняя выручка клиентов A и B: {mean_revenue_AB:.2f} руб.")
# Сводная таблица для анализа групп ABC и XYZ
pivot_table = pd.pivot_table(
df,
index='ABC',
columns='XYZ',
values='Выручка',
aggfunc='sum',
fill_value=0
)
print("Сводная таблица по группам ABC и XYZ:")
print(pivot_table)
import seaborn as sns
import matplotlib.pyplot as plt
# Визуализация сводной таблицы в виде тепловой карты
plt.figure(figsize=(8, 6))
sns.heatmap(pivot_table, annot=True, fmt='.0f', cmap='YlGnBu')
plt.title('ABC/XYZ-анализ: распределение выручки')
plt.xlabel('XYZ')
plt.ylabel('ABC')
plt.tight_layout()
plt.show()
import pandas as pd
# 1. Сбор данных
revenue_df = pd.read_excel('revenue.xlsx')
expenses_df = pd.read_excel('expenses.xlsx')
taxes_df = pd.read_excel('taxes.xlsx')
# 2. Объединение таблиц
report = revenue_df.merge(expenses_df, on='Месяц')
report = report.merge(taxes_df, on='Месяц')
# 3. Расчёт показателей
report['Чистая прибыль'] = report['Выручка'] - report['Расходы'] - report['Налоги']
report['Маржинальность (%)'] = ((report['Выручка'] - report['Расходы']) / report['Выручка']) * 100
# 4. Автоматизация выгрузки
with pd.ExcelWriter('financial_report.xlsx') as writer:
report.to_excel(writer, index=False, sheet_name='Финансовый отчёт')
print("Финансовый отчёт успешно создан!")
import pandas as pd
import matplotlib.pyplot as plt
# Чтение итогового отчёта
report = pd.read_excel('financial_report.xlsx')
# Визуализация
plt.figure(figsize=(10, 6))
x = report['Месяц']
bar_width = 0.25
plt.bar(x, report['Выручка'], width=bar_width, label='Выручка')
plt.bar(x, report['Расходы'], width=bar_width, label='Расходы', bottom=report['Выручка'] - report['Чистая прибыль'])
plt.bar(x, report['Чистая прибыль'], width=bar_width, label='Чистая прибыль', bottom=0)
plt.xlabel('Месяц')
plt.ylabel('Тысяч рублей')
plt.title('Финансовый отчёт: выручка, расходы и чистая прибыль')
plt.legend()
plt.grid(axis='y', linestyle='--', alpha=0.5)
plt.tight_layout()
plt.savefig('financial_report_chart.png')
plt.show()