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

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

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
💥 Топ функций языка R для анализа данных

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

Сегодня в карусели - подборка самых полезных функций библиотек семейства tidyverse.

Конечно, этот список можно сделать намного шире, но эти функции - must have.

#rstat
💯 7 уровней использования zip в Python 💯

Представьте себе задачу:

> У Вас есть матрица, представленная вложенным списком:
> [­[1, 2, 3], [1, 2, 3]]. Транспонируйте эту матрицу в 1 строчку кода.

Если Вы не смогли это сделать сходу, то Вам точно нужно познакомиться с функцией zip.

Сегодня обсудим, как:

✓ использовать функцию zip
✓ соединять неравное количество элементов
✓ пользоваться zip_longest
✓ делать распаковку
✓ создавать и обновлять словари с помощью zip
✓ использовать zip в циклах for
✓ транспонировать матрицу

К концу статьи Вы точно станете гуру использования функции zip. И больше Ваша жизнь не станет прежней 🤤

Приятного чтения!

#python
​​Рубрика «Вопросы с собеседований» 💥

Что такое monkey patch в Python?

Ответ:

Monkey patching в Python (и других языках программирования) - изменение поведения функции или объекта уже после того, как они были заданы.

Как вариант, Вы можете изменить какой-то атрибут или метод какого-то класса.

Например:

import datetime
datetime.datetime.now = lambda: datetime.datetime(2012, 12, 12)


Вообще говоря, monkey patching в большинстве случаев - ужасная идея. Это будет вызывать путаницы и ошибки, ведь Вы или Ваши коллеги будете ожидать от функции ее изначального поведения, а не "подменного".

Однако, иногда этот принцип очень полезен. Например, при mock тестировании кода. Если Вам нужно проверить - как какая-то конкретная функция будет вести себя в той или иной ситуации, то Вам мало интересно, как будет вести себя весь остальной код. Тогда Вы можете сделать тот самый monkey patch - заранее "предопределить" поведение всей остальной программы и провести тест только одного кусочка.

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

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

В этом и есть смысл monkey patch - мы сымитировали работу основного кода, "подсунув" туда нужный результат, и протестировали только последний блок.


#interview_problems #python
​​Как использовать %timeit для замера времени выполнения кода в Python 🐍

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

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

Все это можно сделать с помощью утилиты %timeit. Она замеряет время выполнение кода, прогоняя его много раз и выбирая лучший результат.

Синтаксис такой:

> %timeit [-n <N> -r <R> [-t|-c] -q -p <P> -o] action


Расшифруем все параметры 👉🏻

-n Выполнить action N раз за цикл. Если не указать, выбирается автоматически.

-r Количество повторов R (R раз по N повторов)

[-t|-c] Использовать time.time или time.clock для замера

-p Точность до P знаков. По умолчанию 3

-q Quiet, не выводить результат

action функция или действие, которое мы хотим замерить

Пример (просто выполнить pass):

> %timeit -n 100 -r 5 -t -q -p 5 pass


Стандартный вывод команды (если не указан параметр quiet) - количество циклов и лучшее время. Например:

> 100 loops, best of 5: 7.1526 ns per loop


#python
​​GROK IT!

Сегодня мы решили долго не думать и сделать задачу прям по последнему посту 😂

Задача по Python: Что выведет код?

Правильный ответ раскроем завтра 😏

#grokit #python
​​GROK IT!

Вчера опубликовали задачу по Python: Что выведет код?

Ответ: Ничего

💥 Объяснение:

Мы указали только 2 параметра: -n и -q, после чего передаем на замер времени функцию fun.

Параметр -n указывает количество повторов в цикле. Параметр -q (quiet) показывает, что результаты выводить не нужно.

Таким образом, мы производим замер времени и ничего не выводим. Вообще.

❗️То есть правильный ответ - ничего.


#grokit #python
👍1
🐻 Что за зверь - аффинные преобразования?

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

Действительно, все постоянно о них говорят: «инвариантность к аффинным преобразованиям», «аугментация с помощью аффинных преобразований», «аффинные преобразования в компьютерной графике» и так далее.

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

Вы сможете? В любом случае, давайте немного обсудим этот вопрос.

Подробнее - в нашей статье на Хабре 😏

Приятного чтения! ☺️

#math
​​Дайджест вакансий за 25.01.2021 - 01.01.2021 🕵️‍♂️

Младший аналитик данных

Зарплата: от 30 000 до 40 000 руб.

Компания: ООО Диджитал Лайн

Занятость: Частичная занятость, удаленная работа (стажировка)

Опыт: не требуется

Ключевые навыки: SQL

Ссылка на вакансию: https://vk.cc/bXRESJ


ML разработчик, python

Зарплата: от 210 000 до 250 000 руб.

Компания: Mindbox

Занятость: Полная занятость, полный день

Опыт: 1–3 года

Ключевые навыки: Python (sklearn, lightgbm, xgboost, hyperopt, Implicit, nmslib), ML / Kaggle. SQL

Дополнительные навыки: Pytorch, Tensorflow

Ссылка на вакансию: https://vk.cc/bXRFV3

IT Business Analytics Internship / Бизнес-аналитик (Стажер)

Зарплата: от 70 000 руб.

Компания: Procter & Gamble

Занятость: Стажировка, полный день

Опыт: не требуется

Ключевые навыки: Английский язык (Upper Intermediate или выше), KNIME, Power BI, Tableau, Spotfire, SQL, Экосистема больших данных (Hadoop, Azure), Python, R

Ссылка на вакансию: https://vk.cc/bXRGT4


Программист-аналитик MS SQL

Зарплата: от 80 000 до 100 000 руб.

Компания: ООО Инвентор Софт

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: MS SQL Server, Transact SQL

Дополнительные навыки: С# (разработка DLL для MS SQL), Delphi, Python, PHP

Ссылка на вакансию: https://vk.cc/bXREqT


Machine Learning Engineer

Зарплата: от 2 800 до 4 000 EUR

Компания: Greenscreens.AI

Занятость: Полная занятость, полный день

Опыт: от 3 лет

Ключевые навыки: Python (jupyter notebook, pandas, numpy), SQL, Фреймворки ML (tensorflow, sklearn), Алгоритмы ML (NNs, xgboost, random forest, линейная регрессия), Контроль версий Git, Английский язык

Дополнительные навыки: DevOps, MLOps, Docker, Kubernetes, REST API

Ссылка на вакансию: https://vk.cc/bXRI1a


Data Analyst

Зарплата: от 70 000 до 100 000 руб.

Компания: ООО МАГ Девелопмент

Занятость: Полная занятость, удаленная работа

Опыт: от 1 года

Ключевые навыки: SQL, Python, Бизнес-метрики

Дополнительные навыки: Power BI, Методы ML, Jupyter Notebook, Pycharm, Terminal (Linux/MacOS), Gitlab, Jira

Ссылка на вакансию: https://vk.cc/bXRIBQ


Программист-аналитик Python

Зарплата: от 170 000 руб.

Компания: ООО Регистратор доменных имен РЕГ.РУ

Занятость: Полная занятость, удаленная работа

Опыт: от 3 лет

Ключевые навыки: SQL (MySQL), Python ((Pandas, NumPy), Linux-системы, Git, Gig Data

Дополнительные навыки: Clickhouse, ElasticSearch, Hadoop, BI-системы, Математическая статистика, DS/ML

Ссылка на вакансию: https://vk.cc/bXRE4T


#vacancy
​​💃 7 приемов математики, которые облегчат Вам жизнь

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

Файл с формулами прикреплен к посту

1. Интеграл от нечетной функции в симметричных пределах = 0.

2. Интеграл от четной функции в симметричных пределах = удвоенному интегралу от этой же функции в половинном пределе.

3. Производная от интеграла по переменному верхнему пределу = значению подынтегральной функции в этом пределе.

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

5. Сумма арифметической прогрессии = сумме первого и последнего члена, умноженной на половину количества членов.

6. Сумма геометрической прогрессии = произведение первого члена на разность (1 - множитель прогрессии q в степени n) и разделить на разность (1 - множитель прогрессии q)

7. Сумма бесконечно убывающей геометрической прогрессии = первый член прогрессии разделить на (1 - множитель прогрессии q).

#math
​​GROK IT!

Задача по Python: Что выведет код?

Правильный ответ раскроем завтра 😏

#grokit #python
​​GROK IT!

Вчера опубликовали задачу по Python: Что выведет код?

Ответ: TypeError

💥 Объяснение:

В данном примере мы создаем множество (set) из квадратов чисел от 0 до 19.

Числа в множестве сохраняются в случайном порядке, а не друг за другом, поэтому вообще не факт, что числа будут идти так: 0, 1, 4...

Но здесь дело в другом. Мы пытаемся сделать подвыборку из первых пяти элементов множества. Однако, set не поддерживает индексацию, из-за чего мы получаем TypeError.

Если бы мы хотели все-таки выбрать первые 5 элементов (причем по порядку), то стоило бы использовать list comprehension:

mean([i**2 for i in range(20)][0:5])


И вот тогда ответ был бы точно 6.

❗️А здесь правильный ответ - TypeError.


#grokit #python
​​✍🏻 5 советов по оптимизации SQL-запросов ✍🏻

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

Вам это знакомо?🤔

Сегодня разберем 5 советов по оптимизации SQL-запросов, которые позволят Вам сохранить и без того хрупкие "нервы" процессора и свои, в том числе!

В статье рассматриваем:

→ Как вывести всё, да не всё
→ Как сузить круг "подозреваемых"
→ Как существенно облегчить работу
→ Как правильно объединяться
→ И много что еще!

Обещаем, Вы обязательно узнаете что-то новое!😏

Приятного чтения!


#sql
​​Дайджест вакансий за 01.02.2021 - 08.02.2021 🕵️‍♂️


Программист Python (Удаленно)

Зарплата: от 140 000 до 180 000 руб.от 30 000 до 40 000 руб.

Компания: ООО ФК ПУЛЬС

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: Python, Django + DRF, Celery, Linux, SQL (MySql\ PostgreSQL)

Дополнительные навыки: Администрирование БД, AWS или Google Cloud, Git, Unit Test, Functional Test, Docker

Ссылка на вакансию: https://vk.cc/bYa8bn


AI разработчик

Зарплата: от 70 000 до 100 000 руб.

Компания: Университет искусственного интеллекта

Занятость: Полная занятость, удаленная работа

Опыт: 1–3 года

Ключевые навыки: Python (Keras, TensorFlow, PyTorch), Object Detection, Computer vision, ML, Deep learning

Ссылка на вакансию: https://vk.cc/bYa93n


Data Scientist

Зарплата: от 120 000 до 180 000 руб.

Компания: ООО МАГ Девелопмент

Занятость: Полная занятость, удаленная работа

Опыт: от 2 лет

Ключевые навыки: Математическая статистика, Machine learning, Python/Scala, Pandas, NumPy, Sklearn, XGBoost, Plotly, Matplotlib, Seaborn, SQL (MS SQL и ClickHouse )

Дополнительные навыки:Jupyter Notebook, Pycharm, Terminal (Linux/MacOS), Gitlab, Jira

Ссылка на вакансию: https://vk.cc/bYaadv


Back-end разработчик Python

Зарплата: от 140 000 руб. до 170 000 руб

Компания: Специальные системы и технологии

Занятость: Полная занятость, удаленная работа

Опыт: от 3 лет

Ключевые навыки: Python2.7/3.5, SQL, Фреймворки: Flask, FastApi, Базы данных: MSSQL, PostgreSQL, MySQL, Сервера: IIS, Nginx, Сетевые протоколы и технологии: ASGI, WSGI, REST, XML, JSON, Совместная разработка: Git/GitLab, Очереди задач: RabbitMQ, Redis, Python/Celery, Опыт написания юнит-тестов (Jest+Enzyme), JIRA, ООП

Ссылка на вакансию: https://vk.cc/bYa7Iq


Программист SQL

Зарплата: до 130 000 руб.

Компания: Севстар

Занятость: Полная занятость, удаленная работа

Опыт: не требуется

Ключевые навыки: SQL (предпочтительно PostgreSQL, PL/pgSQL)

Дополнительные навыки: git, Java Core, Spring Framework, docker, perl

Ссылка на вакансию: https://vk.cc/bYaaGT


Разработчик BI (remote)

Зарплата: от 3 000 USD

Компания: Nitka Technologies

Занятость: Полная занятость, удаленная работа

Опыт: от 2 лет

Ключевые навыки: SQL, SAP Data Services, ETL-процессы

Дополнительные навыки: Python, AWS, Разговорный английский язык

Ссылка на вакансию: https://vk.cc/bYa7ln


Товарный аналитик в ecommerce-проект

Зарплата: до 130 000 руб.

Компания: СТАРТЕКС

Занятость: Полная занятость, удаленная работа

Опыт: не требуется

Ключевые навыки: Power BI, Qlik, Tableau, 1С, Excel, SQL, Создание аналитической отчётности и/или прогностических моделей

Ссылка на вакансию: https://vk.cc/bYabbU


#vacancy
☕️Понедельник - самое подходящее время для того, чтобы поменять жизнь!

Сегодня Елизавета, член команды IT Resume, рассказывает в блоге Типичный программист о том, как ей удалось выйти из космических войск и войти в IT 😅

Приятного чтения 👍🏻

#itresume
​​⚠️ Почему прямо сейчас нужно попробовать Numpy 1.20.0?

Недавно вышел релиз Numpy 1.20.0 - большое обновление. Много всего завезли, много чего убрали, многое пофиксили. Вот самое интересное:

1️⃣ Новая функция permuted

Теперь, например, можно независимо друг от друга перемешать элементы по размерностям 2D массива.

2️⃣ Скользящие окна sliding_window_view

Теперь работать с оконными вычислениями стало проще. В смежных библиотеках они уже были, теперь и в Numpy завезли. Бегом переписывать свои скользящие средние 😏

3️⃣ Ушли алиасы для встроенных типов

Знаете, чем отличается int и numpy.int? Ничем, теперь эту путаницу устранили.

4️⃣ Давайте без финансов

Финансовые функции irr, npv и прочие отправили в пакет numpy_financial. Чтобы не вносили смуты.

5️⃣ Аргумент where в функция all, any, std, mean и var

Теперь удобно считать математические характеристики или использовать any/all только с частью многомерного массива. Для этого достаточно указать параметр where.

Естественно, это не все изменения - их очень много. Полный список можно почитать здесь 👉🏻 http://bit.ly/3a2Fvy4

Кстати говоря, если полазить по исходникам на Github, то можно увидеть много забавного. Например, разработчики пишут, что у них неправильно работают какие-то куски кода 😂

PS. Были жалобы, что после обновления перестали работать части старого кода. Таких было немного, но были. Будьте внимательны ☺️

#python
​​GROK IT!

Задача по Python: Что выведет код?

Правильный ответ раскроем завтра 😏


#grokit #python
​​GROK IT! Ответ на задачу про вычитание множеств 🔔

Вчера опубликовали задачу по Python: Что выведет код?

Ответ: {1, 2}

💥 Объяснение:

В данном примере у нас есть 2 множества (set). Этот контейнер содержит набор уникальных элементов в случайном порядке.

Первое и очевидное желание - просто вычесть второе множество из первого почленно. Тогда получится {-2, -2, -2}.

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

Однако, нет. При вычитании двух множеств выполняется другая операция - симметрическая разность. И в итоговое множество попадают только те элементы, которые ЕСТЬ в первом сете, но НЕТ во втором. В данном случае, это {1, 2}.

❗️Таким образом, правильный ответ - {1, 2}.


#grokit #python