Junior аналитик данных | Собеседование | karpov.courses
Вставка
- Опубліковано 4 чер 2024
- Симулятор аналитика: bit.ly/3S0YWLu
Продолжение открытых собеседований на позицию junior аналитика! На этот раз в прямом эфире будем писать код на Python, анализировать данные в Pandas и считать продуктовые метрики в ClickHouse.
Учитесь Data Science с нами: karpov.courses/
Ссылка на чат: t.me/karpovcourseschat
00:00 Введение и представление
5:19 Структура собеседования
6:04 Первая задача: повернуть список
9:29 Cчитать датафрейм
12:08 Уникальные секции
12:52 Топ 10 юзеров по прослушиванию музыки
19:54 Самый популярный раздел у тех, кто не смотрит ленту
29:05 Кто дольше всех пользуется продуктом
37:45 Лучший график для данных
39:06 Обратная связь и переход ко второму частнику
41:54 Описание данных
42:55 Количество событий по дням
45:10 Просмотры и лайки по дням
51:48 Лайфхак
53:28 Добавление новой колонки
54:30 Фильтрация уникальных постов
56:49 Медиана активного количества дней
1:03:32 Единственный активный день 1 сентября
1:12:29 Обратная связь - Розваги
Анатолий, спасибо большое за очень лояльное и доброжелательное отношение к ребятам с подробными комментариями! Это очень полезно и комфортно смотреть и усваивать. Буду всем рекомендовать ваши семинары и курсы.
Александру и Егору, спасибо! Молодцы! Я бы так не смог онлайн на незнакомом материале всё быстро решить. Круто!
Видео супер! Спасибо большое за работу.
да действительно очень полезно! спасибо вам Анатолий! И Александру и Егору!
Блин, так круто! Вы даже не представляете, насколько это было полезно для меня , прям взахлёб
Спасибо участникам за смелость! Кто пишет, что на собесах сложнее. Собесы бывают оочень разными. И ожидания работодателей тоже. Тут вопросы были подобраны под уровень ребят, на мой взгляд удачно. Смысл было их засыпать вопросами на которые они бы не смогли ответить? Если вас интересуют какие задачи ставят на собесах литкод в помощь. У таких видео другая задача.
Спасибо за такой формат! Было интересно решать задания самостоятельно, поэтому использовал df со степика, но если не сложно выкладывайте пожалуйста ссылки на данные чтобы можно было попробовать всё самому.
А я такой думаю. Как это не видел видео. А оно три часа назад только загруженно было. Ну молодцы. Респект вам. Понятно стало что на juna не так много знать нужно. И комплекс "самозванца" Пропадает потихоньку. Спасибо за ваш труд. Удачи и вам.
Спасибо большое)
Классное собеседование. Не такое душное, как бывает обычно. =)
Красавчики, хотя собеседования проходят очень по разному. Зачастую побольше спрашивают
Видео интересное, но если бы у меня спрашивали на собесах такое, я бы получала больше положительной обратной связи) обычно бывает сложнее, причем сильно.
Например? )
В моём понимании сценарий лучшего собеседования, когда кандидат презентует себя: старается отвечать развернуто, если с ходу не врубается, то уточняет/рассуждает и в таком вот духе... "Если решил, почему именно так? Какие минусы/плюсы такого подхода? А можешь по-другому? и т.д." А данный собес больше производит впечатление мастер-класса, на котором Анатолий как будто заинтересован в максимумальной прокачке Саши, не зависимо от исхода собес-а...
Крайне лояльный интервьювер) Ещё ни разу не попадал к таким) Но, наверное, дело как раз в том, что нет цели узнать уровень, есть цель дать опыт прохождения собеса)
Всегда проводил все собесы в таком формате, мое глубочайшее убеждение, что это никак не мешает понять уровень.
@@karpovcourses Тогда могу только дать вам свой респект за это) С радостью у вас бы прособеседовался)
это очень полезно! спасибо
Хотелось бы тоже поучаствовать в таком, что бы потом посмотреть на себя со стороны
Егор очень молодо выглядит
Огонь
в первом же задании сразу не правильно, в его случае корректно бы было for i in range(4, -1,-1): print(my_list[i]). А так он просто вывел значения range, никак не связанные с my_list
Но корректнее было бы
for i in range(len(my_list), 0,-1):
print(my_list[i-1])
@@89272606798 my_list[::-1]
@@909404 ну вы дали новое решение, которое конечно лучше, я же поправил вышенаписанный код
твое тоже не правильно.нужно использовать длину списка, а не заведомо известное число
@@user-kk6nr5hu6o это референс на идею парня из видео. Разумеется, есть много более адекватных вариантов даже без длины списка. типа my_list.reverse() или my_list[::-1] или [*reversed(my_list)]
1. Sorted
А можно ссылку на датасет, порешать эти задачки?
А можно ссылку на датасет?) хотелось бы в параллель тоже делать задачку вместе с собеседуемым))
Можно сгенерить набор случайных данных
Если кто-то захочет потренироваться в pandas, задания из видео можно выполнять на дата сете dt:
import numpy as np
import pandas as pd
from datetime import datetime
dt_size = 1000 #размер дата сета
def random_date(start, end):
pattern = '%Y-%m-%d'
start = datetime.strptime(start, pattern).timestamp()
end = datetime.strptime(end, pattern).timestamp()
return(np.random.randint(start, end))
id = np.random.randint(1, 51, dt_size)
cats = ['music', 'message', 'feed', 'photo']
section = np.random.choice(cats, dt_size, replace=True, p=[0.3, 0.30, 0.10, 0.30])
time = [random_date('2021-02-15', '2022-08-21') for _ in range(0, dt_size)]
dt = pd.DataFrame({'id': id, 'section': section, 'time': time})
СTE надо аккуратно использовать, tmp можно быстро закончить...
Можете ссылку кинуть датаферйма для выборки?
Так первое задание же неправильно решено, он просто вывел индексы и это совпало ибо лист был [1, 2, 3, 4, 5].
Я верно понимаю, что это только часть собеседования, именно на кодинг?
Если да, то что было бы в следующем этапе? Вопросы по матстату и теории вероятностей?
И взяли ли бы Вы ребят на работу после такого собеседования?
Следующая серия могла бы быть вот такой - ua-cam.com/video/svk9GmIMR3U/v-deo.html
И результат зависит бы суммарно от двух секций.
@@karpovcourses спасибо. Сразу посмотрел после этого ролика.
Ну если бы один отвечал за всех 4 человек, он бы попал к Вам в команду? Вроде как особых претензий у Вас к ним не было.
@@Egor1ctrl в целом да, если усреднить всех четверых то это 4 из 5. Думаю, что если бы хорошо сделали тестовые я бы взял
@@karpovcourses спасибо за ответ, хотелось бы посмотреть что-то подобное на мидл уровне :)
В лайве пытаться писать запросы очень тяжело, тупеешь на глазах. В спокойной обстановке думаю ребята соображают на порядок лучше, но все равно, аналитика это не инструменты, функции, методы, это суть и смыслы, а их ребята как раз путают. В курсах по аналитике нужен базовый курс логики мне кажется))
Нужен просто опыт работы. Через год-два все придет.
Целиком согласен
Тоесть к тебе нельзя подойти во время работы и сказать "давай тут поправим". При этом, что ты BA, а не программист. Ахуенный BA. В BA нет спокойных обстановок. Вы сидите на звонке и бреинштормите по 6-8 часов.
@@MaruiInfantry что такое ВА
Что такое базовый курс логики? Если человек понимает работу обычного цикла, или условной конструкции, то он уже способен логично мыслить. В Аналитике нужно знать бизнес процесс, что, откуда и куда, это и есть логика. Аналитику пофиг что считать, бананы, семечки, количество пользователей, главное знать подходы, а это и есть инструменты и методы
Кто ищет датасет, можно найти в чате (ссылка на чат под видео) по поиску "Всем привет. А где можно взять датасет с видео про тех собеседования джуна аналитика?"
46:56
Разве нельзя было написать
select toDate(time) as day, action, count(*)
from [table]
group by day, action
На реальных собеседах реально так легко или зависит от работадателя?
Анатолий, в очередной раз огромное вам спасибо за такой формат роликов! По контенту: соискатель, который не мог перевернуть список - удивил. Извините, но соглашусь с предыдущими мнениями - человек не знает основы. Возможно, сейчас и вправду упор на sql + bi, или эффект волнения всё же силён. Хотя, такое надо посреди ночи встать и ответить
Ds 5 в рос бигтехе и хз как половину решать😮
Сколько зарабатывал такой специалист? Курсы, материалы для подготовки?
спс, но звук слабый.
Про reversed() то забыл что ли?
на 1:01:45 сразу понял его ошибку. Не зря учился
И это интервью на джуна аналитика? У меня на позицию стажера было сложнее. Там спрашивали помимо python, алгоритмы ml (мат часть), методы feature selection и data cleaning, docker, логические задачки давали. Плюс надо было знать англ минимум upper-intermediate. И все это за зарплату стажера 30 к в Москве (:
В яндекс видимо стажировка была)
И что? Ты решила выпендриться как у тебя сложно? Или как мало у тебя получают стажеры?
Просто делюсь своим опытом
Вам не повезло. Спрашивать можно что угодно, если люди не совсем в адеквате
У видео другая задача стоит. И они (авторы) на 100 процентов с ней справились. Ну а вообще я тоже самое заметил на зп 60-100 требуют +999 рук и много программ в совершенстве. А вот от зарплаты 250к то там три пять программы табло sql и будь здоров. Даже вышки не нужно.... Чекните сами.
Перевернуть список без реверса можно так:
y=[]
for i in range(len(my_list)):
y.append(my_list[len(my_list)-i-1])
my_list[::-1] и всё
50 минута cte? PostgreSQL.
Последнее задание - только Postgres, только Хардкор)
SELECT
DISTINCT user_id
FROM (
SELECT
user_id
, toDate(time) as day
FROM simulator.feed_actions
WHERE day = '2021-09-01'
AND user_id IN (
SELECT
user_id
FROM (
SELECT
user_id
, count(*) as days_active
FROM (
SELECT
user_id
, toDate(time) as day
, count(*) as actions
FROM simulator.feed_actions
GROUP BY user_id, day
)
GROUP BY user_id
HAVING days_active = 1)))
@@Sibbarb9 Почему? Запрос возвращает идентичный результат. У вас есть предложения как сократить код? Если представить, что в компании нет Clickhouse, а есть Postgres?
Ахаха, больше селектов!!!!
Кажется, вы перебарщиваете. Этого будет достаточно и на постгресе
Select
user_id
From
simulator.feed_actions
Group by
user_id
Having 1=1
and min(time) >= ‘2021-09-01’
and max(time) < ‘2021-09-02’
@@messiaheugene Благодарю. Очень элегантное решение. Да, нужно не пытаться сразу же с наскока решить задачу первым способом, который пришел в голову. Но я симулировал условия собеседования (ограничения по времени 5 минут) и это был единственный рабочий вариант, который мне пришел в голову за это время. Раком-боком конечно, но поставленную задачу я верно решил)
А те токсики кто подкукарекивал, так свой код и не показали)
Я что-то не пойму. Есть же reverse, чтобы написать лист задом наперёд. my_list.reverse() прекрасно с этим справляется.
Да, это мог бы быть правильный ответ, но если забыли нужный метод, всегда можно сделать вручную!)