Мир аналитика данных
4.58K subscribers
134 photos
3 videos
110 links
Пишу о рабочих буднях и о том как я сменила профессию.

Автор канала: @Valeria_Shuvaeva
Download Telegram
Как правильно выбирать топ-клиентов с прерываемыми индексами?

Сперва кажется, что за бред про прерываемые индексы? Сейчас расскажу где можно ошибиться 😜
А кто не ошибается, тот не работает! Главное вовремя понять, что тут что-то не то.

💡 Итак, задача: У нас есть список клиентов и их годовые обороты. Мы хотим отфильтровать тех, у кого оборот, допустим, больше 1 миллиона, отсортировать их по убыванию и выбрать топ-3 самых крупных клиентов.

Создадим данные для наглядности:
import pandas as pd
# Создаем исходный DataFrame
data = {
'client_id': [101, 102, 103, 104, 105],
'client_name': ['Client A', 'Client B', 'Client C', 'Client D', 'Client E'],
'turnover': [1200000, 500000, 1500000, 2000000, 3000000]
}
df = pd.DataFrame(data)

📋 Шаг 1: Фильтрация и сортировка клиентов

Сначала отфильтруем клиентов с оборотом более 1 миллиона и отсортируем их по обороту от большего к меньшему:
filtered_df = df[df['turnover'] > 1000000].sort_values('turnover', ascending=False)


Теперь у нас есть DataFrame с клиентами, у которых оборот превышает 1 миллион, отсортированный по убыванию

🚫 Ошибка: Что будет, если для выбора топ-3 теперь использовать .loc?
incorrect_top_3 = filtered_df.loc[:3]


Метод .loc[:3] пытается выбрать строки с индексами 0, 1, 2, 3. Однако, после фильтрации и сортировки, индексы строк изменились, и это приведет к выбору не тех строк!

Правильный подход: Используем .iloc, чтобы выбрать первые 3 строки по их позициям:
correct_top_3 = filtered_df.iloc[:3]


С помощью .iloc мы гарантированно получаем топ-3 клиента по их позициям в отсортированном DataFrame, игнорируя индексы.

Вывод: Используйте .iloc для выбора строк по позициям, особенно после фильтрации, группировки или сортировки данных, когда индексы идут не подряд. Тогда результат действительно будет топовым! 🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤‍🔥611😴1
Лето прошло, и кажется, все уже поплакали по этому поводу. Но кто бы мог подумать, что Notion тоже оставит нас в печали?

С 9 сентября сервис прекратит работу для пользователей из России. Это настоящее разочарование. 😭 Вся мои заметки, ссылки и курсы хранятся там, и теперь я в поисках альтернативы.

После долгих поисков наткнулась на Yonote.ru. Это не реклама, а просто находка, которая поможет заменить Notion. Конечно, можно использовать VPN, но иногда хочется работать без лишних танцев с бубном.

Что делать дальше?

Экспорт данных: Первое и самое важное — экспортируйте свои заметки из Notion. Это можно сделать как для отдельных страниц, так и для всего аккаунта. Резервные копии — залог спокойствия.

Ожидание: Посмотрим, что произойдет после 9 сентября. Пока нет полной ясности, как именно будут ограничивать доступ: всех ли пользователей, только платных, или же по IP. Но, почти наверняка, даже в худшем случае, сервис будет доступен через VPN. Но стоит ли это усилий? Каждый решает сам.

Аналоги: Есть несколько российских вариантов:

✔️ Яндекс Заметки — для простых записей, если не нужны сложные структуры: ссылка
✔️ Заметки Mail.ru — с недавним добавлением тегов можно разделять записи по темам: ссылка

Для более сложных задач:

✔️ Yonote.ru — организация, планирование, управление знаниями.
✔️ Teamly.ru — платформа для совместной работы и управления знаниями
✔️ Weeek.net — задачи, база знаний, CRM, аналитика и многое другое

Каждый решает сам, что выбрать. Главное — быть готовым к изменениям и действовать заранее. 👩‍💻

А вы чем пользуетесь, кстати?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3🤨2
Про прокрастинацию и баланс в жизни 🧠💪

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

Домашние дела 🧹, семейные заботы 👨‍👩‍👧‍👦, домашка с детьми-школьниками, и несколько человек в менторстве — всё это отнимает много сил. И вот тут появляется прокрастинация 🕰. Не потому что неинтересно, а потому что тело и разум просто требуют передышки 🛌.

И знаете, я пришла к выводу: нельзя постоянно «пахать» 💼. Наш организм подаёт сигнал, что ему нужен отдых, и это важно уважать. Если хочется замедлиться 🧘‍♀️ — нужно дать себе такую возможность. Отдых — это тоже часть пути к продуктивности ⚡️

Недавно я даже решилась на шаг вперёд: записалась в фитнес-клуб 🏋️‍♀️. Теперь забочусь не только о своём уме 🧠, но и о теле 💪. Ведь в гармонии важен баланс ⚖️ — между физическим, эмоциональным и интеллектуальным развитием.

Помните, заботиться о себе — это не лень, а необходимость ❤️.

И вот, пишу это всё в пятницу 13-го 🌘 — не знаю, совпадение это или знак, но кажется, что сегодня именно тот день, когда стоит притормозить, оглянуться вокруг и просто насладиться тем, что уже удалось достичь.
40👍15🔥5🥰1
🎯LEFT JOIN, с условием в ON или в WHERE.

Разберем, почему происходит различие между двумя запросами с LEFT JOIN, где условие включено в разные части: ON и WHERE.
Такое встречается на тестовых. Ну и по работе тоже нужно конечно.

Есть две таблицы: Таблица 1: информация о транзакциях и Таблица 2: информация о типе пользователя

Задача
: выполнить LEFT JOIN по user_id, чтобы узнать, какой у пользователя тип (type), и разобраться, почему два похожих запроса могут дать разные результаты.

🟢 Запрос 1️⃣: LEFT JOIN с условием в ON:
SELECT df_1.user_id, df_1.amount, df_2.type 
FROM df_1
LEFT JOIN df_2 ON df_1.user_id = df_2.user_id AND df_2.type = 'admin'

Для каждой строки из df_1 ищется строка в df_2, где user_id совпадают и type в df_2 равно 'admin'.
Если такое совпадение найдено, строка из df_2 включается в результат. Если совпадений нет, то столбцы из df_2 заполняются NULL.
Все строки из df_1 присутствуют, так как это LEFT JOIN.

🟢 Запрос 2️⃣: LEFT JOIN с условием в WHERE
SELECT df_1.user_id, df_1.amount, df_2.type 
FROM df_1
LEFT JOIN df_2 ON df_1.user_id = df_2.user_id
WHERE df_2.type = 'admin'

Аналогично предыдущему случаю, LEFT JOIN возвращает все строки из df_1 и соответствующие строки из df_2.
Условие WHERE отфильтровывает строки после объединения. Это означает, что оно удалит все строки, где df_2.type не равно 'admin' и также строки, где df_2.type равно NULL.
В результате будут включены только строки, где df_2.type = 'admin'.

🤓 В чем разница?
Условие в ON позволяет выполнить фильтрацию во время объединения (JOIN), сохраняя все строки из левой таблицы (df_1) и вставляя NULL для несоответствующих значений из правой таблицы.

Условие в WHERE применяется после объединения. Поэтому строки, которые не соответствуют условию (type = 'admin'), будут удалены включая строки с NULL!

💡 Запомним 🚀
ON — фильтрует при объединении, сохраняя строки из левой таблицы.
WHERE — фильтрует после объединения, убирая строки с NULL и несоответствующими значениями.

p.s. Картинку рисовала в Canva впервые. Накидайте реакций за смелость :) Дизайнерам тапками не кидаться, сделала как смогла 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥40139👍21🔥1
✋🏻 Привет, меня зовут Дмитрий, я data engineer.

Веду свой блог по инжинирингу данных https://xn--r1a.website/kuzmin_dmitry91.

Пишу про область, рабочие кейсы, немного лайфстайла. Работаю, учусь, делаю и исправляю ошибки)
Будет интересно больше новичкам в области, но также поддержу разговор с middle+ de.

Буду рад, если в моем канале найдете для себя полезности 💪🏻
❤‍🔥8
Когда ко мне обращаются за помощью, я с удовольствием поддерживаю, если вижу, что блог действительно полезный и может помочь другим 💪👌👍
9👍5❤‍🔥4😁41
💡 Почему в мире быстрых изменений важно учиться терпению?

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

Но вот что важно понять: быстрота не всегда равно качество.

Работая в аналитике, да и вообще в любой сфере, если честно, мы часто забываем, что это марафон, а не спринт. Ты не можешь мгновенно стать синьором крутым экспертом или сделать невероятные открытия в данных с первого раза.

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

🎯 Не гонитесь за мгновенными результатами!
То, что вы изучаете сейчас (питон, sql, статистика или еще что-то) может не пригодиться ВОТ ПРЯМ СЕЙЧАС, но очень вероятно, что пригодится через год или два при должном стремлении к вашей цели. Именно терпение и постоянство помогут тебе построить крепкий фундамент. Карьерный рост — это постепенный процесс. Очень важно научиться принимать и ценить каждый маленький шаг.

🌱 Учись терпению. Медленный прогресс — это тоже прогресс.

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

Терпение — это не вовсе не слабость, а сила. Развивай свои навыки, не гонись за мгновенными результатами, и в итоге ты увидишь, как далеко продвинулся.
❤‍🔥38👍10
💡 Как избежать ошибок при SQL-запросах, если в списке только одно значение?

Иногда при выполнении SQL-запросов с оператором IN может возникнуть ошибка, если список содержит только одно значение. Столкнулась с этим на работе, и решила проблему хитрым способом: добавляю фиктивное значение в список.

Это позволяет SQL-запросу работать корректно в любом случае!
from pandasql import sqldf
import pandas as pd

# Список user_id
users_lst = [987654321]

# Проверка длины списка
if len(users_lst) == 1:
# Добавляем фиктивное значение
users_lst.append(123456789)

# Преобразование списка в кортеж
users_lst = tuple(users_lst)

# Пример базы данных с двумя колонками: user_id и amount
data = {
'user_id': [987654321, 154589364, 234567890, 345678901, 456789012],
'amount': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)

# SQL-запрос
query = f"""
SELECT user_id, amount
FROM df
WHERE user_id IN {users_lst}
"""

# Вывод результата
sqldf(query)


📊 В этом примере, даже если список users_lst содержит одно значение, мы добавляем фиктивный user_id, чтобы запрос был корректным. Используем библиотеку pandasql для выполнения SQL-запроса на DataFrame.
18👍2
🚀 Участвуйте в новом исследовании рынка аналитиков от NewHR!

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

📊 Почему это важно?

NewHR проводит исследования рынка с 2018 года, чтобы собрать данные о развитии аналитической профессии: зарплаты, задачи, форматы работы и многое другое. Каждый год они следят за изменениями, чтобы лучше понять динамику в этой быстро развивающейся сфере.

Каких аналитиков охватывает исследование?

➤ Дата-аналитики
➤ BI-аналитики
➤ Продуктовые аналитики
➤ Маркетинговые и веб-аналитики

О чём пойдет речь в опросе?

👉 Как меняются зарплаты и вилки
👉 Какие компании предлагают отличные условия для аналитиков
👉 В каком формате работают аналитики: офис или удалёнка
👉 Чем занимаются аналитики сейчас и к чему стремятся в будущем
👉 Как они ищут работу и выбирают работодателей

📌 Как принять участие? Пройдите опрос, это займёт около 20 минут: ссылка на опрос. Сбор данных идёт весь октябрь.

💡 Почему это важно? Чем больше участников, тем точнее и репрезентативнее результаты! Ваше участие поможет сделать исследование максимально полезным для всех нас.

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

Посмотрите какие у них были исследования:
Релокация IT-специалистов

Как изменились зарплаты айтишников за 2023 год
Исследование рынка продуктовых и дата-аналитиков
5👍2
🚀 Друзья, хочу поделиться с вами важной новостью – я создала новый канал, посвященный искусственному интеллекту, нейросетям и технологиям! Это будет канал с последними новостями, собранными из ведущих зарубежных и отечественных источников: www.cnews.ru, www.bbc.com, newatlas.com, www.ibm.com и прочих.

Мне не терпится рассказать вам, как я пришла к этому!

Я просто обожаю всё, что связано с технологиями и нейросетями! 🧠 Я часто читаю новости, отслеживаю самые свежие разработки и подписана на множество тематических каналов. В какой-то момент я подумала: "Почему бы не сделать что-то своё?" 💡 И вот, теперь у меня есть собственный информационный вестник, где я делюсь с вами самым интересным и важным из мира ИИ! Назвала его ИИ Журнал, а симпотяшку робота нарисовала в нейронке.

Этот проект меня невероятно вдохновляет, потому что я не просто читаю и изучаю – я делюсь своими открытиями с вами. Так что присоединяйтесь, будет много захватывающих новостей и инсайтов!

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

ИИ Журнал ждет Вас! Ну и как можно отказать такому милому роботу? 🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
10👏1🤡1
📊 Как проверить, существует ли датафрейм в Python, прежде чем с ним работать?

Недавно столкнулась на работе с задачей, когда нужно было объединить два датафрейма — df1 и df2. Но тут был нюанс: иногда df1 просто не загружался из-за отсутствия данных. А мне нужно было учесть его, если данные вдруг появятся. Если бы пыталась объединить df1 и df2, когда df1 не существует, то это выдавало бы ошибку. Код и выдавал ошибку, чего уж там. 🤦‍♂️
Вот тут и пригодилась небольшая хитрость с проверкой на существование переменной.

В Python можно использовать функцию locals(), чтобы проверить, была ли создана переменная, прежде чем что-то с ней делать. Например, если я хочу проверить, существует ли df1, то пишу условие:
if 'df1' not in locals():
df1 = pd.DataFrame() # Создаем df1, если он не существует

Итак, накидаем примерчики.

🔹 Вариант 1: locals()
import pandas as pd

df2 = pd.DataFrame({
'status': [1, 2, 3],
'manager_name': ['Иванов', 'Петров', 'Сидоров'] })

# Проверка наличия df1
if 'df1' not in locals() or df1.empty:
df1 = df2.copy() # Если df1 пустой или не существует, присваиваем ему df2
else:
df1 = pd.concat([df1, df2], ignore_index=True) # Объединение строк


🔹 Вариант 2: try-except


Другой способ — использовать try-except, чтобы поймать ошибку NameError, если переменная df1 еще не была создана. Это помогает избежать лишних проверок на пустоту и существование:
try:
if df1.empty:
# Если df1 пустой, присваиваем ему значения df2
df1 = df2.copy()
else:
# Если df1 не пустой, объединяем его с df2
df1 = pd.concat([df1, df2], ignore_index=True)
except NameError:
# Если df1 не был создан, создаем его как копию df2
df1 = df2.copy()

df1

📝 Мне больше с locals() нравится. Кратко и по сути, и не надо дублировать код.
❤‍🔥18👍42🤔1
«Яндекс» опроверг наличие в компании «красных маркеров» при отборе кандидатов (возраст 40+, работа в госструктурах)

💼 На рынке труда часто ценят не только профессиональные навыки, но и соответствие негласным "маркерам" и стереотипам.

12 ноября 2024 года «Яндекс» опроверг в пояснении ситуации для Хабра наличие в компании «красных маркеров» при отборе кандидатов (возраст 40+, с опытом работы в госструктурах, частая смена работодателя и так далее), так как подобные правила противоречат внутренним политикам компании.

😏 Поверили ли мы сразу? Скажем так — рынку проще отсеивать, чем разбираться. И в этом грусть: многих достойных специалистов отсекают по признакам, которые не имеют отношения к их компетентности. Шансы попасть на собеседование часто сводятся к нулю по причинам, которые от кандидата никак не зависят.

⚖️ Конечно, приходится адаптироваться к этой реальности, но у соискателей тоже есть свои "красные маркеры". Один раз, к примеру, я была на собеседовании, где руководитель финансового отдела выглядел до предела уставшим человеком. Тогда я подумала: ну, всякое бывает, может, у компании непростой период. Как выяснилось позже, этот "период" длился уже давно, и в тот год до моего прихода сменился весь финансовый отдел, включая руководителя. Я тоже ушла спустя четыре месяца, так как возвращаться домой за полночь не слишком устраивало мою семью.

Расскажите, а вам попадались "красные флаги" у работодателей или в откликах на резюме?
14🙏2❤‍🔥1🕊1
🔍 Как посчитать суммы покупок клиентов без оконных функций в SQL? Простое решение на Python! 🐍

Поступила мне тут задачка посчитать сумму покупок для каждого пользователя на определенном этапе его покупок: например, для 1-й, 2-й или 3-й покупки. В идеале это можно решить с помощью оконных функций в SQL. Но что делать, если они не доступны? 🤔

Я сделала, как обычно, с помощью Python и библиотеки pandas! Давайте разберемся, как это сделать шаг за шагом.

Итак, у нас есть таблица df с такими данными:
data = {
#дата покупки
'created_at': ['2024-10-25', '2024-10-30', '2024-10-30', '2024-11-03', '2024-11-04', '2024-11-05'],
#идентификатор пользователя
'user_id': [1, 1, 2, 2, 2, 1],
#номер сделки
'deal_id': [101, 102, 103, 104, 105, 106],
#сумма покупки
'amount': [200, 300, 150, 250, 100, 200]
}
df = pd.DataFrame(data)
df['created_at'] = pd.to_datetime(df['created_at'])

Мы добавляем столбец month, который извлекает месяц из даты покупки (created_at), так как мне нужна была именно по месяцам разбивка.
df['month'] = df['created_at'].dt.to_period('M')


Оказывается есть метод cumcount(), чтобы рассчитать порядок покупок для каждого пользователя. 📊
df['rank'] = df.groupby('user_id').cumcount() + 1


Теперь у нас есть столбец rank, который говорит нам, какая по счету покупка была сделана пользователем.

И уже можно легко фильтровать их по порядку (первая, вторая, третья) и посчитать суммы для каждого из этих этапов.
# Сумма первых покупок
first_deals = df[df['rank'] == 1].groupby('month', as_index=False)['amount'].sum()

# Сумма вторых покупок
second_deals = df[df['rank'] == 2].groupby('month', as_index=False)['amount'].sum()

# Сумма третьих покупок
third_deals = df[df['rank'] == 3].groupby('month', as_index=False)['amount'].sum()


📈 Вот так любимый python-чик может все! ❤️🔥🎯
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍13❤‍🔥4
Наверно многие знают Пашу Бухтика Head of Product Analytics. Так вот у него завтра начинается курс по AБ и я выбила для вас 5% скидку. Нужно только сказать «я от Валерии / мира аналитики данных».


🎉 Курс по АБ – старт уже 2 декабря!

Ты хочешь прокачать навык АБ-тестирования, но устал от кусочных знаний из статей и книг?
Ты пробовал курсы, но на работе вопросов стало только больше? Или, может быть, тебя разворачивали на собеседованиях, потому что не хватало глубины?

👉 Тогда этот курс для тебя!

Паша Бухтик собрал все это:
✔️ Систему подходов, методов и инструментов для АБ,
✔️ Глубокое понимание и практику ключевых навыков,
✔️ Лучшие примеры из своей реальной практики за 7 лет.

Это не просто обучение. Это:
🔸 12 онлайн-занятий в Zoom – максимум структуры и ответов на все вопросы;
🔸 12 практических занятий в малых группах – кейсы, задачи, прикладной опыт;
🔸 12 комплектов доп. материалов – чеклисты, статьи, книги;
🔸 Индивидуальные домашки и обратная связь;
🔸 Активное комьюнити единомышленников!

🚀 Зачем тебе это? Чтобы выйти на новый уровень:
- Наконец увидеть большую картину.
- Разобраться, как всё работает в реальных рабочих задачах.
- Получить ответы на свои вопросы и перестать «спотыкаться».

🤝 Успей присоединиться! На второй поток.

🔗 Заявку оставляй на сайте: nodatanogrowth.com/product-analyst-ab-testing

Войди в 2024 с навыком, который сделает тебя экспертом. 💪
❤‍🔥62
⚡️ Удобство функций в аналитике данных: пример на практике

Я не так часто работаю с функциями, но иногда это действительно помогает оптимизировать работу. Бывает, что они - настоящее спасение. ☝️

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

🛠 С функцией легко менять диапазон дат, просто передав другой список в параметрах.
Используем библиотеку pandasql, которая позволяет выполнять SQL-запросы по DataFrame, как будто это таблица из базы данных.
import pandas as pd
from pandasql import sqldf

# Создаем небольшой DataFrame
data = {
'id': [1, 2, 3, 4, 5],
'created_at': ['2024-12-01', '2024-12-05', '2024-12-07', '2024-12-09', '2024-12-15'],
'user_id': [182, 256, 550, 306, 457]
}
df = pd.DataFrame(data)

# Преобразуем столбец created_at в datetime
df['created_at'] = pd.to_datetime(df['created_at'])

Теперь напишем саму функцию (пусть называется get_sql) для выборки данных через SQL:
def get_sql(df, dates):
query = f"""
SELECT *
FROM df
WHERE created_at >= '{dates[0]}' -- первая дата
AND created_at < '{dates[1]}' -- вторая дата
"""
return sqldf(query, locals())


🔍И теперь можно обращаться к ней столько раз, сколько нужно
dates1 = ['2024-12-01', '2024-12-10'] 
df_part1 = get_sql(df, dates1)

После выполнения этого кода вы получите таблицу с отфильтрованными данными (первые 4 строки).

Конкретный пример использования, чтобы сразу запомнилось, а не что-то абстрактное. 😂

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

🍕 Написал такой скрипт один раз, и потом спокойно запускаешь его 15 раз, собирая потом части в единое целое! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
15❤‍🔥8👍51
🔥 200+ экспертов и каналов, за которыми следят аналитики

Делимся первыми инсайтами из исследования аналитиков, которое команда NEWHR провела в 2024 году. Это рейтинги и списки экспертов отрасли и каналов.

Выборка в исследовании получилась солидная — 1293 человека.

Вот кого опрошенные нами аналитики чаще всего отмечали в списке экспертов:
1. Анатолий Карпов
2. Валерий Бабушкин
3. Роман Бунин

А рейтинге каналов самыми известными оказались:
1. karpov.courses
2. Reveal the Data
3. настенька и графики

🔗 Изучить полные рейтинги и списки экспертов из исследования можно по ссылке.

💙 Мы благодарим наших информационных партнёров, которые помогли нам собрать такую внушительную выборку!

🎄 Команда NEWHR продолжает обрабатывать полные результаты исследования аналитиков: это данные о зарплатах, местах работы, желанных работодателях и многое другое. Мы опубликуем их в 2025 году. Следите за обновлениями!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥551👍1
🤪 Друзья, проведем анализ по результатам 2024.

Че там по метрикам в сравнении с 2023?

Подписчики: было 1762, стало 3753 — +113% (больше чем в 2 раза!)
Публикации: было 56, стало 94 — прирост +68%
Комментарии: с 461 до 492 — +7%
Пересылки: 730 → 964 — +32%
Реакции: 1.2K → 1.5K — +25%
Просмотры: 90.5K → 186.1K — +106%
Вывод: Канал вырос по сравнению с прошлым годом. 📈📊

🔥 Спасибо всем, кто комментирует, пересылает посты друзьям, кликает «нравится» и просто заглядывает на огонёк. Без вас такие результаты были бы невозможны! ❤️

Я подготовила список самых интересных публикаций за 2024 год:

🐍 Python и Pandas

✔️ Делим на группы: np.where() и loc против pd.cut (биннинг данных).

✔️Опять биннинг: как «нарезать» интервалы по 10 тыс. с помощью pd.cut и pd.interval_range.

✔️ Пример использования case в SQL, но и о питоне чуть — однако полезно заглянуть, как это в коде (часть публикации про Python-практику).

✔️ Как строить сводные таблицы методом pivot_table, заполнять пропуски и работать с fillna.

✔️ Шифрование телефонных номеров при помощи hashlib и встроенной hash()

✔️ Объединяем датафреймы так, чтобы сохранить порядок строк (пример с merge и сортировкой по изначальному индексу).

✔️Примеры кода: как сгруппировать данные и вывести их по аккаунтам (разбор рабочих задач).

✔️ Ищем idxmax внутри группировки, чтобы оставить строку с максимальным значением.

✔️ Сортировка и фильтрация: когда лучше использовать .iloc вместо .loc после группировок/срезов.

✔️ Анализ данных с регулярными выражениями в Python пример с re.findall

✔️«Хитрые задачки с работы» о том, как парсить и фильтровать ставки (процентные) без циклов в Python, используя регулярки, extractall и группировки: https://xn--r1a.website/analysts_world/151 и https://xn--r1a.website/analysts_world/154.

✔️ Проверка существования датафрейма в Python (через locals() или try-except).

✔️ Как считать сумму покупок по порядку (1-я, 2-я, 3-я) без оконных функций: groupby().cumcount() и т.д.

✔️ Пример с обёрткой SQL-запроса в Python-функцию (pandas + pandasql), чтобы гибко менять периоды выгрузки.

💾 SQL и базы данных
✔️ CASE в SQL, пример расчёта сумм с разными валютами (RUB/RUR).

✔️ Извлечение доменов почт клиентов (SUBSTRING_INDEX)

✔️Тестовое задание по SQL: две таблицы (отделы и персонал), примеры группировки и сравнения зарплаты сотрудника с зарплатой начальника.

✔️LEFT JOIN с условием в ON или в WHERE: объяснение, почему результаты могут отличаться.

✔️Хитрый приём для IN в SQL, если у вас в списке одно значение (добавляем фиктивный).

✔️Пример с обёрткой SQL-запроса в Python-функцию (pandas + pandasql), чтобы гибко менять периоды выгрузки.

🤔💭 Полезные мысли и карьера

Как влиться в IT, если вы только начинаете; страхи, женские квоты. Статья с Хабра.

Какой курс/обучение стоит выбрать, если планируете «войти» в IT. Советы по Excel, SQL и обретению опыта.

Прокрастинация и личный баланс: про фитнес-клуб и необходимость отдыха.

Баланс, фитнес, и почему нам нужно отдыхать.

«Красные маркеры» у работодателей и «красные флаги» у соискателей (пост о возрастных ограничениях и т.п.).

И хоть сегодня последний рабочий день, и, признаемся, учиться уже вряд ли хочется, всё же сохраните этот список — он пригодится, когда захочется прокачать скиллы после праздников. 🥳🎁😀🔔
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍52
🎄С наступающим Новым годом, друзья!🎄

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

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

Мечтайте, загадывайте желания и смело идите к своим целям! 🔼🎆🎆🎆🎁✔️😀

До встречи в новом году! 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14🎄52🔥1
🎯 Вот и пролетели каникулы. Не жалею, что не сидела за компом. Мы семьей ездили на дачу, парились в баньке, жгли камин, встречались с друзьями, ездили к бабушкам, побывали на Красной площади.

Жизнь дуальна или двойственна или, если по другому, у всего есть две стороны. Можно сосредоточиться на том, что отдых закончился и опять нужно работать . А можно сконцентрировать свои мысли на перспективе того интересного и захватывающего, что мы сами себе можем создать в этом году! И все действительно в наших руках! Но для этого нужно учиться, ставить цели и кайфовать от того, что потихоньку идем по своем пути. Пусть извилистому, но именно нашему особенному пути.

💡 У меня появилась идея, которая поможет каждому из нас оставаться мотивированным и идти к своим целям!
Предлагаю вам простой, но эффективный инструмент — таблица для мотивации. Абсолютно бесплатно для всех.

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

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

📋 Вы заполняете таблицу своими курсами, тренировками или любыми другими целями.
Каждый день отмечаете галочками свои успехи, а можете цветом закрасить клеточку дня, в котором позанимались.
👀 Другие видят ваш прогресс, а вы вдохновляетесь их результатами.

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

Что нужно сделать?
1️⃣ Переходите по ссылке, копируйте лист "Для копирования" и дайте ему имя - свое или любое другое, которое Вам нравится.
2️⃣ Заполняйте своими целями и курсами.
3️⃣ Начинайте действовать!

Чтобы вам было проще начать, я добавила в таблицу несколько курсов, которые могут стать отличным ориентиром.

Не ждите идеального момента — начните сегодня! 💪 Ссылка на таблицу

Давайте делиться успехами и поддерживать друг друга! 🔥 Можно писать друг другу прям на листах. Типа "Ого, круто! Молодец!" Можно вставлять картинки и эмодзи. Короче, никак себя не ограничивать.

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

Скажу честно - после того как я это придумала, мне показалось, что возможно я зря это затеваю. Заходить, смотреть, самой отмечать свои занятия. Но это был искренний порыв помочь. Надеюсь эта инициатива реально окажется полезной!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1810👍7
Друзья, вы просто космос! Посмотрите, сколько новых задач и участников появилось в наших таблицах: тут и курсы по аналитике, и чтение книг, и даже ежедневные тренировки и йога. Кажется, мы все дружно рванули вперёд! 🚀

Кстати, для самых первых участников я уже добавила вдохновляющие картинки, а на неделе планирую порадовать такими же и тех, кто присоединился совсем недавно. 📸

Очень радует, что у многих не только “В планах” новые цели, но уже “Выполняется” сразу несколько дел: от прокачки SQL до занятий спортом. С каким кайфом я сама ставлю галочку, когда занимаюсь!

Именно так рождается настоящий драйв: каждый маленький шаг даёт огромный заряд мотивации всем остальным. Ведь когда видишь, как другие двигаются, тоже хочется включаться на полную. 🏋️‍♀️

Спасибо, что заполняете таблички и делитесь своими успехами. С таким настроем у нас точно всё получится! Продолжаем в том же духе: изучаем новое, тренируемся, растём. 💪

Тут спрашивали про лучшие курсы. Но их так много, что трудно выбрать - их действительно огромное количество. Главное начать заниматься, а где - уже не так важно. Одним курсом вы все равно не отделаетесь 😂 Знаний в нашей сфере много не бывает - постоянно нужно что-то учить и доучивать. Но, зато мозг будет прокачен. Ну и про тело не забывать тоже. А то это уже дисбаланс. А нам такое не надо. Гармония во всем! 😌 Поучился - иди и поприседай. Покодил - постой в планке, да не на графике, а на своем полу 😜

Я продолжу следить за прогрессом — и, конечно, всегда вэлкам для новых идей! 💡💡💡
📎 Табличка тут - тык
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥152
🔥 Сегодня прочитала, что Сбербанк начал масштабные сокращения в IT-подразделении Ecom.tech (это «Купер», «Мегамаркет», «Сберлогистика» и «Самокат») — некоторые команды «урежут» до 50%! 😱

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

Но что это значит для нас с вами — IT-специалистов или тех, кто только планирует стать айтишником? Рынок становится жёстче, конкуренция растёт, и учиться приходится всё активнее, ведь без постоянного развития навыков просто не удержаться на плаву. 📚💡

Чтобы быть «на гребне волны» в мире IT, не забывайте:

☝️Следим за трендами — технологии меняются быстро, и сейчас на первый план выходят etl, искусственный интеллект и машинное обучение (AI/ML).
☝️Осваивайте смежные области — DevOps, Data Science, тестирование, проектный менеджмент,кибербезопасность и информационная защита. Это расширяет кругозор и делает вас ценным специалистом. 🔧⚙️
☝️Иногда отдыхать, а то можно выгореть. Потом еще на психолога тратиться придется. 🤪
☝️Относиться ко всему проще и легче. Или в переводе "А когда было легко?"

Короче нам надо учится, учиться и еще раз учиться.
Думаете сейчас будет реклама курсов? А вот и нет. 😜
https://rb.ru/news/sber-ecom-personnel/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍156😢3😁1💯1