Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
11 - Telegram Web
Telegram Web
20 лет назад я начал работать в системах MatLab и OriginLab c данными физических экспериментов, и это было начало пути анализа и визуализации данных. Рад, что работал, продолжаю работать и общаться с крутыми и максимально недушными командами в классных компаниях и как BI разработчик, и как независимый консультант, и как менеджер. Много драйва было в сообществе Tableau, что сильно увлекло, кардинально утащило в датавиз и изменило карьерный трек. Были блоги, статьи, конкурсы и много общения с аналитиками из разных стран.
Удивительно, но самые ценные вещи в аналитике узнаешь не на официальных мероприятиях и конференциях, а в неформальном общении и различных дата-активностях. Особенно интересные мысли приходят в кафе и барах. За пределами Слака и Джиры тоже есть жизнь, ну и такие вещи особенно запоминаются.
Накопилось много работ и мыслей, которые просто по времени не успеваю упаковывать в полноценные визы и статьи. Поэтому в Телеграме запускаю канал ‘Data Bar’, где буду писать про анализ данных и визуализацию максимально неформально.
Буду рад всем. Вэлкам:
https://www.tgoop.com/data_bar

Александр Варламов
👍85🔥4
NBA и скользящее среднее

NBA - потому что нравится, и вообще, баскетбол – лучшая игра с мячом, а на дворе плейофф. На Каггле периодически вываливают датасеты по NBA, и есть статистика по всем матчам с 1947 года. За 75 лет игра кардинально поменялась, поэтому прикольно поисследовать исторические данные.

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

На графике – очки за каждый матч каждой команды. Только матчи NBA без дополнительного времени. Дни без матчей исключены, чтобы не было пробелов. Цвета – команды.

Если построить среднюю за все время, то получим 103,6 – среднее число очков команды за матч на всем интервале времени. Просто среднее ничего не говорит о характере изменения характеристики. Попробуем посмотреть на скользящее среднее, которое работает как фильтр низких частот и убирает шумы. Усредним значения в окне -90; +90 дней для каждого дня, и получим красную линию на графике. Она показывает нелинейный тренд изменения. В Таблошечке это делается за 5-10 минут.

Итого: видим, области выше и ниже среднего, видим как изменялась игра, а по причинам – смотрим изменения правил в моменты изменения метрики.

В бизнесе и не только скользящее средние используем для:
- Сглаживания колебаний/шумов на графике
- Выделения трендов сезонности или событийности

Из веселого: слева снизу на графике есть точки матча ‘Fort Wayne Pistons’ и ‘Minneapolis Lakers’. Они сыграли со счетом (19:18) в ноябре 1950го.
В 50е была уникальная техника выполнения штрафных. Ютуб помнит.

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

Датасет здесь: https://www.kaggle.com/datasets/gonzalogigena/nba-all-time-stats
👍21
This media is not supported in your browser
VIEW IN TELEGRAM
Small Multiples и адаптивная сетка
#tableautips

Small Multiples – это набор диаграмм одного типа и одного датасета. На русский Small Multiples хз как перевести.

Этот тип диаграмм очень помогает в адхоках для поиска аномалий или трендов в данных. На общей диаграмме/графике данные обычно агрегированы, поэтому с виду все ок, но проблемы могут быть в разных разрезах, на разных уровнях грануляции данных.

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

В эдхоках исследований разбивают одну диаграмму на несколько по X и по Y и отдельно исследуют каждый сегмент.

Например, при анализе эффективности каналов привлечения трафика можно смотреть метрику ROAS (возврат на рекламу) в разрезах каналов (Google, Facebook…) и платформ (iOS, Android…). Так можно найти проблемные каналы.

В Tableau такое разбиение делается перетаскиванием категорий Channel и Platform на полки Columns и Rows. Это быстро и просто. А вот с одним разрезом возникают проблемы – его надо отобразить и по X и по Y.

В примере собраны цвета флагов всех стран и проценты каждого цвета на своем флаге. Параметр Columns задает число колонок. Тип диаграммы – Stacked Bar Chart. Можно поиграться с фильтрами, параметрами и сортировкой.

Как это работает:
- Нумеруем каждую диаграмму функцией INDEX().
- Строим таблицу с адресом первой ячейки (0, 0).
Ниже – вычисления, формирующие сетку визуализации. % в вычислении X возвращает остаток от деления (оч полезная функция, но ее мало используют в BI). INT – в данным случае аналог округления вниз, но FLOOR не работает с индексом.

X = (INDEX() - 1) % [Columns]
Y = INT((INDEX() - 1) / [Columns])


Итого: нашли функцию разбиения пространства, представили ее в параметрическом виде X=f(p), Y=f(p), можем кастомизировать сетку. Прелесть в том, что здесь простые арифметические функции: остаток от деления и округление вниз.
👍152
Contour Plot и плотность событий в Seaborn

Contour Plot - подходящий тип диаграммы, когда надо анализировать результаты множества событий на плоскости или карте. Используется при большом числе событий, когда при отображении точек не получается адекватно оценить плотность. Встречается в научных статьях, есть в пакетах Matlab, Origin Pro. В питоне для построения можно использовать библиотеку Seaborn.

Под капотом Seaborn при построении Contour Plot ищется функция 3d поверхности, где ось Z отвечает за плотность распределения событий на участке площади X x Y. Используется способ оценки плотности случайной величины KDE (Kernel Density Estimation) или Ядерная оценка плотности.
На выходе получаем 2d диаграмму, где отображаются контуры срезов 3d поверхности. Естественно, есть параметры построения, например, число контуров.
Полную логику построения и питон код я описывал в своем блоге.

На заглавном скриншоте - плотность преступлений в Лондоне по категориям. Категории разделены по логике Small Multiple (прошлый пост), где для каждой категории строим свой виз.

Полная интерактивная версия на Tableau Public.
Можно переключать на другие типы визуализаций, например, сравнить с dot plot, когда каждое событие отображается точкой на карте. Подложка карт - кастомная от mapbox.com.

Интересно сравнить кражи велосипедов и кражи автомобилей. Еще в категории Other crime есть ярко выраженный максимум, и он на окраине Лондона. Попробуйте догадаться что там.
🔥11
2025/07/13 02:04:18
Back to Top
HTML Embed Code: