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
30 - Telegram Web
Telegram Web
Автомобили в фильмах и парсинг 2млн страниц

Профилю на Kaggle почти 5 лет. Обычно беру датасеты оттуда, но сам ничего не публикую. Надо менять ситуацию, тем более что накопилось много всего (датасеты, ноутбуки), что будет полезно кагглерам.

Выложил первый датасет 'Cars, Trucks, Bikes, Buses in Movies (1900-2024)'. Там больше 1,75 миллионов записей и 21 поле.

Есть такой сайт imcdb.org (Internet Movie Cars Database). Там собирают кадры с транспортными средствами из фильмов, определяют марки, модели и т.д. 20 лет существует. По сути это самая большая база данных машин, снявшихся в фильмах. Здесь в википедии про IMCDb.

Написал парсер, который проходится по всем страницам сайта, их около 2х миллионов, и собирает данные в .csv. Парсер работал 1 неделю в 4 потока. В итоге собралось несколько .csv, которые потом объединил юнионом. Из неприятного - при парсинге не учел, что разные люди вводят данные, и они могут быть в разных форматах. Например, время в кадре автомобиля записывают как 00:02:35, 0:25:35, 25:35, 0-25-35, 25-35 и в других форматах. Пришлось еще искать несоответствия и допиливать датасет скриптами. Получилось вполне ок.

Выложил данные на Kaggle, описал датасет и поля. Можно скачивать и пользоваться. Надо только понимать, что все вводилось вручную, есть модерация и удаление дубликатов, но все равно есть вероятность несоответствий.

В данных есть ссылки на кадры из фильмов с конкретным транспортным средством (там кроме машин 🚙 еще мотоциклы 🏍, грузовики 🚛, бульдозеры 🚜, лесовозы 🚚 и еще много чего). Есть названия транспортных средств, года выпуска, типы (кабриолет, седан, хетчбек и т.п.). Каждое транспортное средство связано с фильмом и кадром где оно появлялось. IMDb id и ссылки на сайт imdb.com (база фильмов самая известная, наверное) позволяют джойнить с датасетами фильмов, включая имена актеров, режиссеров и т.д. То есть, можно ответить на вопросы типа:

- 'Какие топ марки машин есть в фильмах Тарантино?',
- 'Сколько раз встречается Газ-24 в фильмах Рязанова?',
- 'Какой процент румынских машин в румынских фильмах?',
- "Самое популярное авто в ужастиках?",
- "В каком фильме встречаются Феррари F-40 и 'Запорожец' ЗАЗ-966?"

Автомобиль в фильмах часто играет одну из главных ролей. Это:
- '982 De Lorean DMC 12'
- говорящая машина Рыцаря Дорог '1979 Chevrolet Chevette',
- '1965 Lamborghini 350 GT' в истории о Тонино Ламборгини, и
- '1971 Lincoln Continental Mark III Barris Kustoms [89-65A]' из 'The Car', и
- '1959 Cadillac Ambulance Miller-Meteor Sentinel 'Ecto-1'' охотников за приведениями,
- '2007 Chevrolet Camaro Replica 'Bumblebee' из 'Трансформеров'
и много других - это целая вселенная. И почему бы не соединить вселенную машин-актеров и вселенную людей актеров? Получается круто. Для обучения намного интереснее синтетических датасетов без эмоциональной окраски.

Много экзотики можно накопать из любимых фильмов.

- '1957 ATZ TDT-60' из "Девчат" (Название на английском 'The Girls' заставляет улыбнуться)
- 'KhAZ SPT-104' из 'Иронии судьбы'
- '1940 Chevrolet G-7107 Cargo [G-506]' из 'Семнадцати мгновений весны'.

Итого: дофига инсайтов прикольных можно вытащить. Примеры визуализаций в комменты покидаю.
👍2413🔥12😱4
20 лет эволюции смартфонов и анализ трендов

Нашел сaйт phonedb.net. Написано что это самая большая база мобильных телефонов с их характеристиками. 'The Largest Phone Specs Database'.
Решил посмотреть что там есть. В итоге, собрал данные по всем устройствам в один .csv. Парсинг по id устройства, поиск таблиц, их анпивот и запись в .csv.

Получилось 23843 записи и 287 полей. Характеристик действительно много, но много и пустых значений. Из них 20089 смартфонов (390 брендов), 2371 планшет (136 брендов). Остальное - PDA, смартчасы, ноуты и подобные устройства, которых так мало, что даже нет смысла их смотреть. В смартфонах именно смартфоны, а не все мобильные телефоны.

20089 телефонов - вполне ок выборка для поиска трендов или инсайтов. Планшетов почти в 10 раз меньше, но сравнить их характеристики с телефонными тоже интересно. Из 278 полей реально интересно посмотреть только 10-20 характеристик (остальные - слишком специфичные: cтандарты приемников, типы вспышек и пр.) и рынки распространения телефонов. По телефонам более-менее репрезентативные данные начинаются с 2001 года, по планшетам - с 2010го.

Возьмем самые простые и понятные характеристики:
- Емкость батареи
- Разрешение камеры
- Диагональ дисплея
- Разрешение экрана
- Плотность пикселей на дюйм (PPI)
- Частота процессора (MHz)
- Габариты
- Масса
- Время разговора (Talk Time, h)
- Время в ожидании (Standby Time, h)
- Цена. Есть с 2019 года только, поэтому, на небольшом отрезке времени только можно посмотреть.

Разрезы:
- Бренд,
- Операционная система,
- Устройство (планшет или телефон)

Есть месяц и год релиза, поэтому, можно проследить динамику метрик. Интересно посмотреть как поменялись метрики за столько лет.
В комментариях - помесячная динамика по нескольким метрикам. Там средние значения. Сезонность релизов можно скользящим средним срезать.

Итого по смартфонам динамика за 24 года:
- Толщина упала в 2 раза
- Частота процессора выросла в 25 раз
- Диагональ дисплея выросла в 2 раза
- Емкость батареи выросла в 5 раз
- Высота выросла в 1,5 раза
- Мегапиксели камер выросли в 200 раз
- PPI - рост в 4 раза
- Время разговора выросло в 12 раз
- Время в режиме ожидания выросло в 2 раза
- Масса сильно не изменилась, но была просадка в середине периода

Интересно, что в январе и феврале релизы ощутимо падают.
Мегапиксели камер с 2019 года просто улетели в космос. У планшетов угол тренда не поменялся.
Скаттеры интересные получаются с разыми метриками и разрезами. А ещё - чем больше кнопок, тем тяжелее телефон!

Хотел выложить датасет куда-нибудь, поискал раздел лицензий на сайте. Там надо писать письмо, если хочешь данные получить, и перечислить поля. Есть еще цены. Поэтому, скрипт и датасет решил не выкладывать.
И вот сейчас думаю нарушил я что-то или нет )) Вроде, не должен, но хз как проверить. Использовал в некоммерческих обучающих целях. Персданных нет. Характеристики устройств и их фото - точно не собственность разработчиков сайта. База открыта.
🔥9👍3👏3😁1
Актеры без оскаров и bar chART потреты

Бар чарты и другие диаграммы можно использовать не только для отображения бизнес-метрик. При помощи диаграмм можно рисовать.

Любое цифровое изображение раскладывается в набор пикселей. Если для каждого пикселя вычислить его яркость и построить семейство бар-чартов, каждый из которых отображает уровень яркости, то получится изображение, но представленное бар-чартами. Эту идею я взял из блога Elana Levin Schtulberg, Datawrapper. В статье используется Processing для сбора данных и Datawrapper для визуализаций. Идею я реализовал в Python и Tableau. Про весь процесс создания таких изображений написал статью: 'Bar Chart портреты в Tableau'.

Сама визуализация в Tableau: 'Известные актеры и актрисы без оскаров'
Там 10 портретов и 4 типа визуализации.

Процесс создания портрета состоит из шагов:
1. Получение изображений нужного разрешения. От разрешения будет зависеть шаг сетки, в которой будем строить бары.
2. Получение значений яркости для каждого пикселя. Если нужно цветное изображение, то нужно получить цвет каждого пикселя.
3. Создание датасета, в котором есть id каждого пикселя, его координаты, яркость и цвет
4. Подключение датасета к среде визуализации
5. Сама визуализация.

Все это можно делать в удобных для себя инструментах (js, R, python, processing и т.п.). У меня это Питон, библиотека обработки изображений Pillow для создания датасета, Tableau для визуализаций.

После того как будет готов датасет, можно строить визуализации. Для бар-чартов надо построить сетку X x Y, где X и Y делят пространство на ячейки, внутри которых рисуем бар-чарты. Потом можно экспериментировать с направлением баров (вертикальное или горизонтальное), шириной, цветом и т.д. В сочетании 'bar chART' есть слово 'ART', и это неслучайно 🙂.

За параметр длины бара берется величина 255 - [Brightness]. То есть, длина бара определяет степень затемнения ячейки. 255 - максимальное значение яркости.

Кроме баров можно использовать круги с переменным диаметром. Тогда получится диаграмма разброса (Scatter Plot). Можно использовать квадраты, ромбы, звезды и другие шейпы (флаги стран, лого компаний и т.п.). Отдельным типом диаграмм будет диаграмма Ганнта, для которой можно настраивать точку в ячейке, от которой будем заполнять ячейки.

Прикольное что делал таким способом:
1. Портрет из лого компании.
2. Портрет из портретов. То есть, в качестве шейпа используем сам портрет из которого формируем конечное изображение. Шейп только надо немного доработать.

В Tableau работает анимация - портреты плавно перетекают из одного изображения в другое. Меняются размеры баров, шейпов и других Marks одновременно. Это довольно интересно наблюдать. Есть проблема с классическими барами - они не анимируются. Связано это с тем, что за последние 2-3 года сильно урезали возможность анимации. Раньше все работало нормально, сейчас приходится немного потанцевать с бубном.

В визуализацию добавил возможность изменения яркости изображения. То есть, просто есть некоторый коэффициент, на который домножаются значения яркости всех пикселей, при этом, меняется яркость.

Сам конечный портрет представляет собой семейство бар-чартов, где каждый бар показывает степень яркости пикселя изображения.
🔥136
Radial Bump Chart и математические функции

Больше пяти лет прошло как в рамках проекта MakeoverMonday сделал визуализацию 'NHL Attendance' в Tableau. Визуализация отображает посещения матчей НХЛ 🏒 по сезонам, игры каких команд были наиболее посещаемы. Данные ESPN. Можно переключаться с абсолютного числа посещений на ранги. Это была первая радиальная ранговая сигмоидная диаграмма в Tableau. Весь процесс создания описал в статье "Радиальная ранговая диаграмма в Tableau".

Ранговые диаграммы в Tableau уже были, например:
1. Matt Chambers. "Популярность цветов новых автомобилей в Северной Америке 2000-2015".
2. Ken Flerlage "Рейтинг стран по ВВП 2000-2015» и визуализация
3. Laine Caruzca "Рейтинг бейсбольных команд по победам с 2000 по 2017".

Последние две работы используют сигмоиды. Сигмоиды - это 'S'- образные кривые с двумя асимптотами по Y. Кривые строятся на базе функций, самой популярной из которых является логистическая функция y=1/(1+e^-x). Ранги в диаграмме соединяются сигмоидами, поэтому, получаются плавные переходы.

Последняя визуализация про бейсбол ⚾️ понравилась, построил подобную про НХЛ 🏒. Потом интересно стало сделать из линейной диаграммы радиальную. Надо было каждую точку диаграммы повернуть на определенный угол. В этом помогают формулы поворота - тригонометрические формулы. Вот эти:
X = x * cos(angle) - y * sin(angle)
Y = x * sin(angle) + y * cos(angle)
Где x,y - первоначальные координаты точки, а X,Y - конечные координаты после поворота, angle - угол поворота.

Как будто это несложно, но сама визуализация вызвала интерес у комьюнити. Её выбрали в качестве 'The Viz of the Day', она есть в каталоге визуализаций у Kevin Flerlage 'The Tableau Chart Catalog'. Позже сделал другую визуализацию: 'Formula 1. 2018 World Championship. Results' по рейтингам и очкам пилотов Формулы 1 🏎 в сезоне 2018.

Самое интересное, что к этому типу диаграммы возвращаются разные люди, повторяют её, вносят свои идеи. Один из примеров: 'Popular Dog Breeds| Radial bump chart'. Популярные породы собак от Anjushree B V. Выбрали визуализацией дня.

Главная мысль после нескольких лет работы с визуализацией данных:
Любую визуализацию данных можно описать простыми математическими функциями. Визуализация данных - это набор геометрических фигур, поэтому работают все формулы классической (Евклидовой) геометрии.

После того как это понимаешь, границы невозможного стираются. Для абсолютно любой, сколь угодно сложной визуализации, просто нужно найти функции, описывающие её геометрию.


И вот, спустя 5,5 лет, радиальную сигмоидную диаграмму делает Lisa Trescott (Лиза - победитель Iron Viz 2021) по той же самой статье, которую скидывал выше. Это диаграмма 'Dexter: Blood Never Lies', ее выбрали 'The Viz of the Day'.

Неделю назад в блоге 'Flerlage Twiins' вышла статья про такую диаграмму 'A Dexter Viz + Curvy Radar Template'. Ken и Kevin Flerlage ведут популярный блог о Tableau. Кен написал мне до публикации, что реализовал логику расчетов из моей статьи в самом Tableau (я датасет делал до Tableau) и планирует написать статью. Такой вот флешбек.

Получается что каждый автор придумывает и вносит что-то своё. Позже это может превратиться в источник вдохновения и даже стать определенным стандартом. Так эволюционировало много визуализаций, и прелесть в том, что это коллективное творчество.

Про Bump Chart было (и будет) несколько ступеней эволюции (здесь с названиями неоднозначно):

1. Bump Chart (Matt Chambers)
2. Bump Chart with Sigmoids (Chris de Martini и Jeff Shaffer)
3. Radial Bump Chart with Sigmoids (мы здесь)
4. Radial Ribbon Bump Chart with Sigmoids (в Tableau пока не построили)
5. Radial Ribbon Area Chart with Sigmoids (в Tableau пока не построили)

4 и 5 можно построить в Tableau точно с помощью внутренних вычислений. Надо использовать: сигмоиды, юнион, полигоны, денсификацию, нестеды.

Если хотите сделать что-то новое в Tableau, пробуйте пункты 4,5
🔥12
Вселенная Telegram и tech каналы

Телеграм сейчас является основным источником контента для многих. Стало интересно сделать анализ всех телеграм каналов: подписчики, рейтинги, частота статей, процент репостов, процент рекламы и т.д., поэтому посмотрел как можно достать данные. Какого-то сервиса, где можно сразу быстро и просто взять все каналы и набор метрик по ним, я не нашел, поэтому посмотрел что есть из готовых данных.

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

Итак, посмотрел несколько агрегаторов, взял на пробу три датасемпла. Самым адекватным показался семпл tgstat, поэтому, остановился на нем. В сервисе надо регистрироваться по телеграм аккаунту. Контент динамический, то есть, подгружается по клику. В парсинге всех данных не было смысла - важно было посмотреть что получится на семплах. Спарсил несколько категорий RU домена.

Сегодня расскажу про tech каналы с этой страницы. Это каналы категориии 'Технологии', Россия. Есть несколько каналов из этой категории, читаю их ежедневно, ну и этот канал тоже о технологиях.

Теперь о парсинге. У tgstat есть защита от ботов, регистрация по телеграм аккаунту, динамический контент (не все загружается сразу). Питоновская библиотека requests здесь не работает. Playwright не может регистрироваться с внутренних браузеров - ошибка. Поэтому, делаем максимально 'человеческий' скрипт. Скрипт повторяет действия человека. Запускается Хром в режиме отладки, скрипт логинится, нажимает кнопки для загрузки контента в этом браузере и скачивает данные. Все сохраняется в csv, поля:

Категории
1. id канала
2. Техническое название канала с @ в начале
3. Название канала
4. Ссылка на лого канала
5. Описание канала
Метрики:
6. Число подписчиков
7. Дата последней активности

Сохраняем только каналы с числом подписчиков 100 и больше, и из 15и тысяч остается 7635. С названиями каналов есть нюансы в парсинге, но обойти можно.

Итого, датасет готов, можно покрутить и поискать инсайты. Лого скачал скриптом. Первые 20 каналов сильно выделяются на фоне остальных огромным числом подписчиков. Поэтому хотелось показать сразу все каналы, построить 'вселенную' каналов. Визуализация - packed bubbles c лого и размерами кругов пропорциональными числу подписчиков.

Теперь к самой визуализации. Packed bubbles можно делать различными способами и в разных средах. В BI - большие ограничения, питон - долго считает (пробовал, но ждать долго). Поэтому, победил Процессинг, сделал на p5js, алгоритм collide. В коде js есть 7 параметров, их можно настраивать, получая разные вариации диаграммы. Долго игрался с этим, в итоге, в комментах приложил 3 визуализации в разрешении 8k:

1. Каналы 100 и более подписчиков. 7635 штук.
2. Каналы 1000 - 100000 подписчиков. 4535 штук.
3. Каналы 10000 - 100000 подписчиков. 1009 штук.

Получились своего рода вселенные со звездами и планетами (самое то на fullscreen). На одной картинке можете видеть все каналы и представить масштабы контента в телеграм. Разрешение высокое, можно зумить и искать интересные каналы. Контент 3ей категории читаю больше всего, поэтому, сделал интерактивный виз в Tableau именно в этом диапазоне подписчиков. Координаты кругов взял из js.

Интерактив с фильтрами и хайлайтами в Tableau

Здесь можно найти канал, выбирать диапазон подписчиков и рейтинги на основе числа подписчиков. Можно читать описание и переходить в сам канал по клику.
Из того что читаю: LEFT JOIN, Reveal the Data, Инжиниринг данных, Время Валеры, Чартомойка и другие.
Интересно получилось.

Cмотрел еще категории 'блоги' и 'спорт' . Там кривые по рейтингам другие совершенно. Про это тоже расскажу. До визуализации всей телеграм вселенной осталось немного.
👍107🔥1😱1
Визуализация данных и евклидова геометрия

Человек плохо воспринимает информацию в виде цифр. Эволюционно люди и другие виды живых существ ориентированы на геометрические объекты. Всё что человек видит - это сложные геометрические формы, которые мозг способен описывать, то есть, понимать размеры, форму и т.д. Цифры и числа - некая система отсчета, придуманная человеком и помогающая ему описывать сложные системы.

Визуализация данных по своей сути - это процесс перевода числовой информации в геометрические примитивы (линии, квадраты, круги и т.д.), - их мозг воспринимает намного быстрее. Когда-то начал задумываться что такое визуализация и зачем она нужна, пришел к выводу что это перевод числовой информации в геометрическую для ускорения понимания данных.

Эта мысль сильно изменила сознание. Понимаешь что кроме шаблонов визуализаций у тебя в арсенале есть все геометрические формулы (школьной программы более чем достаточно), и с ними можно уходить на другие уровни визуализации данных. Можно использовать гармонические функции, преобразования координат, формулы проекций, различные функции. Всё это - другой мир, позволяющий делать почти всё что хочешь.

Главный труд Евклида 'Начала' был написал около 300 г до нашей эры.
С этим трудом тесно связана элементарная или евклидова геометрия. Формулам, которые мы применяем в визуализации данных может быть несколько тысяч и сотен лет, но они до сих пор актуальны.

О построении нетривиальных визуализаций и геометрических преобразованиях буду рассказывать на мероприятии 'Cyprus Tableau User Group' в докладе 'Beyond the Basics: Unleashing the Full Power of Tableau Visualizations'.

В бизнесе важна скорость и однозначность считывания информации с дашбордов. Поэтому, в большинстве случаев, трех видов диаграмм достаточно для описания данных (линейный график, бар-чарт, диаграмма разброса). Их все понимают. За пределами бизнесовых дашбордов с визуализацией можно экспериментировать сколько угодно - здесь масса вариантов для творчества. Постепенно приходишь к тому что становится интересным экспериментировать с визуализацией и искать новые подходы. Здесь нет ограничений - можно делать всё что угодно, даже вещи, которые ранее считались невозможными. В конце концов, появляется потребность в экспериментах и самовыражении, невозможные задачи перестают существовать.

Мне повезло учиться данным и их визуализации в международном data комьюнити, когда не было курсов, и аналитика не была в почёте. Можно было экспериментировать вместе с энтузиастами из разных стран и разбирать визы с топами в этой области. Люди из разнызх стран и компаний в свободное время собирали датавизы, общались, а драйва и опыта в этом куда больше чем в работе с базовым Superstore.

Отметил шаги, которые проходишь в своём развитии:

1. Реверс-инжиниринг. Разбираешь чьи-то работы и пытаешься понять как они сделаны.
2. Создание собственных визуализаций. Берешь датасет и делаешь виз на стандартных диаграммах.
3. Создание чего-то нового для себя. То что ты ещё не делал. Каждый раз узнаешь что-то новое и совершенствуешься.
4. Создание чего-то нового для всего сообщества. То, что в профессиональных сообществах еще никто не делал.
5. Шеринг опыта и знаний.

4й шаг очень сложный - кажется что всё уже сделано в визуализации. На самом деле - нет, ещё много всего не придумано. Но здесь важно понять что люди не пытаются делать новые вещи, поскольку считают невозможным или ненужным в рамках одного инструмента.

5й шаг - это статьи, посты, выступления. Люди начинают учиться на твоих работах, разбирать их в группах, переводить статьи, дополнять своими мыслями.

Визуализация - это геометрия. Утверждение очень помогает в поиске новых подходов. Хотите создать что-то новое в визуализации, используйте геометрические преобразования: повороты, сдвиги, масштабирование и др.

В визуализации данных правило Линуса 'Talk is cheap. Show me the code' также работает. Смотрите на то что люди делают. У профессионалов в визуализации данных всегда есть что посмотреть и чему научиться.
👍11❤‍🔥86😁1
Все каналы Telegram

Telegram из простого мессенджера превратился в агрегатор новостей, блогов, корпоративных чатов, магазинов и различных приложений. Каналы в Телеграм развиваются стремительно, и вот уже мы начинаем свой день с новостей в телеграм каналах, а не ходим на новостные сайты, как это было буквально 5 лет назад. Кроме этого, Телеграм забрал на себя часть функции соцсетей. Давайте попробуем оценить насколько сейчас Телеграм большой, какие есть каналы, какие категории, какая аудитория каналов. Чаты пока не берём, про них отдельно напишу.

Собрал данные о 720 802 каналов в Телеграм от 0 подписчиков и выше. Это результат парсинга tgstat.com, около двух дней всё собиралось - пришлось работать с динамической подгрузкой и обходить защиты Cloudflare. Каналы разбиты на 48 категорий (тем) и 11 гео (это 10 ключевых стран и Global - остальные страны). Каналов без категорий здесь нет - их много, но они мелкие, и непонятно о чем. Из собранных каналов 50 000 приватных, остальные - публичные. Датасет по каналам выложил на kaggle, предварительно убрав группы каналов 18+, даркнет и все приватные каналы, чтобы не компроментировать инвайт ссылки. В публичном доступе подобного датасета не видел, поэтому вам может быть интересно покрутить данные. Получилось более 650 000 каналов в 43х категориях. Каждая категория - в своём файле csv.

Все каналы в Телеграм делятся на публичные и приватные. У публичных каналов есть '@' в названии, например, название этого канала @data_bar. У приватных каналов вместо названий - набор букв. Приватные каналы не выводятся в поиске. Люди скрывают каналы по ряду причин: анонимность, защита от ботов, платные каналы и пр.. Но, если вы сделали инвайт ссылку, по которой в приватный канал приходят пользователи, эта ссылка может оказаться в общем доступе, и канал перестанет быть приватным. Поэтому ссылки приватных каналов не выкладываю.

Теперь к простому анализу данных.

Каналы разбиваются по темам. Больше всего каналов в категории 'Blogs', меньше всего - 'Courses'. Самые крупные каналы - в категории 'Crypto'. Самый большой канал - Хомяк (@hamster_combat), там более 52х млн подписчиков, но отток существенный.
По гео больше всего каналов в RU сегменте. Открытием было то что в ключевых странах есть Иран и Эфиопия. В разных странах разные темы более популярны. Например, в Индии больше всего каналов категории 'Education', в России - 'Blogs', в Китае - 'Adult' (50% от всех каналов и сумасшедшее количество подписчиков просто), в Иране популярны 'Quotes' - это цитаты и изречения, в Узбекистане - 'Sales', в Казахстане - 'News'.

В заглавной картинке - Топ 1000 каналов по подписчикам. Площадь каждого круга пропорциональна числу подписчиков.

Визуализацию по публичным каналам сделал, но про неё отдельно напишу - пока в Hide.
Про метрики телеграм каналов - тоже отдельно.
🔥2410👍2
"Дайте вилку" или IT вакансии с зарплатами

Год подходит к концу, компании закладывают бюджеты на следующий год, в том числе, и на новые позиции. Сейчас на рынке IT вакансий ситуация странная. Кто-то говорит, что спрос низкий, кто-то - высокий. Еще доллар по 105р уже, что делает более привлекательной ЗП в валюте. И на кого повесят в PФ повышенный НДФЛ в следующем году - вопрос пока открытый.
Хотелось посмотреть и понять что сейчас по вакансиям и зарплатам в IT, каким компаниям кто нужен, и какие навыки требуются.

В профильных чатах на публикацию вакансии в комментах часто просят вилку. И чёт без вилки уже как-будто не комильфо приходить. Но это дискуссионно. Без указания ЗП делать анализ вакансий смысла нет. Есть агенства, которые занимаются анализом рынка вакансий, но их отчёты либо платные, либо их невозможно смотреть - это портянки на 75+ страниц с кучей барчартов и пайчартов из которых большая часть диаграмм - 'чтобы было'. Как будто чем больше диаграмм тем качественнее анализ. И данные, в основном, из опросов. К цифрам опросов всегда есть вопросы.

Из интерактива знаю классный дашборд по зарплатам аналитиков Рома Бунина и проекта 'Left Join' по данным hh. Других хороших интерактивных инструментов на открытых данных не помню.

Решил сделать несложный инструмент анализа вакансий и зарплат для себя с данными по всем направлениям IT. Хотелось визуализировать именно вилки. Посмотрел что с данными, откуда их можно взять. На hh.ru с указанием зарплат не всё радужно, есть вакансии, висящие годами, одинаковые вакансии в разных городах и т.д. Есть 'Хабр Карьера', но про неё мало что знаю. Ещё есть сервис 'Getmatch'. Появился не так давно, но вакансиях указывают зарплатные вилки. Кажется что именно эта фишка, их телеграм бот, специализация только на IT делают сервис наиболее привлекательным для сбора и анализа данных.

В итоге, собрал данные всех актуальных вакансий Getmatch. Их около 1500. Отбросил вакансии без указания зарплат - их 5%; с оставшимися 95% можно работать. Зарплаты в вакансиях не указывают всего 14 компаний (X5, ivi, Lamoda из больших) из 190.

Вакансии делятся на 2 группы:
- С зарплатной вилкой
- С нижней границей зарплат
Зарплаты указаны в рублях, долларах или евро.

Перевел всё в рубли по текущему курсу, чтобы проще было сравнивать вакансии. Разбил на категории - направления в IT. Средние зарплаты можно считать тремя способами:
1. По нижней границе ЗП
2. По средней вилки
3. По максимальной вилки
Медианные ЗП не делал пока.

В данных есть скиллы (навыки), их около 1300 (языки программирования, инструменты, фреймворки и т.п.). Не все нормально бьются друг с другом, поэтому немного причесал, но могут встречаться варианты типа 'Zookeeper' и 'ZooKeeper'. Это некритично, но, с господином Левенштейном, можно привести в идеальное состояние.

Итого, сейчас есть дашборд, где можно смотреть вакансии и зарплаты по различным разрезам, фильтроваться по гео, и много чему ещё. Можно искать вакансии по скиллам. Можно смотреть распределения зарплат, топы компаний по ЗП, сравнивать одинаковые позиции в разных компаниях и т.п. Можно из дашборда переходить на страницу вакансии на getmatch.ru.

Получился инструмент, где могу посмотреть всё что хотел. Локально данные обновляются ежедневно.

Дашборд выложил в паблик
🔥399👍3❤‍🔥1
Computer Art и авторское право

Мне недавно прилетел страйк от OpenProcessing что один из моих скетчей будет удалён из-за нарушения авторских прав. Такое первый раз, поэтому хочу разобраться.

Итак, openprocessing.org - открытая среда для creative code. Processing - открытый язык программирования на базе Java, в нем удобно делать анимацию, дизайн и просто какие-нибудь интересные графические штуки (creative coding & generative art). Для JavaScript есть библиотека p5js, там вся логика процессинга. Можно писать на js и отображать всю графику в браузере. Довольно популярна среди генеративщиков и дизайнеров. Есть свой редактор в вебе. В моём аккаунт на openprocessing ничего выдающегося нет - просто скетчи.

Так вот, скетч скрыт/удалён с формулировкой 'the following sketches in your account have been taken down due to a Digital Millennium Copyright Act (DMCA), takedown request submitted by a third-party, Artists Rights Society (ARS), who represents the intellectual property rights and permissions interests of Vera Molnár'.

Вера Мольнар (Vera Molnár) - венгерская медиахудожница, одна из первых начала использовать компьютер в живописи. Яркий представитель компьютерного искусства (Computer Art), пионер этого направления. Начинала писать на Фортране в Сорбонне в 60х. Работы можно посмотреть на artnet. Ушла из жизни в прошлом году в возрасте 99 лет, к сожалению.

Вернёмся к проекту. У генеративщиков есть такое событие Genuary - генеративный январь. В январе каждый день даётся тема, и по ней надо что-то кодить, креативить, в общем, делать интересные вещи. В январе 2023 года одной из таких тем была 'Vera Molnar'. Тогда я и сделал этот скетч - по сути, написал код, который повторяет одну из работ художницы. Сейчас такой код написать довольно просто - там используется базовая геометрия, можно за полчаса уложиться. 40-50 лет назад для этого нужно было существенно больше времени и скиллов и компьютер ещё найти.

Этот код никому не мешал 2 года, хотя сам проект был назван Vera Molnar. Сейчас ситуация интереcная - по сути я повторил/украл чужое произведение (с точки зрения Artists Rights Society). Но интересно и то, что по подобным произведениям много туториалов на YouTube и статей, известные генеративщики тоже иногда повторяют что-то подобное. По такой логике надо удалять всё с YouTube, Гитхаба, все форки и т.д. Даже если нарисовать черный квадрат на белом фоне, его, наверное тоже следует удалить, поскольку уже кто-то делал.

В современном искусстве много тривиального - простые геометрические фигуры. Можно взять работы Келли Эллсворта или Бриджет Райли.
Нарисовал, например, жёлтый прямоугольник, и случайно кого-то повторил. Вот как понять что это кто-то сделал, и есть авторские права?

В общем, тема дискуссионная. Напишу письмо в openprocessing - пусть объяснят когда есть нарушение авторских прав, а когда - нет. Защищать права художников нужно обязательно, но я пока не понимаю где граница.

Отдельно стоит отметить, что в на ARS есть раздел 'Artists Rights 101', и там есть про авторское право произведений AI. Копирайтов для AI не придумали, а человеку надо доказать что он принимал участие в работе над AI шедевром.

Интересно что с авторскими правами на дашборды.
8🔥5👍1
Packed Bubbles с сортировкой или все телеграм каналы на одной визуализации

Не все диаграммы популярны. Диаграмма Packed Bubbles очень редко используется в бизнесе, хотя в Tableau она есть в стандартных и вызывается из меню 'Show Me'.

Суть диаграммы в том, чтобы представить набор данных в виде кругов (пузырей), где в размере каждого пузыря будет какая-то метрика датасета. Можно в цвет закинуть какую-то категорию.

Теперь о нетривиальности таких диаграмм. Мы можем задавать порядок следования пузырей и категорий. Про это не все знают, поэтому, сегодня расскажу о радиальных Packed Bubbles на примере визуализации Telegram каналов и тематик этих каналов.

Визуализация 'Public Telegram Channels' интерактивна, можно фильтровать по каналам, искать каналы по ключевым словам, а также переходить на выбранные каналы прямо в Telegram. Понятно что для принятия решений такое вряд ли подойдет, но подобные диаграммы позволяют оценить масштаб всех данных. к тому же интересно на них что-то поискать. Еще можно переключать типы диаграмм, по-сути, выбирать порядок сортировки и иерархию категорий.

В заглавном изображении показаны 4 диаграммы, отображающие одно и то же:
- каждый круг - один телеграм-канал, где площадь круга отображает число подписчиков.
- цвет - тема канала

Мы можем задавать порядок сортировки категорий и порядок каналов(кругов) внутри категорий.

Рис. 1
- Категории сортируются от центра круга от меньшей (где меньше всего число каналов) к большей
- Круги сортируются от центра по числу подписчиков от наименьшего к наибольшему.
В итоге, получается что в каждом цветном кольце каналы тоже сортируются.

Рис. 2
- Категории сортируются от центра круга от меньшей (где меньше всего число каналов) к большей
- Круги сортируются от центра по числу подписчиков от наибольшего к наименьшему.
Диаграмма изменилась только из-за порядка сортировки, но отражает то же самое

Рис. 3
- Сортируем каналы по их рангу внутри каждой категории
То есть, каналы с самым большим числом подписчиком из каждой категории, будут в центре

Рис.4.
Добавляем еще одну категорию - страна.
- Категории сортируются от центра круга от меньшей (где меньше всего число каналов) к большей
- Круги сортируются от центра по числу подписчиков от наименьшего к наибольшему.
- По стране канала от меньшему к большему
Появляются 'кольца' для каждой страны.

Здесь стоит остановиться на порядке разбиения данных (иерархии уровней данных):
- Сначала разбиваем на страны
- Далее внутри каждой страны разбиваем на категории
- Потом разбиваем на каналы внутри каждой категории
Порядок разбиения задается порядком следования полей на панели Marks, сверху вниз.

Как видим, можно включать любое число уровней данных в грануляцию и настраивать сортировку на каждом уровне по-своему. Иерархия уровней данных также важна. Это справедливо для других диаграмм тоже. Сортировку и порядок разбиения данных иногда недооценивают при построении диаграмм, но, как видим, они существенно могут изменить вид и смысл диаграммы.
🔥10👏32
DATAVIZ футболка и каналы Telegram

Сделал себе футболку с топом телеграм каналов. На футболке - диаграмма packed bubbles, где показан top 1000 каналов Telegram, площади кругов пропорциональны числу подписчиков. Несколькими постами выше рассказывал как парсил данные и делал виз в p5.js.

Давно хотел попробовать что-то на одежде сделать, но не получалось нормально. Проблема в том, что обычно печатают на готовых футболках, и полная запечатка не получается. Футболку для Матемаркетинга благополучно заруинили таким способом - не получилась в хорошем качестве.

Недавно в канале Data Comics был пост про футболку из R-гексагонов. Там футболка полностью запечатана. Погуглил и нашел, что называется это 'сублимационная печать'. Непросто было найти (не в Москве и Питере) как сделать 1 штуку (от 10 и выше минимум делают) нормального качества, но оказалось что есть онлайн конструктор куда можно загружать изображения. В конструкторе изображения подгоняются, зумятся и т.д., то есть, точно можно определить где и что печатать. После этого финальные выкройки высылаются на почту для финального согласования. На производстве рукава, передняя часть и спина запечатываются отдельно, после чего футболка сшивается. Поэтому, должно быть швейное производство. На хб не печатают - только на синтетике. В итоге, получилось очень круто.

Если есть свои работы в датавизе, всегда интересно сделать подобный мерч, и он будет уникальным.

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

Можно одевать и ехать на профильную конфу. Например, tgconf. Или на конфу по датавизу. Или в Сан Диего на TC 25.
🔥176😁2
Зарплаты аналитиков в США и парсинг Glassdoor

Про зарплаты в русскоязычном секторе IT я писал месяц назад. Дашборд по данным Getmatch ушёл в народ, его опубликовал Getmatch в своём блоге, много отзывов прилетело. В целом, инструмент оценки вакансий и зарплатных вилок получился неплохой, там около 10 000 просмотров, и каждый день его мониторят. Данные обновляются каждые 2 недели.

Поэтому интересно посмотреть что по вакансиям и ЗП в других странах. Один из топов ресурсов поиска работы - портал Glassdoor.com. Первоначально, идея Glassdoor была в шеринге зарплат - ты говоришь свою ЗП, тебе дают доступ до ЗП других людей, естественно, усредненных. То есть, можно примерно понять по отрасли вилку. На этой идее сервис сильно вырос. Интересно сейчас почитать статью на Хабре от 2008 года, когда Glassdoor ещё был стартапом.

Glassdoor cейчас - огромная система с оценками работодателей по разным критериям и множеством вакансий по всему миру. Тем интереснее было посмотреть не только зарплатные вилки, но и оценки компаний.

Решил собрать зарплаты Data Analyst в США на основе опубликованных вакансий, разделить из по штатам, городам, отраслям, секторам экономики, оценкам компаний и т.д.. Открытых данных с такой детализацией не нашел, поэтому, собирал сам. Web Scraping больших порталов обычно сложнее, чем стандартных сайтов. Приходится обходить защиты от скрейпинга. Использовал Playwright и подключение к Хрому в debug режиме.

В итоге, собрал около 7000 открытых вакансий с описанием. На kaggle подобной детализации нет, поэтому, причешу и закину туда на праздниках.

Для США зарплаты указываются в Gross, то есть, без учета налогов. В разных вакансиях платят по дням, месяцам или же указаны годовые суммы.

Сделал дашборд в Tableau 'Glassdoor Data Analyst Jobs' (вакансии только с зарплатами), там суммы пересчитываются, и можно смотреть нормализованные ЗП в день, месяц или год. В дашборде есть зарплатные вилки, много категорий по которым можно фильтроваться, диаграммы распределений и HEX карта США, где можно посмотреть в каком штате выше ЗП. Можно менять грануляцию данных, сравнивать отрасли, компании (Apple и Amazon например).

Есть ещё рейтинги компаний по разным условиям, рейтинги CEO и др. Детально можно смотреть таблицу с вакансиями и переходить на страницу вакансии. В общем, в разных разрезах можно много всего посмотреть.

Из техники: сделал диаграмму рейтингов со звездами как на сайте, поигрался с фоном дашборда - его можно менять. Немного попробовал Glassmorphism в UI.

Несколько цифр:
- Средняя почасовая ЗП - $45
- Максимальная почасовая ЗП - $150
- Средняя месячная ЗП - $7053
- Средняя годовая ЗП - $94899
- Максимальная годовая ЗП - $388000

Для поиска других инсайтов фильтруйтесь в даше.

Скрейпер и парсер ещё буду оптимизировать. Дашборд тоже планирую развивать и обновлять данные раз в 2 недели. И можно будет пособирать данные по вакансиям DS и DE, например.
🔥359👍1
Tableau Public 2024 и 1 000 000 визуализаций

В блоге Tableau подвели итоги 2024 года Tableau Public.

За год на портале было опубликовано более 1 млн визуализаций. Это колоссальная цифра. 2 года назад на паблике пробил 8 млн визов.
Основные темы: Олимпиада 2024, фильмы, спорт, бизнес, глобальные тренды.

В блоге представили 'Curated Collection' из 49 визуализаций и 24 самые популярные визуализации за 2024 год.
Одна из моих визуализаций 'NBA Scorigami' попала в этот список. В канале я рассказывал про неё. В самых популярных есть 2 даша Насти Кузнецовой, это очень круто!

Tableau Public до сих пор остаётся самым большим порталом визуализаций и источником вдохновения. Сюда приходят фанаты Power BI, Qlik, R и других инструментов. Много что можно почерпнуть и для рабочих проектов. В этом году больше бизнес-дашбордов в трендах. Но, надо сказать, далеко не все они нормально ложатся на здоровый прод - слишком много ресурсов уйдёт на разработку и поддержание, да и цели в бизнесе несколько иные.

Довольно продуктивный год выдался на публичные проекты. На паблике опубликовал 14 визуализаций. Больше ушёл в инструменты поиска и подготовки данных на питоне, использовал js и много экспериментировал с цветом и геометрией. Сейчас нравится находить и собирать данные, которые никто не собирал, поэтому много скрейперов и парсеров сделал. Реанимировал kaggle - там тоже начал датасеты собирать. Канал этот в мае завёл 😀.

Ещё выступил на 3х Tableau User Group:
- Russian TUG
- Tableau Public TUG
- Cyprus TUG

Осталось до 31 января отправить работы на Information is Beautiful Awards.
12👍11🔥2👏2
Пароли в Excel или мнимая безопасность

Заглавная картинка - скрин из 'Cyberpunk 2077' с небольшими изменениями. Игра революционная в прямом и переносном смыслах. Там есть игровые моменты, в которых дешифруете файлы. Это делается несколькими кликами. Ну то есть, файлы зашифрованы, но несколько секунд достаточно для декодирования и просмотра данных.

Сегодня немного про Excel, формат xlsx и пароли.

Так сложилось что я не работал в Excel полноценно. У меня всё началось с Matlab, Matematica, потом - google sheets, SQL, БД и далее - инструменты BI. Существуют компании, где нет продуктов Microsoft. И таких компаний немало, там макбуки у всех обычно, и с экселем не работают. Но всё равно приходиться иногда разбираться с файлами эксель - от них никуда не денешься.

Несколько раз сталкивался с тем, что в задачах или wiki, на ресурсах подрядчиков или заказчиков остаются какие-то запароленные файлы Excel. Непонятно кто и когда это делал, но данные оттуда вдруг понадобились. Давайте разбираться зачем это делали, и как с этим работать.

Если кратко, то пароли в Excel обычно ставят либо на страницу, либо шифруют весь файл.

1. Если пароль на странице (Protect Current Sheet), то можно сказать что его нет, и данные можно вытащить. Есть еще вариант 'Protect Workbook Structure', но тоже отнесем сюда.
2. Если запаролен весь файл (Encrypt with Password), то забрать данные сильно сложнее - файл шифруется.

То есть,
1. 'Защита' 🛡
2. 'Шифрование'. 🔐

Чаще используют первый вариант - он проще, можно просто кликать на закладки и устанавливать пароль. Так делают или для пересылки через телегу (например), или ещё по каким-то причинам. Видел, такое с P&L делали. Мне кажется что слово 'Защита' действует магическим образом на пользователя. А шифрование для рядового юзера - что-то сложное и менее понятное.

Давайте посмотрим что можно сделать с вариантом 1.
Файл xlsx - это zip архив (это может быть откровением для многих). Расширение файла можно поменять на zip и посмотреть что внутри. Чтобы убрать пароли с конкретных листов, надо в файлах листов 'sheet 1' (как пример), а это xml файлы, удалить секцию кода <sheetProtection. Вот вы и удалили пароль.

Другой способ прочитать данные - открыть файл с паролем в Tableau или Power BI. Они игнорируют пароли, сразу показывают скрытые листы и показывают данные. C Tableau понятно, но почему Power BI игнорирует свою же майкрософтовскую защиту становится ясно, если прочитать официальную доку 'Защита листа'

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

В случае 2 когда паролится весь документ через File - Info - Protect Workbook - Encrypt with Password, то zip архив шифруется и не открывается потом архиватором. Здесь все сложнее - надо расшифровать архив, но про методы подбора не пишу здесь по понятным причинам. Если надо защитить данные, то только этот способ.

Пишу всё это, потому что в моей практике было несколько случаев, когда искали пароли к листам. Многие считают что данные защищены паролем (написано же 'защитить') и пересылают в таком виде в мессенджерах. Обычные пользователи редко представляют разницу между защитой и шифрованием. Еще немногие знают что BI инструменты игнорируют такие пароли.

Такое небольшое знание может сэкономить несколько часов работы, заслужить уважение коллег и почувствовать себя на минуту героиней/героем Киберпанка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍225
Information is beautiful Awards и работы за 2025

В визуализации данных, как и в других областях, есть свои премии и награды. Одной из знаковых является IIBA 'Information is beautiful Awards'. Работы на премию отбираются в несколько этапов. Сначала из всех заявок выбирают лонглист, где около 90% работ проходят. Потом шортлист - примерно 10% остаётся (если правильно помню), потом выбирают победителей в каждой категории и награждают в условном Лондоне.

Свою первую работу я подавал ещё в 2018 году. Это работа по истории Формулы 1. Тогда не понимал толком зачем всё это нужно, нормально не описал ничего, но отправил. В то всемя активно делал что-то в англоязычном комьюнити, люди отправляли работы на премию, я тоже решил попробовать. Работа прошла в лонглист премии. Это был личный успех.

В 2019 году отправил 6 работ, все они прошли в лонглист, где было примерно 600+ работ. То есть, 6 работ - это около 1% лонга.

Позже был COVID, и премию закрыли. В 2022м мероприятие возродилось снова.

В этот раз отправил 15 работ. Год был результативный. Премию сдвинули почти на полгода, поэтому отправил работы за последние 15 месяцев. Очень много времени заняло описание и оформление заявок.

Если вы хотите отправить свои работы, то вот ссылка. До конца января можно отправлять работы, если они были опубликованы с сентября 2023 по 31 декабря 2024го. Интересно что сейчас в заявке отдельно есть поле для AI, где надо указать какой инструмент использовали. Раньше не было. Тренды.

Зачем это нужно вам? Если занимаетесь визуализацией данных, и хотите знать и уметь больше базовых визуализаций, то обязательно нужно смотреть то что делают в мире. По ссылке все работы за всё время, смотрите и вдохновляйтесь.

Если брать бизнес и BI, то с насмотренностью там сложно всё. Мало кто смотрит и делает какие-то работы для мира. IIBA - серьёзный ресурс для вдохновения, можно много почерпнуть.

IIBA - премия о красоте визуализаций. Топовые компании: National Geographics, Reuters, когда-то TACC, делают действительно уникальные вещи, но там команды, бюджеты и ресурсы. Не у всех они есть, но обычный человек может бесплатно подать заявку и будет участвовать наравне с гигантами. Потусить в компании единомышленников всегда приятно.

У меня всё в соло, в Tableau и в свободное время, поэтому, лонглист - вполне ок. Если прям цель поставить сделать что-то топовое и монументальное, то это js, скрейпинг и парсинг данных, классный сторителлинг и дизайн. Либо команду собирать либо где-то время находить на это всё.
🔥163🆒2
Сложные функции и параметрические портреты

А помните, в школе строили параболы и гиперболы в тетради? В заглавных картинках тоже функции, только посложнее. Вот интересно, в какую сложность функций можно уйти в принципе, насколько большими функциями мы можем манипулировать. В научной фантастике встречается понятие 'Формулы всего' или уравнения вселенной. Если знаем такую функцию, можем ответить на любые вопросы вселенной. Но есть мнение, что ответ на все вопросы - 42.

Сегодня покажу примеры того как функциями можно описать сложные геометрические объекты - портреты знаменитых людей. Для каждого портрета подбирается только одна функция, но функции эти очень большие. Зная функцию y=f(x), можно, строить точки с некоторым шагом, соединять соседние точки прямыми и получать изображения. Для отображения точек на плоскости функцию преобразуют в параметрический вид: x=f(t), y=f(t). Это параметрические уравнения.

Представим что мы как-то нашли функцию, описывающую ваш портрет. Таким образом, для получения портрета вам не нужны никакие данные кроме диапазона t. В среде Wolfram Alpha функции, описывающие портреты, называются Person Curves. Процесс поиска таких функций описан в блоге Wolfram. Статья 1, Статья 2, Статья 3.

Немного про Wolfram Research и Wolfram Alpha. Wolfram Research - корпорация, созданная Стивом Вольфрамом в 1987 году. Стив Вольфрам - человек, сочетающий математика и успешного предпринимателя. Если работали со средой Mathematica, то знаете о Wolfram Language. Стив известен описанием и популяризацией клеточных автоматов, изобретением языка пришельцев специально для фильма 'Прибытие' Дени Вильнёва (подробная статья в его блоге) и много ещё чем интересным. В общем, дядька разносторонний и по-хорошему сумасшедший.

Продукт WolframAlpha задумывался как 'Answer Engine', который отвечает на вопросы на основе данных внешних источников. Сервису 15 лет, и это всё было до популяризации AI. В общем, эта штука может генерировать сложные функции, визуализации и т.п..

Параметрические функции Person Curves я забирал из WolframAlpha, потом преобразовывал параметрические уравнения в формат Tableau, где и отображал их. Уравнения огромные, поэтому вручную править их нереально - писал скрипт на питоне. Весь процесс со скриптами и ссылками в моей статье.

Итого в визуализации 'Person Curves Album' 20 портретов известных людей, каждый из которых описывается двумя параметрическими уравнениями. Из внешних данных достаточно двух значений 0 и 1. Есть ещё параметры, которыми можно задавать шаги рисования функции и сложность (число точек).
8🔥7
IT вакансии и автоматизация парсинга зарплат

В конце осени я рассказывал про парсинг IT вакансий сервиса Getmatch и глобального сервиса Glassdoor. Интересно что дашборд по вакансиям Getmatch и зарплатным вилкам вызвал живой интерес, он до сих пор просматривается - уже более 11 000 просмотров. Его я обновлял раз в две недели - тогда казалось что это нормальный диапазон мониторинга вакансий. На самом деле, за 2 недели может очень много поменяться - закрываются и открываются новые вакансии на сайте достаточно шустро. Динамика по конкретным компаниям или направлениям должна отражать веяния рынка IT. Поэтому, хотелось посмотреть именно на тренды во времени, но для этого надо иметь ежедневные срезы.

Вручную ежедневно обновлять данные не комильфо - надо автоматизировать. Здесь случилась коллаба с разработчиком Никитой Ивановым. Думали как можно сделать. Мне казалось что достаточно запускать парсеры по условному крону и складывать данные в базу данных. Но Никита придумал и сделал полноценную систему с Airflow, облачным PostgreSQL, проверками, возможностью автоматического экспорта в Google Sheets алертингом в Телеграм. Получилось действительно круто!
Про то как и что делал, Никита описал у себя в канале. Го читать Никиту в его канале 'Joni in Web'.

В итоге, сейчас у нас есть система сбора данных открытых вакансий Getmatch. В 8 утра скрипты собирают все вакансии за полный вчерашний день и складывают в базу. Кроме этого, собираются навыки/инструменты по каждой вакансии и подтягивается актуальный курс валют с сайта Центробанка. Курс валют нужен для перевода в рубли валютных зарплат.

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

Сейчас можем считать время активности вакансий, видеть тренды в конкретных разрезах и ещё много интересного. В публичном дашборде несколько дней: 8 последних дней и несколько прошлых снепшотов с осени. Подключение к Постгресс. Для обновления публичного даша нужен экспорт в Google Sheets (ограничение Tableau Public) - это следующий этап.

Для чего это всё?
Пока я не видел ни одного нормального публичного инструмента анализа зарплат в IT. Очень сложно ответить на вопрос: 'Сколько сейчас стоит разработчик?'. Просто потому что много факторов, влияющих на ЗП. Анализ ЗП - это либо статистика одной платформы (hh, например), либо опросы в каких-то сообществах.

Проблема опросов в том, что они нерелевантны в большинстве случаев. Большинство IT профи из моего круга общения никогда не проходили опросы - им это неинтересно. Я тоже никогда не проходил, даже слабо представляю кто и где это проводит.

❗️ Поэтому, мы собираем данные вакансий и делаем инструмент анализа.

⚡️ Что дальше?
У нас есть парсер, и настроен ETL процесс сбора данных в БД по другой известной платформе с IT вакансиями. Данные платформы подтягиваются в дашборд, и можно сравнивать вакансии разных платформ - там очень много интересного (даш пока непубличный). Есть проблемы унификации данных разных платформ - это то, c чем помогает ML. Про это и следующие этапы проекта обязательно расскажем и напишем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25❤‍🔥74👌1
Волны кинобизнеса и кассовые сборы в кинотеатрах

В 'The New York Times' в 2008 году вышла визуализация кассовых сборов фильмов с 1986 по 2008. Тогда она была революционной, и позже завоевала несколько премий. Сама визуализация показывает денежный поток или всю выручку от проданных билетов во времени. В глаза бросаются самые кассовые фильмы.

А помните, 5 лет назад закрылись все кинотеатры 📽 на планете? Примерно с февраля по март закрыли всё. И деньги на развлечения ушли из оффлайна в онлайн буквально за считанные дни. Для онлайн развлечений настала золотая эра.

Летом 2020го я сделал визуализацию 'Movie Waves in 21st Century'. Вдохновился тогда именно визом 'The New York Times'. Хотел показать весь денежный поток фильмов с начала века до закрытия кинотеатров. Визуализация - это один большой Area Chart, разбитый по годам. Один фильм - одна область на графике, а цвета - дистрибьюторы (Warner Bros, Universal Pictures и т.д.). Данные только по продажам в США (Domestic Box Office).

Когда придумал концепцию визуализации, начал искать данные по дням или неделям продаж билетов в кинотеатры во всём мире. Таких данных не было. Разбивка до месяца не устраивала, поскольку фильмы обычно в прокате 4 недели. Нашёл подходящие данные, но только по продажам в США на сайте Box Office Mojo.

Сервис Box Office Mojo показывает кассовые сборы фильмов. Можно смотреть в разных разрезах и даже по дням, но только анные США. Возможно, продажи билетов во всём мире сложно собрать в принципе.

Сайт не отдаёт готовые датасеты, поэтому написал парсер и собирал данные так. На сайте данные в таблицах, надо было их спарсить и немного почистить.

В саму визуализацию включал только фильмы с > $10 млн выручки. Некассовых фильмов очень много, на визуализации их почти не видно, а точки для отображения строить приходится. В визуализации 13723 фильма с 2000 по 2020 год. И 234000 точки, на которых построена вся визуализация. Внутри каждой недели я рассчитывал дополнительные точки, чтобы недели соединялись не прямой, а плавной s-образной кривой. Пробовал 1млн и 500тыс точек, но тогда виз долго загружается.

В итоге, получились получились интересные волны денежного потока фильмов. Видны эффекты нарастания и спада волн, одна волна сменяет другую. Для того, чтобы волны накладывались друг на друга по мере старта проката фильмов, сделана сортировка точек на уровне датасета. В каждом году топ 12 фильмов помечены аннотациями.

❗️Теперь к инсайтам!

В каждом году можно видеть наиболее успешны прокатные сезоны и фильмы. Самые кассовые сезоны в США - Рождество и середина года.
Пики успешных фильмов в прокате видны сразу:
- 'Мстители: Конец игры' в 2019
- 'Черная пантера' в 2018
- 'Звёздные войны: Последний джедай' в 2017
и множество других. Выделяются франшизы 'Властелин Колец', 'Гарри Поттер', Marvel, DC Comisc, мультфильмы Pixar.

Интересно посмотреть по дистрибьютерам:
- Warner Bros. выпустил много фильмов по DC Comics: 'Джокер', 'Аквамен', 'Бэтмен', 'Отряд самоубийц'.
- Universal Pictures - много кассовых мультфильмов
- Dream Works - 'Трансформеры', 'Шрек', 'Мадагаскар'. Виден рассвет и закат этого периода. Студию продавали и переименовывали.
- New Line Cinema - 'Властелин колец' в начале века и постепенный спад сборов

Можно видеть рост кинобизнеса по годам.

Ну, и самый неприятный год 2020 показывает скатывание денежного потока в ноль из-за пандемии.

Планирую вернуться к визуализации и добавить прошлый век плюс последние 5 лет. Это мой любимый виз. Причины простые:

- 🎦 Кино . Это интересно и понятно всем
- 👫 Наша жизнь тесно связана с фильмами . Просто вспомнить когда и с кем ходили в кино тоже очень увлекательно
- Интересные математические расчёты
- 📊Отсылка к одной из самых известных визуализаций данных
- 🏄‍♀️ Волны. Они показывают взлёты и падения не только кино, но и всей истории
- 🖼 Просто красиво, и можно повесить на стену
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥2👍1
Агрегаторы IT вакансий и их сравнение

Продолжаю рассказывать о совместном с Никитой (канал 'Joni in Web') проекте анализа зарплатных вилок в IT. Начали с ежедневного сбора актуальных вакансий Getmatch и вывода данных на дашборд. Штука оказалась популярной, поэтому, продолжаем развивать.

🪄 Новое на текущем этапе:
1. Подключены данные платформы 'Хабр Карьера'.
2. Переехали с PostgreSQL на Clickhouse. Несколько изменена логика таблиц.
3. Настроен свой VPN. Никита писал у себя в канале о разработке собственного VPN 🛡
4. Настроен экспорт в Google Sheets для ежедневного обновления дашборда
5. Пересмотрен и переделан алертинг сбора данных
6. В дашборд добавлено несколько фич, он переключен на Google Sheets

У Никиты в канале можно подробно прочитать о технической реализации ETL части и алертинга. Здесь коротко напишу что сделано:

1. Парсер вакансий Хабр Карьеры отрабатывал всю прошлую неделю утром. Данные собирались и записывались в базу данных. На выходных, когда руки дошли проверить что записалось, выяснили, что DAG не совсем верно отрабатывал, и часть данных не записалась. Лучше столкнуться с такими багами 🐞 на старте, чем через месяц. Это исправили, и сейчас есть 4 дня полных данных по Хабру.
2. Переезд с PostgreSQL на Clickhouse состоялся по архитектурным причинам.
3. Экспорт в Google Sheet нужен только для Tableau Public. Паблик не поддерживает обновления по запросу из других источников.
4. Было добавлено сравнение записей в БД с записями парсера
5. В дашборде +1 новая платформа агрегации вакансий. Можно сравнивать вакансии и зарплаты на разных платформах. Добавлена сортировка по нескольким метрикам в общей таблице. Лого компаний подтягиваются с Хабра в таблицы. Переключение на Google Sheets прошло не очень гладко - послетали форматы и цвета, пришлось восстанавливать.

❗️В итоге, в публичном даше оставили 8 последних дней с двух платформ. В своём внутреннем дашборде собираем все данные.

По данным Хабр Карьеры. На Хабре только 20% вакансий с зарплатами, но собираем все. Есть вакансии Junior и Intern, их нет на Getmatch. Прикольно посмотреть что есть по джунам. По IT направлениям пришлось делать матчинг по ключевым словам - таких категорий в данных не было. Ещё в вакансиях Хабра может быть указано несколько городов, а в Getmatch - только один. Эту проблему планируем решить в следующей итерации добавлением в базу таблицы Location.

📊 С унификацией данных для разных платформ проблем действительно хватает:
1. По-разному указываются компании, напр. 'Avito' и 'Aвито'.
2. Число локаций в вакансиях может быть >1.
3. Навыки могут сильно различаться. На Хабре много того, что можно не писать в навыках, напр. 'Программирование'. В Getmatch - по делу, основные инструменты.
4. Названия вакансий на могут быть совершенно непонятными или с ошибками.
5. Лого платформ в разных форматах и разрешениях - криво подтягиваются в дашборд.
6. Не всегда понятно, зарплаты указаны Net или Gross.
7. Удалёнка может быть неявно прописана где-то в тексте вакансии. Где-то есть part time.
В общем, куча задач для LLM рисуется.

Другие инсайты ищите в дашборде по вакансиям IT. Можно, например, порадоваться за инженера по безопасности с ЗП до 2 600 000. Или посмотреть сколько вакансий публикуют по понедельникам.

На следующем этапе подключим третью платформу, поднимем dbt. По мере реализации проекта может много интересного произойти (в идеале - дойти до прогнозирования вилок ЗП по любой вакансии). Следите за постами.

📊 Дашборд на Tableau Public обновляется ежедневно и собирает последние 8 полных дней
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥274🥰3👍1
Проект VILKY. Roadmap, API, dbt и MongoDB

Прошлая неделя была неожиданной для совместного с Никитой проекта анализа зарплатных вилок IT. Дашборд попал в IT паблики. Мы получили море фидбека и предложения сотрудничества. 🔥

Пришлось на ходу менять Roadmap . Да, теперь он есть у проекта. Про Roadmap и метрики напишем позже.
У проекта появилось название 'VILKY' и лого. Мы просто нарисовали вилку 🍴 🍽.

Сегодня проекту автоматизации ровно месяц. Малыш ещё, но уже полноценный проект с роадмапом, DWH, VPN, API и визуализацией.

Основные фичи этого релиза:
1. Добавлены данные 3го агрегатора вакансий: Geekjob
2. Глубина данных дашборда увеличена до 15и дней. Можете смотреть динамику
3. Развёрнут API
4. Развернут и работает dbt. Нужен для трансформаций данных
5. Развёрнута база MongoDB. Сервис может принимать вакансии в виде текстовых документов и складывать в БД

По фичам:
1. Парсер Geekjob работает нормально, но есть вопросы к чистоте данных. В сервисе можно указывать несколько грейдов, и непонятно для какого указывать вилку. Поэтому, выбираем наименьший, то есть, если указано Junior, Middle, Senior, в дашборде такая вакансия уйдёт в категорию Junior. Есть проблемы с указанием ЗП - могут написать 500 000K, например. Приходится обрабатывать такое пока на уровне дашборда. После сбора всех платформ будет нормализация на уровне DWH. В работодателях встречается такое: 'Рекрутёр Олег' или 'Агентство Эйчар'. Это всё собираем, но в дашборд не идёт.
2. Просто посмотрите на историчность 15и дней. Немного доработали для этого экспорт в Google Sheets, чтобы таблицы были меньше.
3. API - топ фича. Читайте у Никиты в канале 'Joni in Web' как и зачем это было сделано.
4. dbt - тоже топ, большой задел на будущее. Тоже Никита развернул подключил новые данные.
5. MongoDB по API может получать вакансии в виде документов. Потом парсим, и в DWH.

Далее - самое интересное, давно в работе, но не писали про это. Надеемся, всё получится ❗️

📊 Посмотреть IT вакансии и зарплаты на дашборде
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍42
2025/07/12 23:39:31
Back to Top
HTML Embed Code: