Наbra Analytics Tools: аудитория хабов

в 12:41, , рубрики: визуализация данных
Исследуем аудиторию

Перед каждым автором на Хабре встает вопрос: «В какие же хабы разместить статью»? Безусловно, ответ прежде всего зависит от темы. С другой стороны, многие статьи достаточно широкого профиля и приходится тщательно выбирать в какие три хаба написать. Сам Хабр такого инструментария для анализа не предоставляет. А что делают обитатели хабра, когда инструмент нужен, а его нет? Они его пишут!

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

Представим, что мы хотим написать в хаб медиа и рассчитываем, а не стоит ли разместить статью в хаб Статистика в IT? Для того чтобы рассчитать целесообразность, необходимо найти пересечение аудитории хабов:
Наbra Analytics Tools: аудитория хабов
Мы видим, что, фактически, подавляющее количество читателей хабов видит статьи и там и там, а это хороший сигнал о том, что возможно стоить рассмотреть имеющиеся альтернативы.

Общее применение


Зачем еще может понадобиться такой инструмент? (Автор не нашел лучшего аналога для слова tool.) Допустим, что вы представитель какой-либо компании и хотите посмотреть как много читателей определенного хаба подписались на корпоративный блог после написания статьи. Например вы собираетесь написать Проверка фреймворка Qt 5 и хотите посмотреть сколько человек из хаба Qt подписались на корпоративный блог PVS студии, тогда решение построить две диаграммы «до» и «после» следующего вида (тут приводится только «после»):
Наbra Analytics Tools: аудитория хабов
Если по графику общая тенденция не слишком видна, то наш tool должен также предоставлять текстовую информацию о пересечении, в духе:
57% of pvs-studio(company) intersects with qt_software

И хаб, и корпоративный блог

Есть на Хабре такие компании, у которых присутствует и корпоративный блог, и собственно хаб, посвященный компании. Например у Яндекса: блог и хаб. Аудитория блога 11к, а хаба 85к, а значит казалось бы зачем размещать в корпоративном блоге, если уже поместили в хаб? Наверняка читатели блога и хаб читают, при соотношении-то 1 к 8 по читателям. Проверим же эту догадку:
Наbra Analytics Tools: аудитория хабов
Как можно заметить, примерно половина читателей корпоративного блога не читают общий хаб, а значит размещать в оба хаба имеет смысл.

Общий и технический блог

А бывает и такое, что есть общий хаб, например, Вконтакте и технический хаб Вконтакте API и встает вопрос, а имеет ли смысл постить в оба? Не будет ли аудитория второго полностью входить в первую? И это несложно проверить!
Наbra Analytics Tools: аудитория хабов
Отсюда следует, что догадка оказывается неверной, существуют определенный круг людей читающих технический хаб Вконтакте API и не читающий общий хаб Вконтакте.

Документация, код, данные


И тут, конечно же, внимательный читатель восклицает: а что со всех этих графиков простому хабра-автору? Действительно от одних только графиков приведенных выше пользы мало, но польза есть от инструмента, который их будет строить для автора! Настал момент предоставить первый (и пока единственный) tool в серии Habra Analytics Tools — Venn diagrams for Habrahabr: весь код, документация и примеры доступны через github.

Сам инструмент доступен в виде скрипта на python (с пачкой библиотек) и для тех, у кого нет желания ничего настраивать и скачивать замечательные библиотеки matplotlib_venn и urllib3 — доступны бинарники для трех платформ. (Автор приносит свои извинения за размер файлов — сделано всё с помощью pyinstaller, который запихивает все библиотеки в бинарник, но надеется, что для читателей полчаса свободного времени (который бы ушел на настройку и скачивание библиотек) важнее лишних 50МБ.)

Tool доступен в следующих версиях: исходники (python) и исполняемые файлы (все библиотеки включены).

  • python скрипт venn.py и папка src/; необходимо установить библиотеки:
    pip install beautifulsoup4 progress urllib3 matplotlib_venn
  • venn.exe для Windows
  • venn.elf для Linux
  • venn.osx для Mac OS

Также необходимо скачать архив data.7z (~15МБ, unzipped ~ 200МБ) и распаковать его в той же директории, что и скрипт. Далее в зависимости от скаченной версии необходимо вызывать python venn.py, ./venn или venn.exe, будем приводить первый вариант в статье.

Скрипт является консольным, поэтому его важнейшей командой является help, доступный через флаги -h, --help:
python venn.py -h
пример вывода на экран:
Наbra Analytics Tools: аудитория хабов
Пройдемся же по ключевым флагам и опциям:

Создание диаграммы

python venn.py -d space programming fido
или
python venn.py --draw space programming fido
Наbra Analytics Tools: аудитория хабов
Если данные не присутствуют ( в датасете собраны все доступные хабы на 26 апреля 2014), то программа автоматически проверит наличие данных на хабре и начнет скачивание, примерно 15-20 минут на хаб. Пример сообщения о скачивании:
Наbra Analytics Tools: аудитория хабов

Используемые имена хабов

Для каждого хаба в программе используется соответствующее имя из ссылки на этот хаб habrahabr.ru/hub/space — для хаба Космонавтика, space — это имя в программе.

Вывод доступных имен хабов и их полные названия, все операции производятся по коротким латинским именам из списка (они же используются в url на хабре)
python venn.py --hubs
В идеале используется вместе с командой grep:
Наbra Analytics Tools: аудитория хабов

Базовая статистика

Создание диаграммы вместе с базовой статистикой
python venn.py --stats -d space programming fido
или вывод только базовой статистики без диаграммы: ключ --onlystats или -o
python venn.py -o space programming fido
Наbra Analytics Tools: аудитория хабов

Хабы и компании

Как уже было отмечено ранее, yandex — это корпоративный блог и хаб, чтобы устранить неоднозначность используется ключ:
--company <argument_index>
Пример:
python venn.py -d yandex yandex --company 2
Первый хаб будет воспринят как обычный хаб (по умолчанию), а второй как блог компании.

Другие команды

Удаление хаба из списка (не удаляет данные)
python venn.py --removehublink space

Добавление хаба в список (не скачивает данные)
python venn.py --addhublink space

Обновление данных хаба, скачивает данные ~15-20 минут
python venn.py --updatehub space

Диаграммы иили статистика без заголовка про пиццу и котят
python venn.py -s -d space programming
добавление компании и её скачивание данных (также обновляет данные, если уже что-то скачено)
pytnon venn.py --downloadcompany yandex

Заключение


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

Данный tool может служить вспомогательным инструментом для оценки аудитории перед размещением статьи или анализом аудитории корпоративного блога.

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

Идеи для следующих tools

  • Монитор статей: после написания статьи нужно будет вызвать тулзу monitor $article_id и она будет записывать и рисовать изменение просмотров (плюсов, etc) во времени, а так же shares and likes в социальных сетях и возможно комментарии читателей
  • Предпочтения пользователей хаба: пусть мы выбрали какой-нибудь хаб hub1 и нам интересно, в каких хабах читатели еще состоят? Каково распределение их вкусов? Какой хаб «ближе всего» к данному, а какой «дальше»?

Бонус — диспозиция читателей хабов С++, Python и Java

Дзен-символ языков программирования:
Наbra Analytics Tools: аудитория хабов

Автор: varagian

Источник

Поделиться

* - обязательные к заполнению поля