Habrastatistika: Habr geektimes olmadan necə yaşayır

Hey Habr.

Bu yazı reytinqin məntiqi davamıdır 2018-ci ilin ən yaxşı Habr məqalələri. İl hələ bitməsə də, bildiyiniz kimi, yayda qaydalarda dəyişikliklər oldu, buna uyğun olaraq bunun nəyəsə təsir edib-etmədiyini görmək maraqlı oldu.

Habrastatistika: Habr geektimes olmadan necə yaşayır

Faktiki statistikaya əlavə olaraq, məqalələrin yenilənmiş reytinqi, həmçinin onun necə işlədiyi ilə maraqlananlar üçün bəzi mənbə kodu təqdim ediləcək.

Baş verənlərlə maraqlananlar üçün davamı kəsilməkdədir. Saytın bölmələrinin daha ətraflı təhlili ilə maraqlananlar da baxa bilərlər növbəti hissə.

Xam data

Bu reytinq qeyri-rəsmidir və mənim heç bir insayder məlumatım yoxdur. Brauzerinizin ünvan çubuğuna baxaraq asanlıqla görə biləcəyiniz kimi, Habré-dəki bütün məqalələr davamlı nömrələrə malikdir. Sonra texnika məsələsidir, biz sadəcə olaraq bütün məqalələri ardıcıl olaraq ardıcıl olaraq oxuyuruq (serveri yükləməmək üçün bir mövzuda və fasilələrlə). Dəyərlərin özləri Python-da sadə təhlilçi tərəfindən əldə edilmişdir (mənbələr mövcuddur burada) və csv faylında belə bir şey saxlanıldı:

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

Emal

Təhlil üçün Python, Pandas və Matplotlib istifadə edəcəyik. Statistikaya marağı olmayanlar bu hissəni atlayıb birbaşa məqalələrə keçə bilərlər.

Əvvəlcə məlumat dəstini yaddaşa yükləməli və istədiyiniz il üçün məlumatları seçməlisiniz.

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)

Belə çıxır ki, bu il (hələ bitməsə də) yazı hazırlanarkən 12715 məqalə dərc olunub. Müqayisə üçün qeyd edək ki, bütün 2018-ci il üçün - 15904. Ümumiyyətlə, çox şey - bu, gündə təxminən 43 məqalədir (və bu yalnız müsbət reytinqlədir; mənfi və ya silinmiş nə qədər məqalə endirilib, yalnız təxmin etmək olar. və ya identifikatorlar arasındakı boşluqlardan təxminən təxmin edin).

Datasetdən lazımi sahələri seçək. Metriklər olaraq baxışların, şərhlərin, reytinq dəyərlərinin və əlfəcinlərin sayından istifadə edəcəyik.

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

İndi məlumatlar verilənlər bazasına əlavə edildi və biz ondan istifadə edə bilərik. Gəlin məlumatları günlərə görə qruplaşdıraq və orta qiymətləri götürək.

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()

İndi maraqlı tərəf odur ki, biz qrafiklərə baxa bilərik.

2019-cu ildə Habré-də nəşrlərin sayına baxaq.

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()

Nəticə maraqlıdır. Gördüyünüz kimi, Habr il boyu bir az "kolbasa" olmuşdur. Səbəbini bilmirəm.

Habrastatistika: Habr geektimes olmadan necə yaşayır

Müqayisə üçün, 2018 bir az daha hamar görünür:

Habrastatistika: Habr geektimes olmadan necə yaşayır

Ümumiyyətlə, qrafik üzrə 2019-cu ildə dərc olunan məqalələrin sayında kəskin azalma görmədim. Üstəlik, əksinə, yaydan bəri hətta bir az da artıb.

Ancaq sonrakı iki qrafik məni bir az daha depressiyaya salır.

Hər məqaləyə orta baxış sayı:

Habrastatistika: Habr geektimes olmadan necə yaşayır

Məqalə üzrə orta reytinq:

Habrastatistika: Habr geektimes olmadan necə yaşayır

Göründüyü kimi, il ərzində orta baxış sayı bir qədər azalır. Bunu onunla izah etmək olar ki, yeni məqalələr hələ axtarış sistemləri tərəfindən indeksləşdirilməyib və onlar tez-tez tapılmır. Amma hər məqaləyə görə orta reytinqin aşağı düşməsi daha anlaşılmazdır. Hiss olunur ki, oxucuların ya sadəcə olaraq bu qədər məqaləyə baxmağa vaxtı yoxdur, ya da reytinqlərə fikir vermirlər. Müəllif mükafatı proqramı baxımından bu tendensiya çox xoşagəlməzdir.

Yeri gəlmişkən, bu, 2018-ci ildə baş vermədi və cədvəl az-çox bərabərdir.

Habrastatistika: Habr geektimes olmadan necə yaşayır

Ümumiyyətlə, resurs sahiblərinin düşünməli olduğu bir şey var.

Ancaq kədərli şeylərdən danışmayaq. Ümumiyyətlə, deyə bilərik ki, Habr yay dəyişikliklərindən kifayət qədər uğurla "sağ qaldı" və saytdakı məqalələrin sayı azalmadı.

Qiymət

İndi, əslində, reytinq. İçəri girənləri təbrik edirəm. Bir daha sizə xatırladıram ki, reytinq qeyri-rəsmidir, bəlkə nəyisə qaçırmışam və əgər hansısa məqalə mütləq burada olmalıdır, amma elə deyilsə, yazın, onu əl ilə əlavə edəcəyəm. Reytinq olaraq hesablanmış metriklərdən istifadə edirəm, məncə, olduqca maraqlı oldu.

Baxış sayına görə ən yaxşı məqalələr

Reytinq və baxış nisbətinə görə ən yaxşı məqalələr

Şərhlərə baxış nisbətinə görə ən yaxşı məqalələr

Ən mübahisəli məqalələr

Reytinq üzrə ən yaxşı məqalələr

Əlfəcinlərin sayına görə ən yaxşı məqalələr

Əlfəcinlərin baxışa nisbətinə görə yuxarı

Şərhlərin sayına görə ən yaxşı məqalələr

Və nəhayət, sonuncu Bəyənməmə sayına görə antitop

uh. Daha bir neçə maraqlı seçimim var, amma oxucuları yormayacağam.

Nəticə

Reytinq qurarkən maraqlı görünən iki məqama diqqət yetirdim.

Birincisi, yuxarının 60%-i “geektimes” janrında olan məqalələrdir. Gələn il onlardan daha az olacaqmı və pivə, kosmos, tibb və s. haqqında məqalələr olmadan Habr necə görünəcək, bilmirəm. Şübhəsiz ki, oxucular nəyisə itirəcəklər. Görək.

İkincisi, üst əlfəcinlər gözlənilmədən yüksək keyfiyyətli oldu. Bu, psixoloji cəhətdən başa düşüləndir, oxucular reytinqə diqqət yetirməyə bilər, ancaq məqalə tələb olunur, sonra o, əlfəcinlərinizə əlavə olunacaq. Və burada faydalı və ciddi məqalələrin ən böyük konsentrasiyası var. Düşünürəm ki, sayt sahibləri Habré-də bu xüsusi kateqoriyalı məqalələri artırmaq istəyirlərsə, əlfəcinlərin sayı ilə mükafat proqramı arasındakı əlaqəni birtəhər düşünməlidirlər.

Bu kimi bir şey. Ümid edirəm məlumatlandırıcı oldu.

Məqalələrin siyahısı uzun oldu, yəqin ki, daha yaxşıdır. Hər kəsə xoş oxu.

Mənbə: www.habr.com

Добавить комментарий