Сравнение синтаксиса [ Pandas | Polars | PySpark] ч.1
Ранее на канале мы уже ознакомились с теорией о:
• Pandas и Polars
• PySpark
Сегодня разберемся, как одни и те же операции выполняются в данных инструментах.
Главное саммари по этому сравнению:
1. Polars очень схож с Pandas
2. PySpark очень схож с Polars
Так как в свободном доступе не получается поработать с PySpark - можно научиться работать с Polars и бОльшую часть вы уже будете знать
Ранее на канале мы уже ознакомились с теорией о:
• Pandas и Polars
• PySpark
Сегодня разберемся, как одни и те же операции выполняются в данных инструментах.
Главное саммари по этому сравнению:
1. Polars очень схож с Pandas
2. PySpark очень схож с Polars
Так как в свободном доступе не получается поработать с PySpark - можно научиться работать с Polars и бОльшую часть вы уже будете знать
👍9❤5⚡3🔥3
Практические вопросы по JOIN-ам
Мои любимые вопросы по JOIN-ам, которые часто показывают, знает ли человек на самом деле, как они работают:
У вас есть 2 таблицы.
1ая - 100 строк
2ая - 10 строк
Какое [ min & max ] количество записей выдаст:
1 секция
• inner join
• left join
• right join
2 секция
• cross join
• full outer join
• anti left join
Переходим к скринами, сначала пробуем сами решить, следующим скрином сверяемся с моим решением.
Ставим 💯 если получилось решить все, ✍️ если узнали для себя что-то новое
Мои любимые вопросы по JOIN-ам, которые часто показывают, знает ли человек на самом деле, как они работают:
У вас есть 2 таблицы.
1ая - 100 строк
2ая - 10 строк
Какое [ min & max ] количество записей выдаст:
1 секция
• inner join
• left join
• right join
2 секция
• cross join
• full outer join
• anti left join
Переходим к скринами, сначала пробуем сами решить, следующим скрином сверяемся с моим решением.
Ставим 💯 если получилось решить все, ✍️ если узнали для себя что-то новое
✍22🔥5❤3💯3👍1
Взаимодействие с командой DWH
Один из важнейших навыков миддл аналитика — грамотное взаимодействие с командой DWH. Здесь подразумевается:
1. Понимание работы дата-инженера
• Вы должны понимать основные задачи и инструменты, с которыми работают дата-инженеры: ETL-процессы, структуры бд, способы оптимизации запросов.
2. Коммуникация на одном языке
• Важно уметь объяснить свои потребности на понятном команде языке и также понимать их ответ.
• Это не только упростит работу, но и поможет вам быть на одной волне с командой + снизит количество возможных недоразумений.
3. Составление четкого ТЗ для создания витрин
• Умение чётко и структурированно составить ТЗ для команды DWH — ключ к получению правильных данных.
• Хорошее ТЗ должно включать все необходимые детали: требования к данным, фильтры, формат и частоту обновления.
4. Понимание работы витрин
• Вы должны знать, как работают витрины данных: из каких источников данные собираются, как они обновляются и как их правильно использовать в аналитике.
• Это позволит не только корректно запрашивать данные, но и использовать их наиболее эффективно.
Один из важнейших навыков миддл аналитика — грамотное взаимодействие с командой DWH. Здесь подразумевается:
1. Понимание работы дата-инженера
• Вы должны понимать основные задачи и инструменты, с которыми работают дата-инженеры: ETL-процессы, структуры бд, способы оптимизации запросов.
2. Коммуникация на одном языке
• Важно уметь объяснить свои потребности на понятном команде языке и также понимать их ответ.
• Это не только упростит работу, но и поможет вам быть на одной волне с командой + снизит количество возможных недоразумений.
3. Составление четкого ТЗ для создания витрин
• Умение чётко и структурированно составить ТЗ для команды DWH — ключ к получению правильных данных.
• Хорошее ТЗ должно включать все необходимые детали: требования к данным, фильтры, формат и частоту обновления.
4. Понимание работы витрин
• Вы должны знать, как работают витрины данных: из каких источников данные собираются, как они обновляются и как их правильно использовать в аналитике.
• Это позволит не только корректно запрашивать данные, но и использовать их наиболее эффективно.
❤7🔥4👍2
Опыт увольнений
Многие говорят как устроиться быстрее и лучше, но мало кто говорит о теме увольнения.
Недавно у меня вышла интереснейшая беседа с HR-ом в одном из чатов.
Сначала небольшая МОЯ предыстория:
Я проработал небольшое количество времени в Озоне и все было супер... Ровно до тех пор пока ко мне не пришел рук и не сказал: "Никит, у нас оптимизация, сверху пришли и сказали сократить штат" (Это правда)
Мне предлагают 2 варианта:
1 - ротация
2 - 2 оклада и полюбовно распрощаемся
Я решил не торопиться со вторым и собесился в разные команды, куда хотел - не получилось, куда получилось - понял, что не будет интересно в длительной перспективе. И выбрал 2 вариант. Хотя озон мега хорош(
Далее советы начинающим и уже опытным ребятам тусующимся в этой кухне:
1. Если работодатель предлагает уволится «давайте по соглашению сторон в зубы стандартно 2 оклада» - всегда торгуйтесь, законом не оговорены никакие стандартные 2 оклада. Но многое зависит от причин.
• Если Ваше место сокращают, но не хотят это проводить как сокращение, то торговаться можно легко.
• Если Вас "просят" уйти (doesnt matter как вы работаете), то тоже можно торговаться, но надо понимать, что на Вас будут давить.
• Если вы хорошо работаете (по мнению обеих сторон), но, допустим, просто Ваше место нужно под другого, вы дорого обходитесь, у них есть вариант дешевле - это и используйте: "За два оклада уйду через три месяца. А за пять - сейчас"
• если вы проработали меньше 3-х месяцев, то торговаться вряд ли получится(
Важные момента для аргументации:
• в нашей сфере поиск работы с моим стажем в среднем занимает N (Если N > 2) месяцев, поэтому 2 оклада меня не спасут
• короткий срок работы вызовет вопросы у будущего работодателя (все равно не прикольно, можно указать этот момент)
• при устройстве опять проходить тучу собеседований и тестовых - не хотелось бы, а вот получается придется(
Многие говорят как устроиться быстрее и лучше, но мало кто говорит о теме увольнения.
Недавно у меня вышла интереснейшая беседа с HR-ом в одном из чатов.
Сначала небольшая МОЯ предыстория:
Я проработал небольшое количество времени в Озоне и все было супер... Ровно до тех пор пока ко мне не пришел рук и не сказал: "Никит, у нас оптимизация, сверху пришли и сказали сократить штат" (Это правда)
Мне предлагают 2 варианта:
1 - ротация
2 - 2 оклада и полюбовно распрощаемся
Я решил не торопиться со вторым и собесился в разные команды, куда хотел - не получилось, куда получилось - понял, что не будет интересно в длительной перспективе. И выбрал 2 вариант. Хотя озон мега хорош(
Далее советы начинающим и уже опытным ребятам тусующимся в этой кухне:
1. Если работодатель предлагает уволится «давайте по соглашению сторон в зубы стандартно 2 оклада» - всегда торгуйтесь, законом не оговорены никакие стандартные 2 оклада. Но многое зависит от причин.
• Если Ваше место сокращают, но не хотят это проводить как сокращение, то торговаться можно легко.
• Если Вас "просят" уйти (doesnt matter как вы работаете), то тоже можно торговаться, но надо понимать, что на Вас будут давить.
• Если вы хорошо работаете (по мнению обеих сторон), но, допустим, просто Ваше место нужно под другого, вы дорого обходитесь, у них есть вариант дешевле - это и используйте: "За два оклада уйду через три месяца. А за пять - сейчас"
Важные поинт.
Но вообще надо понимать, что всегда лучше расставаться красиво. Земля такая круглая, а бумеранг всегда возвращается)
• если вы проработали меньше 3-х месяцев, то торговаться вряд ли получится(
Важные момента для аргументации:
• в нашей сфере поиск работы с моим стажем в среднем занимает N (Если N > 2) месяцев, поэтому 2 оклада меня не спасут
• короткий срок работы вызовет вопросы у будущего работодателя (все равно не прикольно, можно указать этот момент)
• при устройстве опять проходить тучу собеседований и тестовых - не хотелось бы, а вот получается придется(
Итог:
Вот поэтому мне надо не 2 , а N окладов и я без вопросов уйду.
Самый важный поинт:
Не наглеть на пустом месте. Мир очень маленький и никогда не знаешь как сыграет та или иная ситуация в будущем.
❤32👏7🔥6
Совместно с каналом Ани решили сделать ответы на одни из самых часто задаваемых вопросов ребят, которые хотят вкатиться, но те кто уже в профессии, хотелось бы услышать ваше мнение по поводу вопросов.
1. У меня нет высшего технического образования. Это будет проблемой, нужна ли она вообще?
• Критически - не важна.
• Но для многих HR это важный поинт, если вы залетаете в IT специальность.
• У меня лично специальность Информационая Безопасность
Могу сказать что например экономисты вообще норм заходят в аналитику из-за понимания юнит экономики.
2. Как долго готовиться к собесам?
В зависимости от того, насколько хорошо вы знаете ту или иную предметную область.
В интернете куча роадмэпов по всем направлениям, но вот мой стартер пак для начинающих:
• Leetcode 30 первых задачек уровня easy по алгоритмам Python
• Leetcode 30 первых задачек по SQL + Обязательное решение не только на [ MySQL | PostreSQL ], но и решить эти задачки через Pandas (там есть такая возможность)
• SQL: подзапросы, CTE, сложные запросы, все типы оконок (агрегирующие - маст хэв) [ ранжирующие, смещения ] - обязательно потрогать и понять назначение, все джоины и порядок выполнения операторов, индексы
• По возможности парочку пару пет проектов на гитхабе с полным цикла анализа данных (Очистка, заполнение, обработка данных - тот же parse dates, визуализация, создание новых фич, label encoding, one hot encoding)
• Юнит экономика (понимание различных метрик в разных сферах)
• Шарить за колоночные бд, PySpark, HDFS
3. Мое мнение о стажировках
Если честно это очень щекотливая тема, я считаю пробоваться - стоит всегда. Но делать ставку только на них - не стоит. Вот куча других каналов как можно попасть на работу
• Подаваться на джуновские вакансии (от вас не убудет, а если хоть одна компания ответит из 20, это реальная возможность)
• Писать на почту самим в небольшие компании
• Мониторить чатики по типу: Джуниор вакансии
• Качать нетворкинг, просить знакомых рекомендовать вас в стажерские / джуновские позиции.
Вторую часть ответов на интересеные вопросы вы можете увидеть на канале Ани которая уже 5 лет работает в аналитике и помогает развивать ее в компании недвижимости М2
1. У меня нет высшего технического образования. Это будет проблемой, нужна ли она вообще?
• Критически - не важна.
• Но для многих HR это важный поинт, если вы залетаете в IT специальность.
• У меня лично специальность Информационая Безопасность
Могу сказать что например экономисты вообще норм заходят в аналитику из-за понимания юнит экономики.
2. Как долго готовиться к собесам?
В зависимости от того, насколько хорошо вы знаете ту или иную предметную область.
В интернете куча роадмэпов по всем направлениям, но вот мой стартер пак для начинающих:
• Leetcode 30 первых задачек уровня easy по алгоритмам Python
• Leetcode 30 первых задачек по SQL + Обязательное решение не только на [ MySQL | PostreSQL ], но и решить эти задачки через Pandas (там есть такая возможность)
• SQL: подзапросы, CTE, сложные запросы, все типы оконок (агрегирующие - маст хэв) [ ранжирующие, смещения ] - обязательно потрогать и понять назначение, все джоины и порядок выполнения операторов, индексы
• По возможности парочку пару пет проектов на гитхабе с полным цикла анализа данных (Очистка, заполнение, обработка данных - тот же parse dates, визуализация, создание новых фич, label encoding, one hot encoding)
• Юнит экономика (понимание различных метрик в разных сферах)
• Шарить за колоночные бд, PySpark, HDFS
Крайне рекомендую использовать для подготовки бот Ани @DataismPrepBot, которым пользуюсь сам
Там собраны все необходимые темы для подготовки в виде квиза. Очень крутой интерфейс с гибкой настройкой тем под вас!
Еще важный поинт:
Половина из того, что я рекомендовал может и не понадобиться как и куча рекомендаций других людей, все зависит от собеседования и компании куда устраиваетесь.
Ничто не может претендовать на истину в первой инстанции
3. Мое мнение о стажировках
Если честно это очень щекотливая тема, я считаю пробоваться - стоит всегда. Но делать ставку только на них - не стоит. Вот куча других каналов как можно попасть на работу
• Подаваться на джуновские вакансии (от вас не убудет, а если хоть одна компания ответит из 20, это реальная возможность)
• Писать на почту самим в небольшие компании
• Мониторить чатики по типу: Джуниор вакансии
• Качать нетворкинг, просить знакомых рекомендовать вас в стажерские / джуновские позиции.
Сразу отвечу на вопрос: откуда брать знакомых?
• Вы можете обратиться ко мне и я вас порекомендую на доступные вакансии в МТС, не бойтесь стучаться в личку
Вторую часть ответов на интересеные вопросы вы можете увидеть на канале Ани которая уже 5 лет работает в аналитике и помогает развивать ее в компании недвижимости М2
Telegram
Dataism
Бот для подготовки к IT-собесам @DataismPrepBot 📲
Недушный канал про аналитику, карьеру в IT и немного португальского лайфстайла.
Полезно аналитикам, дата-сатанистам и продактам.
Недушный канал про аналитику, карьеру в IT и немного португальского лайфстайла.
Полезно аналитикам, дата-сатанистам и продактам.
❤23👍7⚡3❤🔥2🔥2🤩1
Сравнение синтаксиса [ Pandas | Polars | PySpark] ч.2
Ранее на канале мы уже сравнивали синтаксис этих инструментов:
Сегодня посмотрим на более продвинутые методы в данных инструментах
Ранее на канале мы уже сравнивали синтаксис этих инструментов:
Сегодня посмотрим на более продвинутые методы в данных инструментах
👍9❤6⚡2❤🔥1
Шардирование и партиционирование
Оооочень часто эти понятия путают. Давайте разберемся, в чем же отличие!
Партиционирование - это процесс разделения одной таблицы на логические части. Например, если у вас есть данные за несколько лет, вы можете разбить их по годам или месяцам. При этом партиции остаются частью одной таблицы и хранятся в одном хранилище данных. Партиционирование помогает оптимизировать запросы, так как вместо того, чтобы просматривать всю таблицу, система работает только с нужной партицией.
Шардирование - это разделение данных между разными серверами (или базами данных). Каждый шард хранит часть данных, и вместе они образуют полное хранилище. Это позволяет горизонтально масштабировать систему — при увеличении объема данных можно добавлять новые шарды и распределять нагрузку между ними.
В чем разница?
• Партиционирование — это способ оптимизации внутри одного хранилища данных, когда данные делятся на части, но остаются в одной таблице.
• Шардирование — это распределение данных между разными физическими серверами, чтобы избежать перегрузки одного сервера при большом объеме данных.
Закрепим:
Шардирование обычно используется в масштабируемых системах с большими объемами данных, тогда как партиционирование чаще применяется для оптимизации запросов в одной базе.
Оооочень часто эти понятия путают. Давайте разберемся, в чем же отличие!
Партиционирование - это процесс разделения одной таблицы на логические части. Например, если у вас есть данные за несколько лет, вы можете разбить их по годам или месяцам. При этом партиции остаются частью одной таблицы и хранятся в одном хранилище данных. Партиционирование помогает оптимизировать запросы, так как вместо того, чтобы просматривать всю таблицу, система работает только с нужной партицией.
Шардирование - это разделение данных между разными серверами (или базами данных). Каждый шард хранит часть данных, и вместе они образуют полное хранилище. Это позволяет горизонтально масштабировать систему — при увеличении объема данных можно добавлять новые шарды и распределять нагрузку между ними.
В чем разница?
• Партиционирование — это способ оптимизации внутри одного хранилища данных, когда данные делятся на части, но остаются в одной таблице.
• Шардирование — это распределение данных между разными физическими серверами, чтобы избежать перегрузки одного сервера при большом объеме данных.
Закрепим:
Шардирование обычно используется в масштабируемых системах с большими объемами данных, тогда как партиционирование чаще применяется для оптимизации запросов в одной базе.
👍22❤4🔥1
BI инструменты
В аналитике, в большинстве своем необходим навык построения дашбордов.
"А где получить навыки работы с ними?"
1. Superset
• легко настраивается, приятный туториал для новичков внутри приложения
• совместимость с Python: интеграция с Python требует дополнительных настроек, но возможна, что удобно для кастомного анализа (Привет Jinja...)
• популярен на рынке
2. Tableau
• легко настраивается
• совместимость с Python: интеграция с Python через Tableau Extensions API, что добавляет гибкость для анализа данных
• интуитивный интерфейс: идеален для пользователей с небольшим опытом в визуализации.
• популярен на рынке
3. Power BI
• интеграция с продуктами Microsoft: идеально для пользователей Microsoft Office.
• интеграция с Python и R
• менее популярен на рынке
4. Datalens
• интеграция с Яндекс Облаком: легко получает данные, хранящиеся в экосистеме Яндекса.
• поддержка Python: пока ограничена, но доступно взаимодействие с некоторыми скриптами через API.
• подходит для компаний с локальными данными: особенно удобен для тех, кто пользуется Яндекс.Облаком.
• набирает популярность на рынке
Все перечисленные на мой взгляд инструменты являются:
• актуальными и востребованными
• бесплатными
• поддерживают подключение данных из: PostgreSQL, MySQL, CSV и XLSX
В аналитике, в большинстве своем необходим навык построения дашбордов.
"А где получить навыки работы с ними?"
1. Superset
• легко настраивается, приятный туториал для новичков внутри приложения
• совместимость с Python: интеграция с Python требует дополнительных настроек, но возможна, что удобно для кастомного анализа (Привет Jinja...)
• популярен на рынке
2. Tableau
• легко настраивается
• совместимость с Python: интеграция с Python через Tableau Extensions API, что добавляет гибкость для анализа данных
• интуитивный интерфейс: идеален для пользователей с небольшим опытом в визуализации.
• популярен на рынке
3. Power BI
• интеграция с продуктами Microsoft: идеально для пользователей Microsoft Office.
• интеграция с Python и R
• менее популярен на рынке
4. Datalens
• интеграция с Яндекс Облаком: легко получает данные, хранящиеся в экосистеме Яндекса.
• поддержка Python: пока ограничена, но доступно взаимодействие с некоторыми скриптами через API.
• подходит для компаний с локальными данными: особенно удобен для тех, кто пользуется Яндекс.Облаком.
• набирает популярность на рынке
Все перечисленные на мой взгляд инструменты являются:
• актуальными и востребованными
• бесплатными
• поддерживают подключение данных из: PostgreSQL, MySQL, CSV и XLSX
❤🔥11🙏4
Способы оптимизирования запросов
Один из любимых вопросов от работодателей на собеседовании.
Чтож давайте разберемся, что от вас желают услышать интервьюеры
1. Уменьшение объема данных
• Используйте SELECT только нужные столбцы, вроде база, но так и тянет многих обычно нажать на любимую всеми звездочку.
• Ограничьте выборку по строкам, используя фильтры и лимиты.
2. Оптимизация функций и выражений
• Как можно меньшее использование LIKE, SUBSTRING, и преобразования типов, особенно в WHERE-условиях.
• Эти операции очень тяжелые в обработке и могут замедлить запрос (особенно с большими данными).
3. Выбор правильных индексов
• Индексирование наиболее используемых полей (часто используемых в WHERE, JOIN, и ORDER BY).
• Индексы ускоряют доступ к данным, но важно понимать меру и не лепить их 50 штук.
4. Агрегации и подзапросы
• Для оптимизации избегайте агрегаций и подзапросов, когда это возможно.
• Вместо них старайтесь использовать JOIN и WITH (CTE) для промежуточных результатов, если они приводят к меньшему объему данных на выходе.
5.Оптимизация JOIN и порядка соединений
• Порядок JOIN-ов важен: сначала соединяйте таблицы с меньшим количеством строк, чтобы уменьшить объем промежуточных данных.
• По возможности, оптимизируйте порядок с учетом индексированных полей.
6. Анализ планов выполнения (EXPLAIN)
• Используйте EXPLAIN для понимания, как база данных выполняет запрос.
• Смотрите на узкие места, как последовательность сканирования таблиц, индексы, и перезаписывайте запрос при необходимости.
• Поддерживается в: PostgreSQL, MySQL, SQL Server, Oracle (храни его господь) и другие...
7. Кэширование результатов
• Если один и тот же запрос крутите 10 раз, рассмотрите кэширование результатов в материальном представлении (materialized view) или временной таблице, чтобы не рассчитывать их каждый раз заново.
8. Использование партицирования (Partitioning)
• Разделение больших таблиц на разделы (partitioning) по датам или регионам (или другому подходящему полю)
• Позволяет базе данных обращаться только к нужному разделу, ускоряя запросы.
9. Выбор правильного типа данных
• Использование INT вместо BIGINT или VARCHAR(100) вместо TEXT экономит место и снижает объем данных, с которыми работают запросы, ускоряя их выполнение.
Какие способы вы бы еще добавили сюда?
Один из любимых вопросов от работодателей на собеседовании.
Чтож давайте разберемся, что от вас желают услышать интервьюеры
1. Уменьшение объема данных
• Используйте SELECT только нужные столбцы, вроде база, но так и тянет многих обычно нажать на любимую всеми звездочку.
• Ограничьте выборку по строкам, используя фильтры и лимиты.
2. Оптимизация функций и выражений
• Как можно меньшее использование LIKE, SUBSTRING, и преобразования типов, особенно в WHERE-условиях.
• Эти операции очень тяжелые в обработке и могут замедлить запрос (особенно с большими данными).
3. Выбор правильных индексов
• Индексирование наиболее используемых полей (часто используемых в WHERE, JOIN, и ORDER BY).
• Индексы ускоряют доступ к данным, но важно понимать меру и не лепить их 50 штук.
4. Агрегации и подзапросы
• Для оптимизации избегайте агрегаций и подзапросов, когда это возможно.
• Вместо них старайтесь использовать JOIN и WITH (CTE) для промежуточных результатов, если они приводят к меньшему объему данных на выходе.
5.Оптимизация JOIN и порядка соединений
• Порядок JOIN-ов важен: сначала соединяйте таблицы с меньшим количеством строк, чтобы уменьшить объем промежуточных данных.
• По возможности, оптимизируйте порядок с учетом индексированных полей.
6. Анализ планов выполнения (EXPLAIN)
• Используйте EXPLAIN для понимания, как база данных выполняет запрос.
• Смотрите на узкие места, как последовательность сканирования таблиц, индексы, и перезаписывайте запрос при необходимости.
• Поддерживается в: PostgreSQL, MySQL, SQL Server, Oracle (храни его господь) и другие...
7. Кэширование результатов
• Если один и тот же запрос крутите 10 раз, рассмотрите кэширование результатов в материальном представлении (materialized view) или временной таблице, чтобы не рассчитывать их каждый раз заново.
8. Использование партицирования (Partitioning)
• Разделение больших таблиц на разделы (partitioning) по датам или регионам (или другому подходящему полю)
• Позволяет базе данных обращаться только к нужному разделу, ускоряя запросы.
9. Выбор правильного типа данных
• Использование INT вместо BIGINT или VARCHAR(100) вместо TEXT экономит место и снижает объем данных, с которыми работают запросы, ускоряя их выполнение.
Очень важный поинт:
Кириллица кодируется 2мя байтами, в отличии от латиницы, то есть varchar(10) может содержать 5 ру символов, либо 10 en символов
Какие способы вы бы еще добавили сюда?
❤🔥25👍14❤5🔥1🫡1
Квиз! Какое [ min | max ] количество строк вернет CROSS JOIN для таблицы в 3 и 4 записи? (дублей нет)
Anonymous Quiz
6%
[ 0 | 3 ]
4%
[ 3 | 4 ]
16%
[ 3 | 12 ]
74%
[ 12 | 12 ]
👍6
Квиз! Какое [ min | max ] количество строк вернет INNER JOIN для таблицы в 3 и 4 записи? (Дублей нет)
Anonymous Quiz
19%
[ 0 | 4 ]
40%
[ 0 | 3 ]
19%
[ 3 | 4 ]
22%
[ 3 | 3 ]
👍4