Хабрастатистика: как живет Хабр без geektimes

    Привет, Хабр.

    Данная статья является логическим продолжением рейтинга Лучших статей Хабра за 2018 год. И хотя год еще не закончился, но как известно, летом произошли изменения в правилах, соответственно, стало интересно посмотреть, повлияло ли это на что-нибудь.



    Кроме собственно статистики, будет приведен и обновленный рейтинг статей, а также немного исходников для тех кому интересно, как это работает.

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

    Исходные данные


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

    2019-08-11T22:36Z,https://habr.com/ru/post/463197/,"Blazor + MVVM = Silverlight наносит ответный удар, потому что древнее зло непобедимо",votes:11,votesplus:17,votesmin:6,bookmarks:40,views:5300,comments:73
    2019-08-11T05:26Z,https://habr.com/ru/news/t/463199/,"В NASA испытали систему автономного управления одного микроспутника другим",votes:15,votesplus:15,votesmin:0,bookmarks:2,views:1700,comments:7


    Обработка


    Для парсинга мы будем использовать Python, Pandas и Matplotlib. Те кому статистика неинтересна, эту часть могут пропустить и сразу перейти к статьям.

    Сначала нужно загрузить датасет в память и выделить данные за нужный год.

    import pandas as pd
    import datetime
    import matplotlib.dates as mdates
    from matplotlib.ticker import FormatStrFormatter
    from pandas.plotting import register_matplotlib_converters
    
    
    df = pd.read_csv("habr.csv", sep=',', encoding='utf-8', error_bad_lines=True, quotechar='"', comment='#')
    dates = pd.to_datetime(df['datetime'], format='%Y-%m-%dT%H:%MZ')
    df['datetime'] = dates
    year = 2019
    df = df[(df['datetime'] >= pd.Timestamp(datetime.date(year, 1, 1))) & (df['datetime'] < pd.Timestamp(datetime.date(year+1, 1, 1)))]
    
    print(df.shape)

    Оказывается, за этот год (хотя он еще не закончен) на момент написания текста было опубликовано 12715 статей. Для сравнения, за весь 2018й — 15904. В общем, немало — это примерно 43 статьи в день (и это только с положительным рейтингом, сколько загружается всего статей, которые ушли в минус или были удалены, можно только гадать или примерно прикинуть по пропускам среди идентификаторов).

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

    def to_float(s):
        # "bookmarks:22" => 22.0
        num = ''.join(i for i in s if i.isdigit())
        return float(num)
    
    def to_int(s):
        # "bookmarks:22" => 22
        num = ''.join(i for i in s if i.isdigit())
        return int(num)
    
    def to_date(dt):
        return dt.date() 
    
    date = dates.map(to_date, na_action=None)
    views = df["views"].map(to_int, na_action=None)
    bookmarks = df["bookmarks"].map(to_int, na_action=None)
    votes = df["votes"].map(to_float, na_action=None)
    votes_up = df["up"].map(to_float, na_action=None)
    votes_down = df["down"].map(to_float, na_action=None)
    comments = df["comments"].map(to_int, na_action=None)
    
    df['date'] = date
    df['views'] = views
    df['votes'] = votes
    df['bookmarks'] = bookmarks
    df['up'] = votes_up
    df['down'] = votes_down

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

    g = df.groupby(['date'])
    days_count = g.size().reset_index(name='counts')
    year_days = days_count['date'].values
    grouped = g.median().reset_index()
    grouped['counts'] = days_count['counts']
    counts_per_day = grouped['counts'].values
    counts_per_day_avg = grouped['counts'].rolling(window=20).mean()
    view_per_day = grouped['views'].values
    view_per_day_avg = grouped['views'].rolling(window=20).mean()
    votes_per_day = grouped['votes'].values
    votes_per_day_avg = grouped['votes'].rolling(window=20).mean()
    bookmarks_per_day = grouped['bookmarks'].values
    bookmarks_per_day_avg = grouped['bookmarks'].rolling(window=20).mean()

    Теперь самое интересное, мы можем посмотреть на графики.

    Посмотрим количество публикаций на Хабре в 2019 году.

    import matplotlib.pyplot as plt
    
    plt.rcParams["figure.figsize"] = (16, 8)
    fig, ax = plt.subplots()
    
    plt.bar(year_days, counts_per_day, label='Articles/day')
    plt.plot(year_days, counts_per_day_avg, 'g-', label='Articles avg/day')
    plt.xticks(rotation=45)
    ax.xaxis.set_major_formatter(mdates.DateFormatter("%d-%m-%Y"))  
    ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
    plt.legend(loc='best')
    plt.tight_layout()
    plt.show()

    Результат интересный. Как можно видеть, Хабр в течении года слегка «колбасило». Причину я не знаю.



    Для сравнения, 2018 выглядит несколько «ровнее»:



    В целом, какого либо кардинального уменьшения числа публикуемых статей в 2019м я на графике не увидел. Более того, наоборот, оно с лета похоже даже немного выросло.

    Но вот следующие два графика удручают меня немного больше.

    Среднее число просмотров на статью:



    Средний рейтинг на статью:



    Как можно видеть, среднее число просмотров в течении года немного снижается. Это можно объяснить тем, что новые статьи еще не проиндексированы поисковиками, и их находят не так часто. А вот снижение среднего рейтинга на статью более непонятно. Ощущение такое, что читатели или просто не успевают просматривать такое количество статей или не обращают внимание на рейтинги. С точки зрения программы поощрения авторов, это тенденция весьма неприятная.

    Кстати, в 2018 такого не было, и график более-менее ровный.



    В общем, владельцам ресурса есть над чем подумать.

    Но не будем о грустном. В целом можно сказать, что летние изменения Хабр «пережил» вполне успешно, и число статей на сайте не сократилось.

    Рейтинг


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

    Топ статей по числу просмотров


    Топ статей по соотношению рейтинга к просмотрам


    Топ статей по соотношению комментариев к просмотрам


    Топ самых спорных статей


    Топ статей по рейтингу


    Топ статей по числу добавлений в закладки


    Топ по соотношению добавлений в закладки к просмотрам


    Топ статей по числу комментариев


    И наконец, последний Антитоп по числу дизлайков


    Уфф. У меня есть еще несколько интересных выборок, но не буду утомлять читателей.

    Заключение


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

    Во-первых, все-таки 60% топа — это статьи жанра «geektimes». Будет ли их меньше в следующем году, и как будет Хабр выглядеть без статей про пиво, космос, медицину и прочее — я не знаю. Определенно, читатели что-то потеряют. Посмотрим.

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

    Как-то так. Надеюсь, было познавательно.

    Список статей получился длинный, ну оно наверно и к лучшему. Всем приятного чтения.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 30

      +6

      Спасибо за большую проделанную работу.


      Но, если учесть, что Вы анализировали не состояние дел на конфетной фабрике, то хотелось бы видеть распределение статей по тематике. Тогда была бы видна тенденция движения Хабра. Мне кажется, что он все больше заваливается в сторону Geektimes

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

        А в целом да, текущий жанр Хабра (имхо) — это легкий науч.поп. Узкоспециализированные статьи просто остаются незамеченными среди остальных 40 в день. Это и не хорошо и не плохо, просто так есть.
        0
        Вспоминается любительская радиосвязь времен СССР, там как бы тоже можно было только узнать позывной, город и как вообще слышно (если микрофоном работать):-)
          0
          Если я буду анализировать еще и профайлы авторов, мне придется соблюдать GDPR и правила хранения персональных данных :)

          Если серьезно, рейтинг по авторам планируется, но позже.
            0
            А в азбуке морзе — еще и оценить приятность тона сигнала. (оценка 59 (5-бальная шакала громкости, 9-бальная шкала разборчивости) расширялась до 599 — громкость/разборчивость/тон)
              0

              Шакал громкости, тысяча чертей!

            0
            Ощущение такое, что читатели или просто не успевают просматривать такое количество статей или не обращают внимание на рейтинги.

            Извините, я не уловил мысль.
            Обратить внимание на рейтинги это о чем? И что должно меняться в поведении читателя отобращения внимания на оные?
              +1
              Читайте тут — habr.com/ru/ppa/docs/rules

              Если кратко: то оплата авторам зависит от рейтинга статьи на сайте. Пороги начисления рейтинга — +30 или +50 в течении 3 дней от публикации. Если статей слишком много и их не успевают прочитывать, рейтинг не набирается, автор ничего не получает. Работа забесплатно, как вы понимаете, не сильно мотивирует к написанию новых статей.

              Как-то так.
                0
                Взять, например, мой аккаунт на хабре. Скорее всего у меня не будет возможности поставить когда-нибудь + или -. Даже если и будет, то таких аккаунтов достаточно много и их становится больше. Всё же хабр более или менее изолированная среда с определённой степенью привилегированности.
                  0
                  Может быть. Я не занимаюсь бизнес-аналитикой и не знаю причин, просто вижу статистически что средний рейтинг на статью падает.
                    0
                    Согласен. На том же stackoverflow проще в этом плане, хотя и отличается направленность ресурсов. Впрочем касаемо моих минусов, я потом осознал, что это были мои ошибки и вправду. В целом на хабре судят все по делу, да и понимаешь, что реально много людей, которые в разы лучше тебя разбираются в it. Однако, я не понимаю до конца систему оценки здесь, по-моему, минус имеет больший вес, чем плюс. Вроде бы статья, например, набрала больше плюсов, но за счет минусов ты потерял в карме и рейтинге. Может быть надо проще как-то оценивать, какая-то магическая оценка здесь все-таки присутствует, говорят же, все гениальное — просто
                    0
                    или не обращают внимание на рейтинги

                    Имеете ввиду «не ставят оценок»? Спасибо, теперь понятно. Я просто далек от всего этого.
                  +1
                  Мне кажется, вести статистику по обычным статьям и новостным стоило бы разделно. Тем более, если автора интересует 'geektimes-эффект'.
                    +2
                    Во-вторых, неожиданно качественным оказался топ по закладкам.
                    Добавил в закладки.
                      +3
                      ха, снижение среднего рейтинга… Так его поменять нельзя, во всяк. случае на мобильном хроме в андройде
                        +1

                        Меняю без проблем

                          0
                          а из моб. приложения попробуйте
                            0

                            А оно ещё существует?
                            Boomburum вроде писал, что они будут развивать мобильную версию сайта вместо приложения.

                              0
                              Конечно, habr есть в аппсторе. Позволяет менять рейтинг только когда он нулевой.
                                0
                                Всё верно, мобильное приложение не поддерживаем больше (хотя сам недавно проверял и вроде вполне рабочее ещё)), а вот мобильная версия вполне себе развивается :)
                                  +1

                                  Но Вы тогда так и не ответили на вопрос, откроете ли исходники приложения, для энтузиастов развития функционала приложения.

                                    0

                                    И ещё вопрос.
                                    Когда в мобильной версии появится возможность редактирования?
                                    Теперь если решил дополнить коммент или исправить ошибку, то нужно переходить в версию для ПК, что не очень удобно.

                            0
                            Очень крутая аналитическая работа. Я большую половину статей не видел, а сейчас с удовольствием прочел! Спасибо за проделанный труд!
                              0
                              Топ по закладкам говорит не о качестве статьи как таковом, а о, не знаю, энцеклопедичности что-ли. Добавляют часто статьи, где в одном месте собрана какая-нибудь информация, или мануал какой-нибудь. Статьи повествовательные, будь они трижды хороши, добавлять будут гораздо реже.
                                0
                                Чем плохи статьи, в которых, собрана информация, энциклопедичность и tutoiral?
                                Вы добавите в свои закладки статью повествовательную и будете раза 3 читать повествование или же практическиое руководство, не пошло вернулся снова, перечитал, понял свою ошибку или автора.

                                +2

                                Вошёл аж в два рейтинга, и не на последних строчках. Хороший год.

                                  0

                                  А статистику по англоязычной версии будете делать?

                                    0
                                    А она жива вообще? :) Последнее что я видел, это только дубликаты статей. Притока англоязычных авторов на Хабр вроде не наблюдается.
                                      0

                                      Дык она ж ещё совсем нью.
                                      Вот и интересно посмотреть, что там с этим эмбрионом происходит :)

                                        0
                                        Все там довольно грустно:
                                        График

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

                                  Самое читаемое