Ta članek je logično nadaljevanje ocene Najboljši članki Habra za leto 2018. In čeprav leta še ni konec, a kot veste, so se poleti pravila spremenila, zato je postalo zanimivo videti, ali to kaj vpliva.
Poleg dejanske statistike bo na voljo tudi posodobljena ocena člankov, pa tudi nekaj virov za tiste, ki jih zanima, kako deluje.
Za tiste, ki jih zanima, kaj se je zgodilo, nadaljevanje pod rezom. Tisti, ki jih zanima podrobnejša analiza razdelkov spletnega mesta, si lahko ogledate tudi naslednji del.
Surovi podatki
Ta ocena je neuradna in nimam notranjih podatkov. Kot lahko vidite, če pogledate naslovno vrstico brskalnika, imajo vsi članki na Habréju neprekinjeno oštevilčenje. Potem je stvar tehnike, samo v ciklu preberemo vse članke po vrsti (v eni niti in s premori, da ne obremenjujemo strežnika). Same vrednosti so bile pridobljene s preprostim razčlenjevalnikom Python (obstajajo viri tukaj) in shrani v datoteko csv, kot je ta:
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
Predelava
Za razčlenjevanje bomo uporabili Python, Pandas in Matplotlib. Kogar statistika ne zanima, lahko ta del preskoči in gre naravnost k člankom.
Najprej morate naložiti nabor podatkov v pomnilnik in izbrati podatke za želeno leto.
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)
Izkazalo se je, da je bilo za letošnje leto (čeprav še ni končano) v času pisanja objavljenih 12715 člankov. Za primerjavo, za celotno leto 2018 - 15904. Na splošno veliko - to je približno 43 člankov na dan (in to samo s pozitivno oceno, koliko člankov je skupno naloženih, ki so postali negativni ali izbrisani, po izpustih med identifikatorji lahko samo ugibamo ali približno ocenjujemo).
Iz nabora podatkov izberite zahtevana polja. Kot meritve bomo uporabili število ogledov, komentarjev, vrednosti ocen in število zaznamkov.
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
Zdaj so podatki dodani v nabor podatkov in jih lahko uporabimo. Združimo podatke po dnevih in vzemimo povprečne vrednosti.
Rezultat je zanimiv. Kot vidite, je Habr med letom rahlo "klobasal". Ne poznam razloga.
Za primerjavo, leto 2018 izgleda nekoliko "bolj gladko":
Na splošno na lestvici nisem opazil drastičnega zmanjšanja števila objavljenih člankov v letu 2019. Še več, nasprotno, zdi se, da je od poletja celo nekoliko zrasel.
Me pa naslednja dva grafa malo bolj potrta.
Povprečno število ogledov na članek:
Povprečna ocena na članek:
Kot lahko vidite, se povprečno število ogledov med letom nekoliko zmanjša. To je mogoče razložiti z dejstvom, da iskalniki še niso indeksirali novih člankov in jih ni tako pogosto najti. Bolj nerazumljivo pa je znižanje povprečne ocene na članek. Občutek je, da bralci preprosto nimajo časa za ogled toliko člankov ali pa se ne ozirajo na ocene. Z vidika programa spodbujanja avtorjev je ta trend zelo neprijeten.
Mimogrede, v letu 2018 ni bilo tako in urnik je bolj ali manj izenačen.
Na splošno imajo lastniki virov o čem razmišljati.
A da ne govorimo o žalostnih stvareh. Na splošno lahko rečemo, da je Habr precej uspešno "preživel" poletne spremembe, število člankov na spletnem mestu pa se ni zmanjšalo.
Ocena
Zdaj pa pravzaprav ocena. Čestitke tistim, ki so se vključili. Naj vas še enkrat spomnim, da je ocena neuradna, morda sem kaj spregledal, in če bi kakšen članek vsekakor moral biti tukaj, pa ni, napišite, dodal ga bom ročno. Kot oceno uporabljam izračunano metriko, ki se mi zdi precej zanimiva.
Uff. Imam še nekaj zanimivih izborov, a ne bom dolgočasil bralcev.
Zaključek
Pri oblikovanju ocene sem bil pozoren na dve točki, ki sta se zdeli zanimivi.
Prvič, navsezadnje je 60% vrha člankov žanra "geektimes". Ali jih bo naslednje leto manj in kako bo izgledal Habr brez člankov o pivu, vesolju, medicini in tako naprej - ne vem. Vsekakor bodo bralci kaj pogrešali. Pa poglejmo.
Drugič, zgornji del zaznamkov se je izkazal za nepričakovano visoke kakovosti. To je psihološko razumljivo, bralci morda ne bodo pozorni na oceno in če članek je potrebno, potem bo dodan med zaznamke. In tukaj je največja koncentracija uporabnih in resnih člankov. Mislim, da bi morali lastniki spletnih mest nekako razmisliti o povezavi med številom zaznamkov in programom nagrajevanja, če želijo povečati to posebno kategorijo člankov tukaj na Habréju.
Nekaj podobnega. Upam, da je bilo informativno.
Seznam člankov se je izkazal za dolgega, no, verjetno je tako najboljše. Prijetno branje vsem.