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

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

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
👍245🤩2
Как сделать экселевский ВПР (VLOOKUP) с помощью Pandas? 🔥

Типичная задача: дано 2 датафрейма и необходимо связать их по ключу. Как сделать это в Excel, уже наверно все знают - на помощь приходит функция ВПР. А как быть в Pandas? На помощь приходит функция merge!

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

Кстати, на днях стартанул первый поток нашего бесплатного курса по Pandas! А если вы еще не успели присоединиться, но хотите освоить Pandas, то скорее записывайтесь на курс!

🔗 Записаться на курс: ссылка
👍12🔥92
🔥 Разбираем тестовое задание в СБЕР на позицию junior-аналитика

26 декабря в 19:00 по Мск Андрон Алексанян, CEO IT Resume & Simulative, проведет бесплатный новогодний интенсив, где в прямом эфире будет разбирать настоящее тестовое задание на junior-аналитика в компанию Сбербанк.

Это будет последний обучающий интенсив в этом году.

Нам предстоит проанализировать историю договоров клиентов банка, провести аналитику и сформулировать бизнес-выводы.

Что будем делать на интенсиве:

◾️ Решать задания с помощью SQL

◾️ Писать хитрые запросы на SCD, pivot table и другие

◾️ Подробно разбирать каждый шаг

◾️ Считать retention банка и проводить сегментацию

◾️ Проводить аналитику и составлять бизнес-выводы

В прямом эфире мы также расскажем о частых ошибках новичков и поделимся лайфхаками — как достойно пройти собеседование и удивить ревьюера крутыми фишками 🤩

❗️ Записи интенсива не будет. Только один раз и только в live-формате.

А вы готовы бустануть свои знания и скиллы в аналитике?

🔗 Зарегистрироваться на интенсив: ссылка
👍83🔥3
🔥 Не пропустите новогодний интенсив!

Уже завтра, 26 декабря в 19:00 по Мск, состоится интенсив, где мы вместе будем разбирать настоящее тестовое задание в СБЕР на junior-аналитика данных!

На интенсиве мы вместе с Андроном будем:

◾️ Решать задания с помощью SQL

◾️ Писать хитрые запросы на SCD, pivot table и другие

◾️ Подробно разбирать каждый шаг

◾️ Считать retention банка и проводить сегментацию

◾️ Проводить аналитику и составлять бизнес-выводы

❗️ Всех участников ждут: насыщенная лекция, много практики и лайфхаки по работе с кодом.

❗️ Записи интенсива не будет. Обязательно приходите на эфир!

👉🏻 Регистрируйтесь по ссылке → ссылка
🔥8👍21
Ошибка целочисленного деления в SQL 🔥

Проверяя работы наших студентов в Симуляторе, мы раз за разом сталкиваемся с одними и теми же ошибками. И сейчас мы расскажем вам об одной из таких ошибок при написании SQL-запросов в PostgreSQL.

Описание проблемы

Мы привыкли, что в математике можно просто разделить одно число на другое и получить результат, даже если нацело числа не делятся - получится десятичная дробь. Однако SQL не всегда работает так, как мы ожидаем…

Например, в PostgreSQL, если вы делите два целых числа, результат будет целым числом, без дробной части:

SELECT a/b FROM demo
# если a и b целые, получаем столбец целых чисел

SELECT 1 / 2
# такое деление вернет 0


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

Примечание: В большинстве других СУБД, таких как MySQL, подобные запросы вернут десятичные дроби, как и ожидается.

Решение проблемы

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

SELECT a::NUMERIC/b FROM demo
SELECT a*1.0/b FROM demo
SELECT CAST(1 AS FLOAT)/2 FROM demo


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

Заключение

Если вы хотите узнать еще больше классных фишек про SQL на реальных примерах - обязательно приходите сегодня в 19:00 по Мск на наш вебинар «Разбор тестового задания в СБЕР на junior-аналитика»! Будем писать SQL-запросы, решать задачи и проводить аналитику.

Записывайтесь по ссылке 👉🏻 ссылка
👍10🔥51
Поиск аномалий с помощью SQL-запроса 🔥

Часто статистическая обработка данных затрудняется тем, что данные не очищены: либо присутствуют пробелы, либо выбросы. И работа с выбросами - одна из самых непростых задач, т.к. просто удалить их нельзя - они несут в себе массу полезной информации.

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

Переходите по ссылке, чтобы прочитать туториал 👉🏻 ссылка
👍161🔥1
Использование else в циклах for в Python 🔥

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

Как это работает

Все привыкли использовать ELSE с условием IF. Однако в Python блок ELSE можно использовать и с циклами FORWHILE тоже, кстати).

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

Примеры

Приведем простой пример, где ELSE не сработает, потому что цикл был прерван оператором BREAK.

for i in range(3):
break
else:
print("No else!")


А вот еще один, но здесь уже ELSE сработает, потому что цикл завершился сам:

for i in range(3):
print(i)
else:
print("Yes else!")


Как применить на практике

Мы привели несколько понятных, но синтетических примеров. Однако вы можете применить это на практике. Например:

>>> Напишите функцию, которая принимает на вход массив с ID пользователей и начинает их перебирать в цикле. Если вдруг мы встретили один из заранее заданных ID, мы прерываем цикл с помощью BREAK и начинаем как-то работать с этим ID. В противном случае мы должны сгененировать новый ID - это условие как раз будет в блоке ELSE.

#python
👍13🔥52
Что на новый год загадывают аналитики? 🎁

Друзья, мы всей нашей командой IT Resume & Simulative поздравляем вас с Новым 2024 годом! Спасибо, что были с нами все это время - читали наши посты, смотрели наши вебинары, проходили наши платные и бесплатные программы, решали задачки и оставляли классный фидбек. Мы вас любим - вы у нас лучшие ❤️

Мы спросили у аналитиков, какие письма они писали Деду Морозу в этом году. Вот, что получилось:

Пусть в моей жизни будет поменьше ошибок из-за кривых отступов в Python

Надоело работать в этой душной конторе, поскорей бы в Ozon аналитиком!...

Пусть все мои JOIN-ы в SQL-запросах будут правильными с первого раза

Пусть lifetime будет не интегралом от retention, а чем-то попроще

Пусть CAC наконец-то будет в 3 раза меньше, чем LTV

Пусть на следующем собеседовании я сразу получу оффер!

Хочу закончить курс и стать «паровозиком который смог» аналитиком


Это, конечно, не все, что они просили - но наверняка вы нашли здесь что-то и про себя 😁 Желаем вам, чтобы все эти пункты, а еще все, что вы загадаете дополнительно, сбудется в 2024. А мы вам в этом поможем! 😌

Всегда ваша, команда IT Resume & Simulative
17🔥6👍3🎉1
Ошибка в SQL: WHERE vs HAVING 🔥

Часто встречается ошибка — оператор HAVING используется вместо WHERE в запросах с агрегацией. И это неверно! Давайте разберемся, в чем же разница.

В чем разница

- WHERE выполняет фильтрацию строк в исходном наборе данных, отсеивая неподходящие записи до группировки
- GROUP BY формирует группы на основе значений в столбце
- HAVING применяется к уже сгруппированному набору данных и фильтрует их на основе агрегированных данных, т.е. после группировки

Пример

Давайте рассмотрим типовой пример:

SELECT date, COUNT(*)
FROM transactions t
WHERE date >= '2019-01-01'
GROUP BY date
HAVING COUNT(*) = 2


Здесь мы сначала отфильтровываем строки, оставляя только те, в которых дата больше или равна 2019-01-01. Затем формируем группы по дате (из тех, которые остались) и оставляем только те, в которых ровно две записи.

Некоторые, не понимая этой разницы, пишут так:

SELECT date, COUNT(*)
FROM transactions t
GROUP BY date
HAVING COUNT(*) = 2 AND date >= '2019-01-01'


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

Результат, в целом, получается одинаковый. Но насколько больше действий мы сделали. А представьте, что речь идет о миллионе строк!

Важное дополнение

Более того, в данном примере мы в HAVING указывали те же столбцы, что используются в группировке (date). А если мы укажем столбец, который не используется в GROUP BY или внутри агрегатной функции, то мы просто получим ошибку - запрос не отработает.

Пример:

SELECT date, COUNT(*)
FROM transactions t
GROUP BY date
HAVING COUNT(*) = 2  AND type_id >= 5


#sql
👍30
В декабре мы обновили формат бесплатного курса по Pandas, и уже успешно провели первый поток! Мы получили много положительной обратной связи от наших студентов, и сейчас вовсю идет запись на второй поток курса.

Ранее мы сделали об этом анонс, но если вы еще не успели или забыли записаться на грядущее обучение, то сегодня последний шанс это сделать  💪

Ведь второй поток стартует завтра, 4 января!

Что нового в курсе:

◾️ Теперь есть чат преподавателей и студентов, где можно задать любой вопрос по материалам

◾️ Добавили новые практические задания

◾️ В программе бесплатного курса будет проходить живой закрытый мастер-класс с разбором бизнес-задачи на Pandas в формате группового созвона

Еще раз – обучение начинается завтра, 4 января. Даты под третий поток пока не определены. Поэтому не откладывайте обучение в долгий ящик - скорее записывайтесь на обучение пока есть места 👇

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

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

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

🔗 Записаться на курс - ссылка
👍5🔥5
3 крутых лайфхака в Pandas 🔥

В нашем Симуляторе мы стараемся делиться всеми фишками и лайфхаками, которые знаем сами на многолетнем опыте. И сегодня хотим поделиться с вами некоторыми из них.

Игнорирование предупреждений

Наверняка, если вы работали с Pandas, вы сталкивались с бесячими warnings по поводу и без. Так вот - добавив всего лишь одну строчку в самое начало вашего кода, вы можете избавиться от них навсегда:

import warnings
warnings.simplefilter(action='ignore', category=Warning)


Задаем количество столбцов

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

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

pd.set_option('display.max_columns', 500)


Биннинг данных

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

Обычно все это делают с помощью apply или сложных циклов. Но все намного проще - с помощью cut вы легко можете сделать такой биннинг, например:

df['age_group'] = pd.cut(
df['age'],
bins=[0, 18, 35, 50, 100],
labels=['<18', '18-35', '35-50', '50+']
)


Заключение

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

Старт потока уже сегодня 👉🏻 записаться на бесплатный курс
🔥11👍85
Персональный топ нестандартных книг от нашего CEO 🔥

Надевно наш CEO, Андрон, отвечая на вопрос одного из студентов Симулятора «Аналитик данных», сам того не ожидая составил свой личный топ нестандартных книг для аналитиков данных (да и не только - всем будет интересно их почитать)! И сегодня мы делимся этой подборкой и комментариями Андрона с вами 🙂

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


Идеи с границы познания: Эйнштейн, Гёдель и философия науки, Джим Холт

Это одна из самых моих любимых книг! Не пугайтесь имен физиков и слова «философия» в названии - ничего сложного там не будет. Куча интересных исторических фактов про всем известных ученых (в том числе математиков, например, Фишера и Гальтона), а также непростые вещи в супер понятной и наглядной форме (например, про регрессию к среднему).

Ложь, наглая ложь и статистика, Тим Харфорд

Грамотный аналитик может подать даже убыток в компании как праздник и большую радость 😁 Эта книга - как раз про такие фокусы: эффект страуса, 10 правил Харфорда и многое другое.

Идеальная ставка, Адам Кучарски

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

Математическое невежество и его последствия, Джон Аллен Паулос

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

Я купил эту книгу и сразу же отп**дил ей парочку астрологов. Спасибо. Жду издания на более плотной бумаге, чтобы опиз*юлить еще нумерологов и психологов.


Ничего не имеем против этих ребят - просто цитируем восторг читателя 😁

Голая статистика, Чарльз Уилан

Базовая книга по статистике в легком формате. Если вы только начинаете свой путь в аналитике и математике - это must read. Если вы хотите изучать математику и не думать «А при чем тут вообще жизнь?!» - вам стоит прочитать эту книгу.

Заключение

Если вам зашла эта подборка - давайте наберем 40 реакций огонечков 🔥 на этом посте, мы сделаем еще одну!
🔥70👍8
7 сценариев использования функции zip в Python 🔥

В Python довольно сложные вещи можно решить элегантными способами. Наверняка и у вас такое бывало - написал код, а потом смотришь на чужую реализацию и думаешь:

А зачем я так усложнил, это же так просто…


И один из способов сделать свой код проще - использовать функцию zip. Поэтому мы подготовили для вас статью, в которой разобрали целых 7 сценариев использования этой функции!

Переходите по ссылке, читайте статью и обязательно берите на заметку! 👇🏻

Ссылка на статью: ссылка
👍11🔥72
Ошибка в SQL: Избыточные подзапросы 🔥

Проверяя работы студентов в нашем Симуляторе «Аналитик данных», мы часто встречаемся с ошибкой избыточных подзапросов. То, что можно было решить в 1 запрос, ребята решают за 3.

Почему так происходит

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

Пример

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

Итак, задача: вывести id транзакции и предыдущую сумму транзации со знаком минус. Вот решение студена:

SELECT id, 
LAG(neg) OVER(ORDER BY id)
AS lg
FROM (
SELECT id, sm, -sm AS neg
FROM (
SELECT id, sum AS sm
FROM transactions t
) t
) t1


И это еще не все — можно и побольше накрутить. Но зачем так, если можно так:

SELECT id, LAG(-sum) OVER(ORDER BY id) 
FROM transactions t


А как писать такие запросы?

Отсекайте лишнее. Напишите запрос так, как получилось. Затем попробуйте упростить. Затем еще. И так до тех пор, пока не получите минимально возможный запрос.

Совет

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

Преждевременная оптимизация - корень всех зол


Заключение

Хотите тоже стать аналитиком, который пишет только качественный код и сходу решает сложные задачи? Записывайтесь на персональную экскурсию в Симулятор - расскажем как 👇🏻

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

#sql
👍9🔥54
Вы считаете корреляцию неправильно 😱

Наверняка вы сталкивались в разных задачах с расчетом корреляции. Это актуальная задача везде - в аналитике рекламы, продаж, продукта да и чего угодно.

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

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

ссылка на пост

В тексте он рассмотрел 2 типичных ошибки - неправильный выбор переменных и корреляцию категориальных данных. А скоро выйдет новый пост про еще одну ошибку - ложную корреляцию.

А если вам интересен контент по аналитике от практикующего эксперта - обязательно подписывайтесь на канал 👇🏻

ссылка на канал
👍64🔥3
Стрим по SQL с Глебом Михайловым 🔥

После Новогодних праздников захотелось немного приятного лампового контента. И мы сразу вспомнили про классные стримы с Глебом Михайловым!

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

🔗 Ссылка на стрим → https://www.youtube.com/watch?v=2jDFud5hRHM

Рекомендуем посмотреть - вам точно понравится! 🔥
👍12🔥72
Обновленный Симулятор «Аналитик данных» + новый поток 🔥

Мы начинаем новый год с больших продуктовых изменений.

Обновленные тарифы на Симулятор «Аналитик данных»

Например, мы полностью пересмотрели тарифы нашего Симулятора «Аналитик данных»!

Теперь обучение в Симуляторе стало еще более эффективным и привлекательным. Например, добавились ежемесячные живые мастер-классы для студентов 🙂

Теперь Симулятор стартует потоками!

Кроме того, мы приняли решение, что набор в Симулятор будет происходить потоками! Это позволит нам более сфокусировано работать над продуктом в течение месяца и делать наше обучение еще более качественным.

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

Старт ближайшего потока - в конце января

Ближайший поток стартует уже в конце января! Причем сразу со всеми плюшками обновленных тарифов 🔥

Если вы планировали стать крутым аналитиком, то начало года - отличное время для старта!

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

🔗 Просто заполните форму предзаписи и мы с вами свяжемся → ссылка

До встречи в Симуляторе!
🔥7👍41