Мир аналитика данных
4.6K subscribers
139 photos
3 videos
114 links
Пишу о рабочих буднях аналитика. Тут много рабочего кода, прохождение собеседований и еще много всего полезного.
https://www.linkedin.com/in/valeriashuvaeva
Автор канала: @Valeria_Shuvaeva
Download Telegram
Подписчик прислал мне интересную задачку с stratascratch.com, и я не могла устоять, чтобы не решить её.
Нужно найти самый дешёвый путь между городами, учитывая варианты с пересадками (до двух).

📌 Дано:
Есть таблица da_flights, в которой:
✈️ origin – пункт отправления
✈️ destination – пункт назначения
✈️ cost – стоимость перелёта

Чтобы найти маршруты с пересадками, нам нужно соединить таблицу саму с собой (self-join).

🛠 Решение

1️⃣ Прямые рейсы (без пересадок) — просто берём origin, destination, cost.

2️⃣Рейсы с одной пересадкой — соединяем таблицу саму с собой (JOIN), где f1.destination = f2.origin. Это значит, что первый рейс прилетает в город, из которого отправляется второй.

3️⃣ Рейсы с двумя пересадками — соединяем таблицу трижды (JOIN), добавляя ещё один уровень соединения (f2.destination = f3.origin).

4️⃣Объединение всех маршрутов:
Используем UNION для объединения всех трех типов маршрутов (прямые, с одной и двумя пересадками).

5️⃣Группируем GROUP BY origin, destination и выбираем минимальную цену MIN(total_cost). Жаль нельзя по таким ценам реально на морюшко улететь 🌊🌊🌊

6️⃣Сортируем результат по городу отправления и городу назначения.

Создадим табличку с данными:
import pandas as pd 
from pandasql import sqldf

data = {
'id': [1, 2, 3, 4, 5, 6],
'origin': ['SFO', 'SFO', 'SFO', 'DFW', 'DFW', 'JFK'],
'destination': ['JFK', 'DFW', 'MCO', 'MCO', 'JFK', 'LHR'],
'cost': [500, 200, 400, 100, 200, 1000]
}

da_flights = pd.DataFrame(data)

Ну и сам основной запрос:
query = """
SELECT
origin,
destination,
MIN(total_cost) AS min_price
FROM (
-- Прямые рейсы
SELECT origin, destination, cost AS total_cost
FROM da_flights
UNION
-- Рейсы с одной пересадкой
SELECT f1.origin, f2.destination, f1.cost + f2.cost AS total_cost
FROM da_flights f1
JOIN da_flights f2 ON f1.destination = f2.origin
UNION
-- Рейсы с двумя пересадками
SELECT f1.origin, f3.destination, f1.cost + f2.cost + f3.cost AS total_cost
FROM da_flights f1
JOIN da_flights f2 ON f1.destination = f2.origin
JOIN da_flights f3 ON f2.destination = f3.origin
) AS all_flights
GROUP BY origin, destination
ORDER BY origin, destination
"""

result = sqldf(query)
print(result)


Большое решение, но если по частям разобрать, то разобраться проще. Для этого вот вам ноутбук с этим скриптом. экспериментируйте!
Ну и всем отдыха на море в этом году! 🏖🏖🐠🌊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥163❤‍🔥3👌1
🎈 Два года, 4000 человек и неожиданный результат

Друзья, нас уже больше 4000! 🎊 И для меня это просто невероятно!

Этот канал живёт без контент-плана — я пишу что хочу и когда хочу. ✏️ Это моё хобби, которое за два с лишним года превратилось в приятный источник дополнительного дохода. 💫 Когда я создавала канал чуть больше двух лет назад, даже не думала, что ко мне будут приходить рекламодатели. 🤯 Некоторых я отсеиваю, проверенных рекламирую, а кого-то — вообще бесплатно.

Помните, я писала модуль курса аналитики для SkillFactory? 📚 Меня пригласили туда благодаря этому каналу. Сейчас многие говорят про личный бренд, про то, что чем активнее ты в инфополе, тем больше возможностей к тебе приходит. И это правда!

Но ведь всё началось с простого желания выразиться. ✍️ Хотелось рассказать свои мысли, показать, что я умею, поделиться тем, как я к этому пришла. Я люблю цифры, но люблю и слово — ведь именно слово способно вдохновить… или, наоборот, сломать и обрубить крылья.🦋

И вообще спасибо, что вы здесь. 😊 За то, что читаете, комментируете, делитесь мыслями.❤️

Часто спрашивают: «Стоит ли заводить свой канал, если я ничего особенного не знаю и не умею?»
Отвечаю: ДА, стоит! 💚 Определённо стоит!

Ведь каналы ценны не только скриптами и лайфхаками. Они отражают вашу уникальность, ваш путь, который может вдохновить других. Не боги горшки обжигают! 😉 Все мы неидеальны, все сомневаемся, все волнуемся перед сложными задачами… Но мы продолжаем, потому что нам нравится то, что мы делаем. 💖

🚀 Так что, если у вас есть желание выразиться - дерзайте! Ваш уникальный голос может стать источником вдохновения для многих. 🌟
📡 А если у вас уже есть канал, пусть даже маленький – кидайте его в комментарии! Давайте поддерживать друг друга! 🌍🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2420👏7❤‍🔥5🖕1
📚 Бесплатное приложение для любителей книг!

Ребята из Whattoread – друзья моих друзей, и я с радостью рассказываю о их проекте. Они создали классное книжное приложение, которое помогает найти именно вашу книгу – не просто популярную, а ту, которая действительно вам понравится, ориентируясь на ваш вкус.

🔥 Скачать на Android

От команды:
"Мы верим, что хорошая книга должна увлекать с первых страниц. Поэтому сделали систему, которая подбирает книги именно под вас. Будем рады вам и вашим отзывам!"

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

🧐 А еще они написали классную статью на Хабр:

📌 "Где взять опыт в ИТ?" О том, как создать свой первый проект, с какими трудностями сталкиваются новички и что из этого выходит. Полезно и вдохновляюще!

Короче, рекомендую! 💡📖

P.S. А завтра разберем интересную рабочую задачу. Сегодня — читаем, завтра — кодим. Идеальный ведь баланс? 🤓🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8👍4
📊 Как найти пользователей, покупающих новый тариф задолго до окончания старого?
Сегодня я хочу поделиться интересной задачей, с которой столкнулась в работе.
Нужно было найти пользователей, которые купили новый тариф до того, как закончился их текущий. Вот такое вот бывает, ага.
Давайте разберем, как это можно сделать с помощью Python и библиотеки Pandas. 🐼

1️⃣ Создание тестового DataFrame с данными о пользователях, их тарифах, датах заказа и окончания тарифов. 📝
import pandas as pd
data = {
'user_id': [1, 1, 2, 2, 3, 3],
'title': ['Тариф A', 'Тариф B', 'Тариф A', 'Тариф A', 'Тариф C', 'Тариф C'],
'дата заказа': pd.to_datetime(['2024-03-01', '2024-03-20', '2024-03-05', '2024-03-25', '2024-03-10', '2024-03-15']),
'finish_at': pd.to_datetime(['2024-04-01', '2024-05-01', '2024-04-02', '2024-04-30', '2024-04-10', '2024-05-10'])
}
df = pd.DataFrame(data)

2️⃣Сортировка данных: Сортируем по пользователю и дате заказа
df = df.sort_values(by=['user_id', 'дата заказа'])


3️⃣Использование функции shift:
Для каждого пользователя находим дату следующей покупки с помощью функции shift. Это позволяет нам сравнить дату окончания текущего тарифа с датой следующей покупки.
df['next_created_at'] = df.groupby('user_id')['дата заказа'].shift(-1)


4️⃣Вычисляем разницу в днях между окончанием текущего тарифа и следующей покупкой.
df['time_difference'] = (df['finish_at'] - df['next_created_at']).dt.days


5️⃣Проверка на изменение тарифа: Проверяем, что новый тариф отличается от старого. Для этого с помощью shift проставляем следующий тариф напротив текущего
df = df.copy()
df['next_title'] = df.groupby('user_id')['title'].shift(-1)


6️⃣Оставляем только тех пользователей, которые купили новый тариф задолго до окончания текущего (например, за 7 дней до окончания).
df_filtered = df[(df['time_difference'] > 7)] 

df_filtered = df_filtered[df_filtered['title'] != df_filtered['next_title']]


Вот мы и нашли одного пользователя user_id=1, который меняет тариф c Тарифа А на Тариф B, не дожидаясь окончания первого.

Такой анализ можно применять для таргетированной рекламы, персонализированных предложений, ну и далее по списку..
Кто уже использовал shift() — жмем 🤝, кто взял на заметку — ✍️.
Please open Telegram to view this post
VIEW IN TELEGRAM
17🤝9❤‍🔥4👍1😴1
🔥 Тестовая задача по SQL! 🔥

На собеседованиях встречаются задачки, где нужно ранжировать данные, но без оконок RANK() и DENSE_RANK(). Как такое решать? Давайте разберём её шаг за шагом!

🏆 Задача:
Есть таблица с именами и баллами. Нужно проставить ранги участников в порядке убывания баллов без использования оконных функций.

import pandas as pd
import sqlite3
from pandasql import sqldf

# Данные для таблицы
data1 = {
'name': ['Владимир', 'Иван', 'Кирилл', 'Марк', 'Алексей', 'Максим'],
'score': [20, 16, 4, 7, 11, 18]
}
df = pd.DataFrame(data1)

query1 = """
SELECT
t1.name,
t1.score,
COUNT(t2.score) + 1 AS rank -- +1 потому что считаем количество строк с большим баллом
FROM df t1
LEFT JOIN df t2 ON t1.score < t2.score -- соединяем таблицы, чтобы сравнить баллы
GROUP BY t1.name -- группируем по имени
ORDER BY t1.score DESC; -- сортируем по убыванию баллов
"""

result = sqldf(query1)


Как это работает?
1️⃣ Соединяем таблицу (LEFT JOIN) саму с собой, чтобы сравнить баллы. Сравниваем каждую строку с другими, чтобы найти, у скольких участников балл выше.

2️⃣ Группировка (GROUP BY) – для каждого имени считаем, сколько раз его балл меньше других.

3️⃣ Ранжирование (COUNT + 1) – Чтобы не с нуля ранг был. Например если у участника балл меньше, чем у 2 других, его ранг будет 3 (т.к. он третий). Вот и готов порядок мест!

Полезная и прикольная задачка. Тут и условие ON t1.score < t2.score помогает лучше понять как соединяются таблицы.
Умение решать такое "вручную" ценится.

🎯Попробуйте сами! Меняйте данные, добавляйте условия – это отличный способ закрепить знания.
9👍8❤‍🔥4👏4
🔥 Выгорание в моде?
Вижу, как многие жалуются на выгорание. Особенно молодые. Те, кто уже стал лидом или начальником какого-то направления. И у меня каждый раз один и тот же вопрос: а о чём вы думали раньше?

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

Куда вы так спешите? В 25 — уже «бАльшой начальник», а в 30 — выгоревший, с пустыми глазами и отсутствием желания вообще что-то делать. Деньги? Да, хочется. Но их хочется всегда! Только лучше прийти к ним с опытом, крепкой психикой и осознанностью, чем на износе, полуживым и без удовольствия от жизни.

Амбиции — это хорошо, но если слишком тяжело выносить работу, могут и вынести вперёд ногами. А оно нам надо?

Быстрые взлёты только выглядят красиво. И психологам, кстати, выгодно — поток клиентов стабильный.

Отдыхайте, не геройствуйте — выходные уже на подходе! 🆒🆒🆒
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤‍🔥96💯5
🎓 Продвинутая аналитика Яндекс.Метрики для маркетологов — теперь бесплатно на Stepik!

Ровно год назад я вынашивала идею: а можно ли поиграться с Яндекс.Метрикой, не создавая полноценный сайт? 📊
Ответ нашёлся — можно! Я прикрутила счётчик к каналу на Дзене и начала изучать поведение пользователей прямо оттуда: сколько людей пришли, что читали, какие статьи заходят лучше всего.

➡️Об этом я подробно писала в посте:

А теперь хочу поделиться крутым бесплатным курсом, который отлично дополнит этот опыт.

👨‍🏫 Друг моего друга запустил курс на Stepik: "SQL для маркетинга. Продвинутая аналитика данных Яндекс.Метрики".
Да, бесплатно, да, полезно, да, от души — таких инициатив всегда хочется поддержать ❤️

Если вы работаете с метрикой, хотите прокачать SQL именно под задачи анализа трафика, понимать поведение пользователей и строить крутые отчёты — загляните. Уверена, вам понравится!

📌 Учим тут https://stepik.org/course/192052
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥28🔥186🥰3👍1
Удалёнка — кайф или кому как? 🧳🏡

На днях подписчик попросил рассказать про удалёнку — мол, есть ли у меня пост на эту тему. Кажется, я как-то упоминала, что работаю удалённо, но без подробностей, как к этому пришла. А тут и правда есть о чём подумать.

Когда-то мне искренне нравился офис: обеды в кафешках с коллегами 🍝, кофе-брейки ☕️, живые разговоры, лица в метро, смена обстановки, движ — всё это давало ощущение движения, жизни, причастности.

Но как только появилась возможность быть ближе к детям — забирать их из школы 🏫, готовить дома 🍳, водить на кружки 🎨 — я даже не сомневалась. Удалёнка — это просто спасение для родителей. Реально шик, топ, красота!

Иногда скучаю по «поболтать с коллегами в кафешке». Но сейчас это как бизнес-класс — красиво, но мимо.

Удалёнка — не универсальный кайф, но для меня в этом этапе жизни — это то, что нужно.

💬 Кто-то обожает полный ремоут. Кто-то прётся от офисной движухи.

А вы как работаете? Какой ритм вам комфортен? А может у вас гибрид?
11🔥6
«Я в режиме реального времени поясняла структуру запросов / ответов в Postman и разбирала документацию в Swagger», — пишет аналитик, который прошел наш курс, а потом два технических собеседования в международные компании. Приятно, конечно ❤️

Если в 2025 году вы хотите:
— научиться выбирать стиль интеграции под вашу задачу;
— начать проектировать с нуля и описывать интеграции в современных стилях (API: REST, SOAP, gRPC и других, + брокеры сообщений);
— узнать как правильно собирать требования и моделировать в UML;
— подготовиться к собеседованию, решив более 100 заданий;
— запустить свой API на Python.

Значит наш курс для вас!

🚀 Начните с открытых бесплатных
уроков — переходите в бот курса и жмите «Старт»
👇
@studyit_help_bot

🚀 Скидка на курс
от канала — 1 000₽ на Stepik по промокоду ANALYST до конца апреля.
❤‍🔥4👍21🐳1
🐍 Полюбила функцию .map() — за что и почему?

Ну что, опять рабочий пример. Не сложный - все таки пятница! Недавно нужно было привести разные payment_system к человекочитаемым типам оплаты — карты РФ, карты не РФ, кредиты, оплата частями и т.д. Задача вроде простая — но очень частая: 🧹 "почистить" и структурировать данные.

💡 Решение через .map()
Выглядело это примерно так:

data = {'payment_system': ['sberbank', 'tinkoff', 'stripe', 'tinkoffcredit', 'alpha_bank_podeli'],
'amount': [1000, 2000, 1500, 3000, 2500]}
df = pd.DataFrame(data)

map_dict = {
'sberbank': 'Оплата картами РФ',
'tinkoff': 'Оплата картами РФ',
'stripe': 'Оплата картами не РФ',
'tinkoffcredit': 'Т-Банк кредит',
'alpha_bank_podeli': 'Подели (Альфа-Банк)'
}

df['payment_type'] = df['payment_system'].map(map_dict)


Я сделала категоризацию платежных систем! Круто звучит, правда? А если просто - то, применила словарь к данным в столбце. В вашем случае он заменяет названия платежных систем на их категории. Преобразование занимает одну строку — читаемо, быстро и лаконично.

🔍 Что такое .map() вообще?

.map() — метод в pandas, который применяется к Series (одному столбцу) и возвращает новую Series.
Он может принимать:

словарь — для замены значений (value: new_value) как мы и сделали

функцию — для произвольной логики

⚠️ Нюансы использования:
- Работает только с одной колонкой
- Для нескольких — нужно использовать apply().

Решение через .apply()

def get_payment_type(ps):
if ps in ['sberbank', 'tinkoff']:
return 'Оплата картами РФ'
elif ps == 'stripe':
return 'Оплата картами не РФ'
elif ps == 'tinkoffcredit':
return 'Т-Банк кредит'
elif ps == 'alpha_bank_podeli':
return 'Подели (Альфа-Банк)'
return 'Другое'

df['payment_type'] = df['payment_system'].apply(get_payment_type)

☝️Вывод:
Если нужно быстро заменить или классифицировать значения в одном столбце — .map() 🔥
Особенно удобно с категорией платежей, типов устройств, источников трафика и т.п.

Теперь это один из моих go-to инструментов 💼
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥9❤‍🔥54🐳1
Как не попасть в ловушку собственных выводов? 🧠

Знакомо ли вам чувство, когда кажется, что все факты подтверждают вашу гипотезу — но вдруг оказывается, что вы упустили что-то важное?

В аналитике (да и в жизни) это называется "ошибкой подтверждения" — когда мы подсознательно игнорируем данные, которые противоречат нашим убеждениям. Очень опасная штука! 🔥

Подробнее о ней писал(а) Оля в своем канале — рекомендую к прочтению.

Кстати, Оля — продуктовый аналитик с 3+ годами опыта, и у нее огромный багаж знаний о собеседованиях:
Прошла отбор в 20+ компаний (включая бигтехи)
Провела 50+ технических интервью как интервьюер
Пишет крутые разборы, например, как получить оффер после собеседования

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

Её канал — как уютный диванчик в мире аналитики: мало шума, много смысла. Там реально есть, над чем подумать! 💡Диванные Данные 💫"
❤‍🔥8👍521
Умный LIKE: как искать по множеству URL в SQL без боли

Праздники закончились и вот уже третий день суровых будней. Давайте честно признаемся, что после стольких дней отдыха работать ну оочень лень? Я вот честно признаю - мне лениво, но приходится собирать себя по частям и делать дело, много дел, вот еще одно дело, а вот это тоже надо. То запрос на аналитику, то отчёт, то внезапные «срочно-очень-важно» Знакомо? Ну, что ж, у всех примерно такое состояние, так что ничего - выживем.

Расскажу интересный рабочий кейс — как эффективно искать записи по сотням URL в SQL. Покажу на простом примере, как избежать горы OR условий.

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

Сначала создаем тестовые данные.
import pandas as pd
from pandasql import sqldf

# Мини-датасет для демонстрации
data = {
'page_url': [
'https://site.com/blog/101',
'https://site.com/blog/102',
'https://site.com/blog/103',
'https://site.com/news/101',
'https://site.com/news/102',
'https://site.com/help',
'https://site.com/blog/201',
'https://site.com/blog/202',
'https://site.com/about',
'https://site.com/contact'
],
'visitor_id': [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010],
'visit_date': pd.date_range('2024-01-01', periods=10)
}

df_visits = pd.DataFrame(data)

Список интересующих нас блогов (как будто вы это выгрузили из excel файлика, который вам прислали коллеги, представьте что тут более 100 ссылок)
df_blogs = pd.DataFrame({
'blog_path': ['blog/101', 'blog/102', 'blog/201']
})

🌳Стандартный подход🌳
SELECT * FROM visits
WHERE page_url LIKE '%blog/101%'
OR page_url LIKE '%blog/102%'
OR page_url LIKE '%blog/201%'


🍀Автоматизированное решение 🍀

Динамически генерируем условия LIKE
conditions = " OR ".join([f"page_url LIKE '%{path}%'" for path in df_blogs['blog_path']])

query = f"""
SELECT
page_url,
visitor_id,
visit_date
FROM df_visits
WHERE {conditions}
"""
result = sqldf(query)

Если понравился способ - поставь лайк, а если вам тоже сложно работать после праздников, то добавь там еще каких-нибудь смайликов 🤪😀
Please open Telegram to view this post
VIEW IN TELEGRAM
31🔥9👏3❤‍🔥21🐳1🌚1
🔥 Ах, это чувство «я ничего не успела»

Знакомо чувство, когда вроде бы что-то делаешь, а к обеду/вечеру понимаешь, что «серьезные» задачи так и остались нетронутыми?
Вместо углубления в python — читала статьи, а то и в youtube залипала, вместо разбора сложных кейсов — читала телеграмм каналы других аналитиков , maybe даже мемчики по аналитике (ну а что, тоже развитие? 😅).

Короче, вместо жёсткого фокуса — растекалась по смежным темам, домашним делам... И вот оно — накатывает: «Я опять потратила время зря!»

Но стоп-стоп! Мы же не роботы, чтобы безостановочно генерить код и умные мысли. 🧠 Мозгу нужно «лениться», переваривать инфу, иногда просто смотреть в потолок, и даже — о ужас! — заниматься ерундой.
Это не просто норма — это необходимость!

Нельзя учиться и работать 24/7 без «пустых» промежутков — это путь к выгоранию. Даже «бесполезное» чтение иногда даёт неожиданные инсайты, да хотя бы просто отдых мозгу.
И вообще перфекционизм — главный враг прогресса. Лучше медленно, но без ненависти к себе.

Так что если вы сегодня не выжали из себя все соки и:
не стали гуру SQL
не переписали все свои запросы на оптимизированные
вообще ничего не сделали из «важного» списка

— это не провал!

Завтра будет новый день (и, возможно, опять без подвигов — и это ок 🤫)

Главное — не превращать развитие в бесконечный марафон с чувством вины!

Как вы справляетесь с мыслями что недостаточно продуктивны? 👇 Делитесь в комах — соберём коллекцию лайфхаков!
Я вот - пост написала и мне полегче стало 😂😜🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2210❤‍🔥6👍43
🎁Подарим карьерные консультации от HR-эксперта!

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

Обсуждали, что сейчас происходит на рынке с Олей, у нее 9+ лет опыта в it-компаниях, ex. консультант по обучению и развитию в Райффайзенбанке, 4+ года менторит по карьере и помогает разобраться с вопросами профессиональной самореализации. Пишет про адекватную карьеру https://t.iss.one/olga_career

🎯 Чтобы поддержать тех, кому это сейчас нужно, мы решили подарить две консультации. Обращаться можно с любыми карьерными запросами: построить карьерный трек, написать классное резюме, подготовить самопрезентацию к интервью, выбрать новое направление для развития, поработать со страхами/ самозванцем/ выгоранием.

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

🗓 Пишите, с чем нужна помощь, в комментариях, 6 июня отпишемся, кому достанутся консультации 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤‍🔥2🔥1
📍 Я собрала для вас подборку своих постов, которые вы могли пропустить. Даже если некоторые из них вышли давно — они всё ещё огонь! Hard skills — это серьёзно, а не мемы разгонять 🤪 .

🐍 🔤🔤🔤🔤🔤🔤

- Рабочий пример отчета для отдела продаж – формирование группы клиентов по разным условиям
- Особенности pivot_table на питоне
- Примеры сводной таблица pivot_table()
- Создание диапазона дат на питоне
- Рабочий скрипт по отвалу клиентов
- Отвал клиентов с доп.условиями
- Три топ клиента за год в каждой нише
- Кумулятивная функция сumsum()
- Примеры функции transform()
- Вопросы с собеседований по Python и Pandas
- Как определить к какой стране относится номер телефона? библиотека Phonenumbers
- Скрипт по когортному анализу (часть на SQL, часть на пандасе)
- Примеры np.where()
- Регулярные выражения на Питоне. модуль re
- Как ускорить обработку 50 млн строк: переход с Python на Clickhouse. (Регулярки и оптимизация больших данных)
- Исследование среднего ценового сегмента в разрезе определенных категорий. Биннинг с помощью функции cut
- Генерация синтетических данных: разбор тестового от OZON. (Практика с NumPy и Pandas)
- Регулярки в Python: как вытащить нужные данные из текста. (Рабочий пример с re.findall)
- Группировка данных в Pandas: объединяем значения через запятую. (Полезный трюк для отчётов)
- Как правильно выбирать топ-клиентов с прерываемыми индексами? Loc и iloc
- Поиск клиентов с подпиской без перерывов с помощью shift()
- Ищу пользователей, покупающих новый тариф задолго до окончания старого
- Категоризация платежных систем с помощью map

🔤🔤🔤

- Трафик, лиды, конверсия
- SQL Between
- Вопросы с собеседований по SQL
- Тестовое с решением
- Скрипт по когортному анализу (часть на SQL, часть на пандасе)
- Примеры использования CASE
- Group by на примере из курса Карпова и на рабочем примере.
- Регулярка для Clickhouse
- Библиотека Pandasql для написания SQL кода в Jupyter Notebook
- Оконные функции в PostgreSQL: считаем рабочие часы сотрудников. Разбор LAG и FILTER
- Тестовое на SQL: отделы и зарплаты руководителей (JOIN с подзапросами и агрегация)
- Установка PostgreSQL и DBeaver: инструкция для новичков. Как работать с CSV и писать запросы локально)
- LEFT JOIN с условием в ON или WHERE: в чём разница?
- Как извлечь домены почт клиентов: хитрости SUBSTRING_INDEX
- Задача с LeetCode: находим менеджеров с 5+ подчинёнными
- Расчёт коэффициента подтверждения: разбор задачи с LeetCode
- Задача Hard на LeetCode! Department Top Three Salaries
- Задача со stratascratch про перелеты

Ну и просто лёгкое и вдохновляющее:

☹️☹️😙🤑😓😓

- Как я сменила профессию
- Какие бывают аналитики
- Мотивация
- Теория вероятности на минималках
- Как заходить в LinkedIn без VPN
- YandexGPT 2 рассказал почему стоит выбрать карьеру в аналитике данных
- Поддержка в IT: как не сдаться на пути к офферу

- Яндекс.Метрика для чайников: как анализировать трафик в Дзене
- Как войти в IT без опыта
- Прокрастинация и баланс в жизни: как не сгореть в аналитике

p.s. И не забываем про возможность выиграть консультацию, вот пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥358😍4
Мир аналитика данных pinned «📍 Я собрала для вас подборку своих постов, которые вы могли пропустить. Даже если некоторые из них вышли давно — они всё ещё огонь! Hard skills — это серьёзно, а не мемы разгонять 🤪 . 🐍 🔤🔤🔤🔤🔤🔤 - Рабочий пример отчета для отдела продаж – формирование…»