Simulative – Telegram
7.39K subscribers
1.7K photos
70 videos
1 file
1.26K links
Привет! Мы — образовательная платформа в сфере аналитики Simulative: simulative.ru

Создаём курсы-симуляторы, где обучаем не на «апельсинках», а на кейсах из реального бизнеса.

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
Как ускорить apply(). Часть 1

Привет! На связи Кристина Желтова, ментор курса «ML-инженер» 👋🏻

Представьте себе ситуацию: вы обрабатываете датасет с 1 млн строк. Пишете простой код:

df['new_col'] = df.apply(lambda x: x['col1'] + x['col2'], axis=1)


Запускаете. Проходит минута, вторая, пятая... Наконец после 15 минут вычисления завершились.

Потом приходит коллега, делает:

df['new_col'] = df['col1'].values + df['col2'].values


Запускает и получает результат за 0.15 секунды.

Что произошло? 🤯

Именно так выглядит разница между apply() и векторизацией, и это одно из самых узких мест в обработке данных.

Почему apply() такой медленный?

apply() работает примерно так:

Для каждой строки датасета (1 млн штук!):
Взять одну строку;
Передать в функцию lambda;
Вызвать функцию (потратив время и «силы» на вызов — overhead);
Получить результат;
Вернуть в датасет.

Результат: 1 млн * overhead = ОЧЕНЬ медленно.

Векторизация же работает так:

Взять весь столбец col1;
Взять весь столбец col2;
Сложить их поэлементно (в оптимизированном коде на C);
Результат: одна операция, очень быстро.

Итого, в apply() 1 млн функций вызовов, а в векторизации 1 операция!

Проведём небольшой реальный тест:

import pandas as pd
import numpy as np
import time

# Создаём датасет
df = pd.DataFrame({
'col1': np.random.rand(1_000_000),
'col2': np.random.rand(1_000_000)
})

# Медленный apply()
start = time.time()
df['result_slow'] = df.apply(lambda x: x['col1'] + x['col2'], axis=1)
slow_time = time.time() - start
print(f"apply(): {slow_time:.2f} секунд")

# Быстрая векторизация
start = time.time()
df['result_fast'] = df['col1'].values + df['col2'].values
fast_time = time.time() - start
print(f"Векторизация: {fast_time:.4f} секунд")

# Разница
print(f"Ускорение: {slow_time / fast_time:.0f}x")


Как результат — ускорение в сотни раз и даже больше!

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥52🎉1
Как ускорить apply(). Часть 2

В примере выше использовалась простая арифметическая функция, но можно ли ускорить apply с произвольной сложной функцией? Ответ — да, можно! Но с помощью чуть более сложной техники — numba.

Numba — это JIT (Just-In-Time) компилятор для Python, который работает по следующей схеме: в первый раз видит функцию, анализирует типы и компилирует в машинный код. А потом просто запускает скомпилированный машинный код, и скорость выполнения близка близка к C/C++.

import pandas as pd
import numpy as np
import time
from numba import jit

# Создаём датасет
np.random.seed(42)
df = pd.DataFrame({
'col1': np.random.rand(1_000_000),
'col2': np.random.rand(1_000_000),
'col3': np.random.rand(1_000_000),
})

def complex_logic(row):
result = 0
# Имитируем "сложную логику" с несколькими условиями
if row['col1'] > 0.5:
result += row['col2'] * row['col3'] * 2
else:
result += row['col2'] * row['col3'] * 0.5

if row['col2'] > row['col3']:
result += row['col1'] * 10
else:
result += row['col1'] * 5
return result

# Медленный apply()
start = time.time()
df['result_slow'] = df.apply(complex_logic, axis=1)
slow_time = time.time() - start

print(f"Время выполнения: {slow_time:.2f} секунд")

# Быстрый способ через numba
@jit(nopython=True) # numba пытается скомпилировать в машинный код
def complex_logic_fast(col1, col2, col3): # Переписываем функцию из pandas на numpy
result = np.empty(len(col1))

for i in range(len(col1)):
res = 0
if col1[i] > 0.5:
res += col2[i] * col3[i] * 2
else:
res += col2[i] * col3[i] * 0.5

if col2[i] > col3[i]:
res += col1[i] * 10
else:
res += col1[i] * 5
result[i] = res
return result

# Первый вызов: компиляция
df['result_fast'] = complex_logic_fast(df['col1'].values, df['col2'].values, df['col3'].values)

# Второй вызов: уже скомпилировано (очень быстро)
start = time.time()
result_fast_2 = complex_logic_fast(df['col1'].values, df['col2'].values, df['col3'].values)
fast_time = time.time() - start
print(f"Время выполнения (уже скомпилировано): {fast_time:.4f} секунд")


Итого, numba = Python + компиляция в машинный код = скорость C с синтаксисом Python.

Ставьте ❤️, если было полезно!

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥84
Приходите на вебинар по трендам в аналитике — 2026

В последний день нашего адвента мы соберём аналитиков из Альфа-Банка, Авито и eLama, чтобы подвести итоги 2025‑го и посмотреть на рынок их глазами.

Вы узнаете, какой опыт в портфолио повысит шансы на собеседование, и какие «харды» и «софты» прокачивать в 2026 году, чтобы повысить шансы на трудоустройство.​

➡️ Перейти в адвент-календарь

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🎄42
Как люди на самом деле читают дашборды: 3 главных паттерна

Привет! На связи Анастасия Кузнецова, автор тренинга «Осмысленные дашборды» и канала настенька и графики 👋🏻

Пользователь никогда не читает ваш дашборд построчно, как книгу. Его взгляд сканирует экран по готовым шаблонам, которые мы можем предугадать и использовать.

Процесс чтения всегда зависит от задачи (что нужно найти на дэше), опыта (как он привык это делать) и макета (куда мы его направляем).

В связи с этим существует 3 ключевых паттерна сканирования дэшей:

📍 F-паттерн — взгляд цепляется за верхний левый угол, затем спускается по левому краю. Это классический вариант для тех, кто читает слева направо, поэтому обычно реклама в поисковой выдаче слева сверху сильно дороже, чем сбоку справа.

📍 Пятнистый паттерн (Spotted) — глаз выхватывает яркие, контрастные элементы: иконки, крупные цифры, цветные графики.

📍 Слоёный пирог (Layer-Cake) — внимание переключается между заголовками и подзаголовками.

Примеры визуализации паттернов собрала в моём канале.

📉 По итогу расположение ключевых метрик и инсайтов должно совпадать с естественным движением взгляда. Самую важную информацию, которую пользователь должен увидеть, в первую очередь располагаем в левом верхнем углу. Снижаем контрастность ярких элементов, если они не так важны — например, берём пастельные оттенки для областных графиков — и просто держим в уме, что они будут притягивать на себя внимание и если они этого делать не должны, то тип графика лучше пересмотреть. Чётко выделяем заголовки и дашборда, и графиков, чтобы пользователю было проще ориентироваться в информации на дашборде.

➡️ Как намеренно проектировать дашборды под эти паттерны? Разбираем на тренинге «Осмысленные дашборды»: от расстановки акцентов до вёрстки, которая приведёт к решению. Присоединяйтесь к потоку — ранние цены держатся до конца декабря!


📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥43👍1
Где мои деньги? Разбираем траты за 1 вечер

Знакомо чувство, когда в конце месяца смотрите на счёт и думаете: «На что я всё потратил(а)?»

Что, если взять под контроль свои финансы не через боль и строгие ограничения, а с помощью простого анализа?

Приглашаем на практический вебинар, где разберём ваши траты как аналитик — по шагам и на реальных данных. Возьмём обычную банковскую выписку и прямо на ваших глазах:

Разложим все траты по понятным категориям;
Найдём «чёрные дыры», куда утекают деньги почти незаметно;
Соберём простой и реалистичный план расходов и накоплений на следующий год.

Это идеально для вас, если:
💪 Вы хотите навести порядок в финансах, но не знаете, с чего начать;
💪 Хотите увидеть, как работа с данными решает реальные жизненные задачи.

Вести разбор будет Вугар Дамиров, Data Analyst Team Lead с 7‑летним опытом. Вы увидите, как думает практикующий аналитик.


Встречаемся 25 декабря в 19:00 МСК. Узнайте, куда на самом деле уходят ваши деньги, и спланируйте новый год по-новому!

📌 Зарегистрироваться на вебинар

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥763
Simulative
Карьера в аналитике в 2026 году: на что надеяться? Говорят, рынок аналитики переполнен джунами, нейросети скоро заменят начинающих и вход в аналитику будет закрыт. А что говорят те, кто нанимает и строит команды в 2026 году? Мы собрали трёх экспертов из…
Через 2 часа расскажем, как прокачать себя в аналитике в 2026 году

На вебинаре вы получите:
​Честную картину рынка аналитиков: как нанимали джунов в 2025 году и какие тренды сформировались за год.​
Понимание, какой опыт в портфолио повысит шансы на собеседование.​
Ориентиры на 2026 год: какие «харды» и «софты» прокачивать, чтобы повысить шансы на трудоустройство.​
Ответы на свои вопросы и план, куда вкладывать время и силы, чтобы оставаться востребованным.​

Присоединяйтесь к обсуждению!

➡️ Зарегистрироваться и получить ссылку на вебинар

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥74👍2
Как я стал руководителем аналитики, и что понял по пути

Привет! На связи Вячеслав Потапов — я руковожу продуктовой аналитикой в Lamoda и менторю студентов курсов «Аналитик данных» и «BI-аналитик» 👋🏻

Я всегда мечтал стать руководителем аналитики. Но начинал как обычный аналитик: писал SQL, строил отчёты и радовался, когда цифры сходились. И здесь была моя первая ошибка.

Ошибка № 1. Думать, что хороший аналитик — это тот, кто хорошо считает

Долгое время мне казалось, что главное — это сложные запросы и красивые дашборды. Но рост начался тогда, когда я стал задавать другие вопросы:

Зачем считается метрика? Кто по ней принимает решение? Что изменится в бизнесе?


Ошибка № 2. Недооценивать коммуникацию

Данные не говорят сами за себя. Если аналитик не умеет объяснить выводы, защитить расчёт и донести риски, то его работа остается невостребованной.

И отдельно скажу про тестовые задания. Тестовое — это не экзамен. Я смотрю на структуру, аккуратность и комментарии. Фраза «Здесь я сделал допущение из-за ограничений данных» часто ценнее идеального ответа без объяснений.


Если вы только начинаете

Аналитика — это не про «знать всё». Это про вопросы, сомнения в цифрах и понимание бизнеса. Если сейчас сложно, то это нормальный этап роста.

Если откликается, ставьте реакции — я с радостью буду делиться дальше опытом про карьеру, собеседования и ожидания от рынка!

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍643
👩‍💻 Первые шаги в Git и GitHub 👩‍💻

Новое видео на канале! Сегодня мы разберём один из важнейших инструментов аналитика — систему контроля версий Git и хранилище репозиториев GitHub.

Павел Беляев, тимлид дата-аналитиков в Яндекс eLama и ментор курса «Аналитик данных», покажет, что нужно установить на компьютер, чтобы всё работало корректно. А также вместе с ним мы свяжем удалённый и локальный репозиторий, запушим свою первую ветку и внесём изменения с помощью коммитов.

Смотрите там, где удобно:
📹 YouTube
📺 VK Видео

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1365
This media is not supported in your browser
VIEW IN TELEGRAM
Через 2 часа вы узнаете, куда уходят ваши деньги

Вугар Дамиров ждёт вас на вебинаре! Разберём ваши траты как аналитик — возьмём обычную банковскую выписку, разложим все траты по категориям и соберём простой и реалистичный план расходов и накоплений на следующий год. Присоединяйтесь к вебинару в 19:00 МСК!

➡️ Зарегистрироваться и получить ссылку на вебинар

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52😁21
This media is not supported in your browser
VIEW IN TELEGRAM
3🔥22
This media is not supported in your browser
VIEW IN TELEGRAM
🔥322
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает Simulative в праздники

Делимся информацией, как будет работать наша поддержка и менторы в праздники, чтобы вы могли планировать свои дела и обращения к нам 🙂

Поддержка:
🟠 До 30 декабря включительно: работаем в обычном режиме;
🟠 С 31 декабря по 2 января: отдыхаем! Мы принимаем ваши обращения, но ответим на них чуть позже;
🟠 С 3 по 11 января: поддерживаем ваше обучение в обычном режиме.

Преподаватели и менторы:
🟠 До 30 декабря включительно: работаем в обычном режиме;
🟠 С 31 декабря по 2 января: отдыхаем! Мы принимаем ваши обращения, но ответим на них чуть позже;
🟠 С 3 по 11 января: поддерживаем ваше обучение в обычном режиме, но возможны увеличенные интервалы ответов.

Если вы хотите заниматься в праздники — преподаватели и кураторы будут отвечать в эти дни, просто чуть дольше в течение дня. Если наоборот, не хотите учиться на каникулах — сможете отдохнуть, ведь все дедлайны проектов продлены с учетом праздников.

😶 Если ещё не успели приобрести обучение, можно купить сейчас, а начать учиться после праздников! Выбирайте обучение и присоединяйтесь к потокам: simulative.ru


📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄432👍1
Как из декрета выйти на работу мечты. История студента Simulative

Декрет — время не только для заботы о ребёнке, но и для переосмысления карьеры. Людмила Булычева, имея в прошлом лишь университетский С++ и десятилетие в другой сфере, решила кардинально всё изменить. Её цель — мир анализа данных.

Спустя полгода обучения она уже работает аналитиком в ритейле. Как онлайн-курс помог ей совершить этот рывок? Делимся её честным отзывом в карточках.

Если вдруг после прочтения вы вдохновились пройти обучение на курсе «Аналитик данных», то вы ещё успеваете записаться на последний поток в этом году, который стартует уже сегодня, 26 декабря!


📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥42
🎲 Ловите предсказание на 2026 год

Проверим теорию вероятности в деле? Ищите эмодзи кубика в своём смартфоне и отправляйте его в комментарии к этому посту. Сколько точек вам выпадет, такое предсказание с картинки и исполнится.

Узнайте, что вас ждёт в 2026 году! Поехали ⬇️

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1042😁1
Типичная ошибка в SQL: не использовать CASE 😱

А вы используете CASE? Иногда вы можете сократить свои запросы в несколько раз, используя его, но мы часто наблюдаем, что новички игнорируют использование этого оператора.

Например, была задача — вывести поле sum со знаком -, если type=1 и со знаком +, если type=0.

Пользователь предложил такое решение:

SELECT id, sum FROM transactions t 
WHERE type = 0
UNION ALL
SELECT id, -sum FROM transactions t
WHERE type = 1


В целом, не так плохо. Но это всего лишь промежуточный запрос, задача была намного масштабней и таких конструкций в итоге было наворочено очень много.

А вот то же самое с CASE:

SELECT id,
CASE
WHEN type = 0
THEN sum
ELSE -sum
END
FROM transactions t


Согласитесь, это намного лаконичнее и понятнее! 👍

Более того, CASE можно использовать ещё много для чего. Например, чтобы сделать из «длинной» таблицы «широкую». Или для суммирования/подсчёта количества внутри агрегатных функций (да, CASE можно использовать внутри агрегатных функций!).


А еще, кстати, COALESCE — это просто «синтаксический сахар» и обёртка вокруг CASE.

Используя оператор CASE в SQL, вы можете легко выполнять различные условные операции и улучшать читаемость ваших запросов. Не игнорируйте этот мощный инструмент!

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥82
Неважно, насколько красивы визуализации, если данные поступают из неправильных источников или загружаются неоптимально.

В статье разобрались, какие вообще существуют источники данных и как выбрать подходящий по чек-листу:

https://simulative.ru/blog/power-bi-data-sources

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥22
Pandas или PySpark? Разбираем сценарии применения

Многие привыкли думать, что PySpark больше подходит для больших данных, а Pandas — для маленьких таблиц. В этом ролике мы разберём реальные критерии выбора того или иного инструмента. Спойлер: главное различие в их использовании — не в объёме данных, а в архитектуре обработки и запроса.

В видео Илья Ковалёв, старший аналитик данных в Dodo Brands, расскажет, как работают эти инструменты, а в конце даст чек-лист для ваших рабочих задач.

Смотрите там, где удобно:
📹 YouTube
📺 VK Видео

📊 Simulative
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥22