Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы

в 20:34, , рубрики: matplotlib, pandas, python, веб-аналитика, Инфографика, Программирование, Социальные сети и сообщества, статистика, Статистика в IT, хабр

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

Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы - 1

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

Сбор данных

Для начала, пришлось дополнить парсер, чтобы он собирал больше данных. Информация о рейтинге сообщений и позиция сообщений в треде уже есть в HTML, а вот чтобы получить «карму» пользователя, пришлось делать дополнительный запрос. Разумеется, значения кешировались, чтобы для одного и того же пользователя не запрашивать данные много раз.

Обновленный датасет теперь выглядит так (ники пользователей убраны):

https://habr.com/ru/post/322900/,comment_19707920,comment_19706258,UserXXXX,karma:112.2,answers:1,2019-02-04 20:26:00,rating:1,up:1,down:0,А какие там могут быть правила?
https://habr.com/ru/company/mailru/blog/351212/,comment_19794710,comment_19794310,UserXXXX,karma:-10.0,answers:1,2019-02-23 18:16:00,rating:3,up:5,down:-2,Теперь понятно откуда взяли Стену для Девергента
...

Из дополнительных полей, было добавлено поле answers (количество ответов), «карма» юзера, а также положительные и отрицательные оценки.

Функция получения «кармы» по нику пользователя, к примеру, выглядит так:

def get_karma(user: str):
        data_html = get_as_str("https://habr.com/ru/users/%s/" % user)
        karma = data_html.find_between('info/help/karma/', '</a>').find_between('stacked-counter__value', '/div>').find_between('>', '<').replace(",", ".").replace('–', '-')
        return float(karma) if len(karma) > 0 else 0.0

Как можно видеть, все довольно просто, никакого rocket science. Отдельно стоит поблагодарить программистов Хабра за понятный и удобный для парсинга HTML код.

Размер получившегося CSV-файла за этот 2019 год составил 334МБайт. Можно приступать к анализу. Перед началом напомню, что все опубликованные данные являются открытыми и общедоступными, они также индексируются поисковыми системами. Никакой инсайдерской информации у меня нет, все взято из страниц этого сайта.

Карма

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

Всего на сайте на момент сбора рейтинга, 25109 пользователей — это те, кто хоть раз оставил хоть один комментарий. Из них нулевую карму имеют 9973 пользователей (39%). Положительную карму имеют 12346 пользователей (49%), из них карму <=4 имеют 5384 пользователя (21%), а карму >= 40 (этот уровень позволяет участвовать в «программе поощрения» и получать оплату за статьи) имеет 1522 пользователя (6%). Негативную карму имеют 2790 пользователей (11%).

Графически основная часть распределения выглядит так:

Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы - 2

По вертикали — число пользователей с данной кармой. График обрезан сверху, т.к. пользователей с нулевой кармой максимум (9973 против 2570 с «кармой» 1). «Заминусованных» пользователей не так уж и мало, но все же график смещен в плюс, и это радует. Как «высоко» и «низко» может быть карма?

Топ-10 по рейтингу кармы занимают Zelenyikot (+1509.2), Milfgard (+1471.0), PatientZero (+986.0), Boomburum (+881.9), ValdikSS (+873.5), alizar (+837.5), tangro (+802.5), lozga (+764.7), DIHALT (696.1) и Tiberius (+653.0). Думаю, их можно поздравить — good job, dudes :) Если я кого-то упустил — пишите в личные сообщения, добавлю вручную.

Антитоп-10 по карме занимают… нет, пожалуй их ники я приводить не буду чтобы не делать таким юзерам лишней «рекламы», кому интересно, могут вбить данные из скриншота под спойлером. Разумеется, негативная карма на сайте лишь говорит о том, что человек выражает непопулярное на этом сайте мнение, и ничего не говорит о его личных качествах, так что попавшим в «антитоп» просьба не обижаться.

Антитоп-10 по карме

Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы - 3

Сообщения

В сообщениях тоже можно найти немало интересного.

Топ-5 по длине занимают сообщения длиной 26, 17, 16, 15 и 14 КБайт соответственно.

Интересно посмотреть на распределение в графическом виде:
Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы - 4

Как можно видеть, пик приходится на сообщения около 100 символов.

Рейтинг

Самые положительно оцененные сообщения: +218, +144, +141, +133 и +124.

Самые отрицательно оцененные сообщения: -248, -170, -163, -131 и -114.

Интересно, что распределение количества сообщений по набранному рейтингу примерно похоже на распределение «кармы» — есть как положительно, так и отрицательно оцененные сообщения, но «положительных» все же больше. Что опять же, не может не радовать.

Дискуссии

Следующим интересным вопросом было нахождение наиболее длинного треда среди сообщений. Сделать это оказалось довольно просто — каждое сообщение в HTML имеет уникальный идентификатор, также есть параметр data-parent_id, остальное, как говорится, дело техники.

Итак, самые длинные сра обсуждения 2019 года: 619 ответов, 618 ответов, 614 ответов, 588 ответов и 556 ответов. Любопытно, что 4 из 5 сообщений, вызвавших эти треды, написаны юзерами с кармой меньше -20.

Сгруппируем комментарии по числу ответов на них:

Хабрастатистика: анализируем комментарии читателей. Часть 2, ответы на вопросы - 5

По вертикали — число сообщений за этот год. Большая часть комментариев (41% или 183000) остались вообще без ответа, 75тыс комментариев имеют 1 ответ, дальнейшее распределение видно на картинке.

Заключение

На этом я закончу тему «хабрастатистики» до января — в конце года будет опубликован финальный рейтинг лучших статей 2019 года, ну и может найдутся еще какие-то интересные закономерности.

Надеюсь, было интересно. Если я кого-то забыл — пишите, поправлю.

Автор: DmitrySpb79

Источник


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