Статистика и R в науке и аналитике
5K subscribers
46 photos
100 links
Всем привет!
Подробнее о канале со списком самого интересного: https://t.me/stats_for_science/108
Чат канала: https://t.me/chat_stats_for_science
По всем вопросам - @lena_astr
Download Telegram
R или Python в аналитике?

Наконец-то решила написать про эту холиварную тему 😏
Будет максимально объективно, так как работала с R не только в науке, но и в продакшне в 🖤.

Плюсы 🖥:
🟡Статистика из коробки – большинство статистических тестов, в том числе сложных, доступно без установки дополнительных пакетов.
🟡Очень удобный и юзер-френдли синтаксис в tidyverse, а в data.table – высокая скорость и оптимизация по памяти.
🟡Лучшая визуализация: ggplot2 за счет подхода грамматики графики позволяет делать сколь угодно сложные и кастомные графики.
🟡Векторизация позволяет писать без циклов, повышая читаемость и снижая количество ошибок.
🟡С помощью пайпов и NSE (not standard evaluation) работа с табличками становится очень удобной и читаемой (ниже закинула пример кода для сравнения).

Плюсы 👩‍💻:

🟡Большинство аналитиков, по крайней мере в РФ, пишут на питоне.
🟡Девопсы обычно умеют разворачивать питон приложения.
🟡Экосистема для машинного обучения сильнее: scikit-learn, pytorch, keras.
🟡airflow для оркестрации изначально рассчитано под питон, писать даги в airflow на R теоретически можно, но это будет странно.

Минусы 🖥:

🟡Чтобы получить плюсы от производительности, нужно писать в data.table стиле, которому мало где учат. На онлайн-курсах аналитиков данных в принципе не изучают R, большинство R-щиков из академической среды.
🟡Разворачивать приложения и оркестрацию для продакшна можно, но нужно уметь это готовить. Например, у нас в 🖤 весь бизнес-мониторинг работал на связке ClickHouse + R + data.table, оркестрация ETL-пайплайнов через AWX Ansible. Но я больше нигде не видела подобную инфру, поэтому предполагаю, что с нуля настроить инфраструктуру проще на связке питон + airflow. Пользуясь случаем, передаю приветы команде BMS в X5 Tech ❤️
🟡Если уходить в машинное обучение, то в R все же слабее пакеты.
🟡Визуализация это круто, но дашборды все равно делают отдельными инструментами: Tableau, Superset, DataLens и так далее.

Минусы 👩‍💻

🟡В pandas низкая производительность и неудобный синтаксис по сравнению с tidyverse/data.table.
🟡 Визуализация менее лаконична: matplotlib даже для простых графиков требует простыню кода, а seaborn менее кастомизируем. Но здесь для фанатов R можно использовать plotnine, портированный ggplot2 (но он все равно будет с урезанным функционалом).

✍️ Сравнение кода на R и Python

Типичная задача продуктового аналитика: рассчитать ARPPU по двум группам A/B теста (в комментарии закину воспроизводимый пример, а еще пример расчета t-теста на обоих языках).
df_arppu <- df %>%
summarise(user_total = sum(revenue), .by = c(ab_group, user_id)) %>% # суммируем платежи пользователя
summarise(
paying_users = sum(user_total > 0),
total_revenue = sum(user_total),
ARPPU = ifelse(paying_users > 0, total_revenue / paying_users, NA_real_),
.by = ab_group
)



df_arppu = (
df
.groupby(['ab_group', 'user_id'], as_index=False)
.agg(user_total=('revenue', 'sum')) # суммируем платежи пользователя
.groupby('ab_group', as_index=False)
.agg(
paying_users=('user_total', lambda x: (x > 0).sum()),
total_revenue=('user_total', 'sum')
)
.assign(
ARPPU=lambda d: np.where(d['paying_users'] > 0,
d['total_revenue'] / d['paying_users'],
np.nan)
)
)


Ну как, какой вариант кажется более понятным и лаконичным? Пишите в комментариях 👇

Сейчас я в основном пишу на питоне, это удобнее в командной работе, коллеги могут переиспользовать и ревьюить ноутбуки, а еще ETL-процессы в airflow.
Но использую R для некоторых задач A/B тестирования или продуктовых исследований.

В продуктовой аналитике нет особого преимущества одного языка над другим, так как ML обычно не используется, а тяжелые логи можно агрегировать на стороне SQL, поэтому в лимит по памяти пандаса тоже не упираюсь. Мне конечно самой было бы приятнее писать на R, но что поделать, рыночек порешал 😬

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

#analytics #R #python
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥62👍1712👏5🤔2😱2🎉2