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

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

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
14
Приглашаем на персональную эксурсию в Симулятор 🔥

Наверняка вы много времени тратите на обучение - читаете статьи, решаете задачки, проходите курсы да и просто ищите информацию. Но путь в аналитику все еще не закончен - есть непонятные темы, «белые пятна», а с собеседований приходят отказы. Есть такое?

Тогда вместо часа чтения обучающих статей и просмотра видео проведите этот час с нами в Симуляторе «Аналитик данных»!

Мы сапожники с сапогами: наша команда несколько раз с нуля отстраивала аналитику в крупных компаниях, а сейчас мы строим сразу несколько data-driven компаний - нам есть, чем вас удивить!

За час в формате персонального созвона в Google Meet мы вам покажем и расскажем:

- Как выглядит идеальное портфолио (на примере реальных людей)
- Как выстроить обучение, чтобы максимально быстро устроиться аналитиком (даже с нуля)
- Почему SQL и Python - не основной навык аналитика


🔗 Чтобы записаться на персональную экскурсию прямо сейчас, просто перейдите по ссылке: simulative.ru/excursion
🔥42👍2
🔥 Долой длинные строки в Python

Во время код-ревью мы часто сталкиваемся с длинными строками кода, которые даже не влезают в экран. И казалось бы - они содержат настолько «стройную» информацию, что даже не знаешь, где (и зачем) поставить перенос на следующую строку.

Вот несколько случаев, где это встречается особенно часто:

* Длинные строки
* Большое количество аргументов в функции
*
method chaining в Pandas

Рассмотрим такой «длинный» код на примере Pandas. Согласитесь, выглядит жутко:

df = coderun[coderun["cohort"] >= "2022-01"].
groupby(["cohort", "language", "user_id"])["problem_id"].agg("nunique").
groupby(["cohort", "language"]).agg(np.mean).reset_index().pivot_table(
values="problem_id", columns=["language"], index=["cohort"])


А теперь давайте приведем код в порядок. Есть, как минимум, два метода борьбы с такими ситуациями.

🔵 Перенос строки с помощью обратного слеша


Достаточно поставить в конце строки обратный слеш и Python будет воспринимать весь написанный код как единую строку.

df = coderun[coderun["cohort"] >= "2022-01"] \
.groupby(["cohort", "language", "user_id"])["problem_id"] \
.agg("nunique") \
.groupby(["cohort", "language"]) \
.agg(np.mean) \
.reset_index() \
.pivot_table(values="problem_id", columns=["language"], index=["cohort"]


Сами видите - код стал в разы более читаемым и даже компактным.

🔵 Оборачивание круглыми скобками

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

df = (
coderun[coderun['cohort'] >= '2022-01']
.groupby(['cohort', 'language', 'user_id'])['problem_id']
.agg('nunique')
.groupby(['cohort', 'language'])
.agg(np.mean)
.reset_index()
.pivot_table(values='problem_id', columns=['language'], index=['cohort'])
)


На наш взгляд, этот вариант даже лучше - нет лишних символов и код выглядит еще более аккуратным.

- - - - -

Записывайтесь на наш бесплатный курс по Pandas: simulative.ru/pandas , чтобы прокачать свои навыки на реальных бизнес-кейсах!

#python #pandas
🔥22👍83
Кейс по SQL: Анализ продаж аптечной сети 🔥

Абсолютно любой бизнес сталкивается с потребностью расчета продуктовых метрик - ARPPU, LTV, Lifetime и другие. Если бизнес их не считает и не улучшает - он умирает. Поэтому навык расчета этих метрик в SQL для любого аналитика - абсолютный must have.

И недавно мы проводили закрытую трансляцию, где анализировали эти метрики на примере аптечной сети. А сегодня мы рады поделиться с вами записью этого кейса - там вас ждет только концентрация полезности, лайфхаков SQL и профессиональных приемов.

Скорее смотрите, чтобы не пропустить!

👉[ПОСМОТРЕТЬ КЕЙС]👈
7👍5🔥3
Собираем портфолио аналитика: когортный анализ LTV в SQL 🔥

Приглашаем вас на интенсив, где мы в прямом эфире будем проводить когортный анализ LTV в SQL на примере бонусной системы 🚀

📅 Дата и время: 13 декабря, 19:00 по Мск
🕘 Спикер: Андрон Алексанян, CEO Simulative / IT Resume


🔗 Ссылка для записи на интенсив: [ссылка]

По итогу интенсива вы:

- Глубоко разберетесь с LTV и механикой когортного анализа
- Научитесь писать красивый SQL-запрос для проведения когортного анализа
- Сформулируете бизнес-выводы на основании анализа
- Упакуете впечатляющий кейс в портфолио


Интенсив подойдет всем — от новичков и до тех, кто уже знаком с SQL и аналитикой.

В прямом эфире мы также расскажем об ошибках составления портфолио, правилах составления «продающего» портфолио, а также ошибках, которые делают абсолютно все начинающие аналитики.

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

🔗 Ссылка для записи на интенсив: [ссылка]
👍6🔥42
🔥 Продуктовая метрика LIFETIME

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

И ситуация с любым продуктом точно такая же - большинство людей перестанут им пользоваться, как только пропадет интерес или потребность, в то время как некоторые будут пользоваться им годами.

Это как раз показатель востребованности продукта, заинтересованности юзеров и, более того, «гарантия» их финансовой активности. И этот показатель - Lifetime.

Lifetime - это среднее время, в течение которого пользователь остается активным.

Важно: мы не рассматриваем, контактировал ли пользователь с продуктом каждый день, но рассматриваем общее количество дней (с первого до последнего контакта), проведенных с продуктом.

Как считать?

Обычно lifetime считается по когортам, и чем больше времени проходит с первого контакта, тем меньше пользователей из когорты продолжают использовать продукт. А самый большой отток обычно происходит в первые дни (см. картинку под постом).

Есть несколько способов расчета lifetime.

🟢 Наиболее точный способ

Берем группу пользователей, ждем пока все они полностью «отвалятся», и считаем среднее количество времени, которое они провели с нами до ухода.

Например, у нас есть когорта из 100 пользователей, и мы знаем, сколько дней они провели в проекте прежде, чем покинули его:

|Кол-во клиентов|Кол-во дней|
| 30 | 1 |
| 20 | 7 |
| 10 | 14 |
| 10 | 18 |
| 10 | 22 |
| 5 | 31 |
| 5 | 40 |
| 5 | 45 |
| 5 | 54 |


В этом случае их lifetime равен 15,6 дням.

Но, чувствуете подвох? Расчет точного lifetime может занять достаточно много времени и это почти невозможно в реальной жизни, поскольку придется ждать, пока все пользователи окончательно прекратят использовать продукт.

Поэтому обычно мы, грубо говоря, оцениваем lifetime, а не считаем его. И при оценке мы опираемся в большей степени на retention.

🟡 Второй способ

Одним из способов оценить lifetime будет определение «точки невозврата», когда неактивные определенное количество дней (7, 14, 30) юзеры, считаются «отвалившимися».

🟣 Третий способ

Другой способ - вычисление интеграла от retention (поскольку lifetime - это площадь под кривой retention) или простое суммирование всех показателей retention. Для такого подсчета нам нужно знать retention за несколько дней, чем больше, тем лучше, так как это будет влиять на точность оценки.

Что нам дает lifetime?

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

Вот поэтому он очень полезен - он дает общую картину продукта всего одним числом.

При работе с lifetime обращайте внимание на сегментацию. Можно делить пользователей по-разному: по стране, полу, устройству, а можно делить по проведенному времени с продуктом. То есть отдельно посмотреть на поведение юзеров с lifetime = неделя, две, месяц - вы сможете увидеть зависимости и, скорее всего, понять причины оттока.

Разница между Lifetime и Lifetime Value

Мы не раз видели подобные вопросы от наших студентов. Тут важно понимать, что LTV больше финансовая метрика (буквально наш доход от юзера за его lifetime). И хотя lifetime, в отличие от LTV, мы измеряем не в рублях, он все равно очень влияет на доход. Чем выше lifetime, тем дольше пользователь будет совершать платежи. Для сервисов с подпиской, это, пожалуй, особенно важные метрики.

#analytics #продуктовые_метрики
👍7🔥71
🔥5
Напоминаем про интенсив 🔥

Напоминаем, что сегодня в 19:00 пройдет интенсив «Собираем портфолио аналитика: когортный анализ LTV в SQL».

По итогу интенсива вы:

- Глубоко разберетесь с LTV и механикой когортного анализа
- Научитесь писать красивый SQL-запрос для проведения когортного анализа
- Сформулируете бизнес-выводы на основании анализа
- Упакуете впечатляющий кейс в портфолио

Вас ждет только крутой контент и ничего больше, поэтому скорее нажимайте кнопку, чтобы записаться на интенсив👇🏻

🔗 Ссылка для записи на интенсив: [
ссылка]
👍5🔥41
Ошибка «поверхностных выводов» 😖

На связи Андрон, CEO Simulative 👋🏻 Общаясь со студентами нашего Симулятора (и другими людьми в целом) я постоянно встречаюсь с ошибкой «поверхностных выводов». Ее допускают и члены моей команды, и я сам, и другие опытные предприниматели, и наши студенты, и вообще все. Это особенность работы мозга: он пытается минимизировать трудозатраты и побыстрей решить сложную задачку. Но такая ошибка может привести к сливу миллионов рублей, поэтому очень важно ее фиксировать и гнать в шею (особенно, если вы аналитик).

Ошибка поверхностных выводов - это когда мы принимаем решение, т.к. оно кажется нам «очевидным». Но при дальнейшем исследовании выясняется, что мы совершили серьезную ошибку.

Давайте приведу показательный пример. Все цифры и метрики изменены из соображений конфиденциальности, но отображают общую картину.

Пример

Мы используем несколько маркетинговых воронок. Например, вебинарную и бесплатный курс. Вебинарную воронку мы продвигаем через посевы в Телеграме, и воронку бесплатного курса - через таргетированную рекламу. Начинается новый месяц и мы хотим вырасти х2 по выручке. Воронка бесплатного курса идет вяло (CR2 - 0.8%), а вот вебинары дают крутую конверсию (CR2 - 3.5%) - стоимость клиента составляет 10% от среднего чека.

Поверхностный вывод: Увеличиваем рекламный бюджет на посевы в телеграме в 2 раза и за счет этого наша выручка вырастет вдвое.

Реальность: Если разложить вебинарную воронку на холодных лидов (кто пришел с посевов) и теплых (наши подписчики), то мы увидим совсем другую картинку. CR2 с посевов всего 0.5%, это даже меньше бесплатного курса! То есть с первого касания люди покупают плохо - основная масса продаж происходить за счет наших подписчиков и людей, которые уже были на наших вебинарах.

Последствия: При увеличении бюджета мы уйдем в убыток почти на всю сумму рекламного бюджета.

Заключение

Таких примеров я могу привести еще очень много и с разными метриками - они встречаются каждый день в большом количестве. И главный навык аналитика - не писать код на Python или запросы на SQL, а делать правильные и глубокие выводы, которые растят метрики бизнеса. Это самое сложное (и этому редко учат).

Хотите стать крутым аналитиком, который видит инсайты в цифрах, как Джон Нэш из «Игр разума»? 😁 Приходите к нам на экскурсию в Симулятор - расскажем как 👇🏻

Записаться на экскурсию: simulative.ru/excursion
👍11🔥32
Работа с плохими файлами в Pandas 🔥

Боль любого аналитика - «грязные» эксельки, которые ему приносят менеджеры. Перед тем, как прочитать этот файл Pandas-ом, аналитик тратит полдня, чтобы привести этот файл в читаемый вид и избавиться от ошибок чтения.

Однако, наверняка вы не используете фишки, которые мы описали в статье «Как справиться с хаосом: Pandas vs Excel»!

Обязательно прочитайте эту статью и возьмите себе на вооружение пару приемов - они сильно облегчат вам жизнь. Наш фаворит - использование usecols с функцией чтения!

👉 Читать статью 👈
13🔥6👍5
Приглашаем на бесплатный курс по Pandas! 🔥

Напоминаем, что недавно мы запустили бесплатный большой курс по Pandas! Если вы еще не записались на него - обязательно это сделайте!

Что вас ждет на курсе:

◾️ начнете работать с Pandas на примере реальных аналитических задач (проведете многомерный ABC-анализ, XYZ-анализ, рассчитаете динамику продаж и т.д.)

◾️ изучите все от самых азов до продвинутых функций (например, сложная агрегация, оконные функции и т.д.)

◾️ сделаете собственный проект — ваш итоговый кейс! (реальный кейс автоматизации обработки финансовой отчетности от крупной региональной аптечной сети и добавите его к себе в портфолио)

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

👉🏻 Скорее регистрируйтесь на курс: ссылка
🔥7👍4
Типичная ошибка в 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, вы можете легко выполнять различные условные операции и улучшать читаемость ваших запросов. Не игнорируйте этот мощный инструмент!
🔥22👍122
Перезапуск бесплатного курса по Pandas 🔥

Наверняка вы уже видели, что недавно мы запустили бесплатный курс по Pandas и его прошло уже более 2000 студентов!

Но мы решили его перезапустить, причем в новом формате - теперь обучение на бесплатном курсе по Pandas будет потоковым! И первый поток стартует уже завтра, 20 декабря 🔥

🔗 Записаться на курс: ссылка

Что мы обновили:

1. Теперь будет чат преподавателей и студентов, где можно задать любой вопрос по материалам
2. Мы добавили новые практические задания
3. В рамках бесплатного курса будет проходить живой закрытый мастер-класс с разбором бизнес-задачи на Pandas в формате группового созвона

Поток стартует уже завтра, а следующий будет уже где-то в следующем году. Поэтому не откладывайте в долгий ящик - завершите год с максимальной пользой с нашим бесплатным курсом по Pandas 👇

🔗 Записаться на курс: ссылка

Если вы уже проходили курс или записывались на него - не беда, приходите еще раз, вы найдете для себя массу полезного!

А еще есть возможность вписаться в курс в VIP-тарифе, чтобы получить максимум эффективности (но бесплатное участие тоже супер классное 😁).

В общем, до встречи на курсе!

🔗 Записаться на курс: ссылка
🔥5👍4
🔥 Заготовки регулярных выражений

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

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

Мы подготовили для Вас заготовки самых часто используемых шаблонов (подробное объяснение в карточках под постом):

Email-адрес

[a-zA-Z0-9\-\._]+@[a-z0-9]+(\.[a-z0-9]+){1,}


Примеры:

✓ it_resume@abc.tech
✓ it.resume@mail.ru
✓ 2021it-resume@gmail.com

✖️ it=resume@abc.tech


Номер телефона

(\+7|8)?[\s|-]?(\d{3}[\s|-]?){2}\d{2}[\s|-]?\d{2}

Примеры:

✓ 8 9999999999
✓ +7-999-999-99-99
✓ +7 999 999-99 99
✓ 9999999999

✖️ 8(999)999 99 99

Пароль

[a-zA-z0-9@\+-]{6,16}


Примеры:

✓ IT-Resume@+
✓ itresume@@@
✓ itresume12+

✖️ ITRESUMEitresume12

Паспорт

\d{4}\s\d{6}


Примеры:

✓ 1234 567891

✖️ 123 567891
✖️ 1234 5678910

Подстрока в тексте

.*IT\sResume.*


Примеры:

✓ Мы - команда IT Resume!!!
✓ IT Resume - платформа для подготовки
к техническим собеседованиям.
✓ Становись лучше, просто решая задачи
с IT Resume :)

✖️ IT-Resume
✖️ ITresume

Начало и конец строки


^Начало строки.*Конец строки\.?$


Примеры:

✓ Самое начало строки. Какой-то текст. Самый конец строки.
✓ Самое начало строки. Самый конец строки.

✖️ Какой-то текст. Самое начало строки. Самый конец строки.
✖️ !Самое начало строки. Самый конец строки.


Эти шаблоны можно улучшать и делать более универсальными. Но даже этих будет достаточно для закрытия базовых задач. А еще и для того, чтобы разобраться в написании регулярных выражений 😉
16🔥10👍3
🔥153