Habrastatistics: cum trăiește Habr fără geektimes

Hei Habr.

Acest articol este o continuare logică a ratingului Cele mai bune articole Habr pentru 2018. Și, deși anul nu s-a încheiat încă, după cum știți, vara au avut loc modificări ale regulilor, în consecință, a devenit interesant să vedem dacă acest lucru a afectat ceva.

Habrastatistics: cum trăiește Habr fără geektimes

Pe lângă statisticile reale, va fi furnizată o evaluare actualizată a articolelor, precum și un cod sursă pentru cei interesați de modul în care funcționează.

Pentru cei care sunt interesați de ceea ce s-a întâmplat, continuarea este sub tăietură. Pot căuta și cei care sunt interesați de o analiză mai detaliată a secțiunilor site-ului următoarea parte.

Datele brute

Acest rating este neoficial și nu am nicio informație privilegiată. După cum puteți vedea cu ușurință uitându-vă la bara de adrese a browserului dvs., toate articolele de pe Habré au numerotare continuă. Atunci este o chestiune de tehnică, pur și simplu citim toate articolele la rând în buclă (într-un fir și cu pauze, pentru a nu încărca serverul). Valorile însele au fost obținute printr-un parser simplu în Python (sursele sunt disponibile aici) și salvat într-un fișier csv ceva de genul acesta:

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

prelucrare

Pentru parsare vom folosi Python, Pandas și Matplotlib. Cei care nu sunt interesați de statistici pot sări peste această parte și să meargă direct la articole.

Mai întâi trebuie să încărcați setul de date în memorie și să selectați datele pentru anul dorit.

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)

Se dovedește că anul acesta (deși nu este încă terminat) la momentul scrierii, au fost publicate 12715 articole. Pentru comparație, pentru întregul 2018 - 15904. În general, o mulțime - este vorba de aproximativ 43 de articole pe zi (și aceasta este doar cu o evaluare pozitivă; câte articole totale sunt descărcate care au devenit negative sau au fost șterse, se poate doar ghici sau estimare aproximativă din decalajele dintre identificatori).

Să selectăm câmpurile necesare din setul de date. Ca măsurători vom folosi numărul de vizualizări, comentarii, valori de evaluare și numărul de marcaje.

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

Acum datele au fost adăugate la setul de date și le putem folosi. Să grupăm datele pe zi și să luăm valorile medii.

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

Acum, partea interesantă este că ne putem uita la grafice.

Să ne uităm la numărul de publicații despre Habré în 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()

Rezultatul este interesant. După cum puteți vedea, Habr a fost un mic „cârnat” pe tot parcursul anului. Nu știu motivul.

Habrastatistics: cum trăiește Habr fără geektimes

Pentru comparație, 2018 arată puțin mai lin:

Habrastatistics: cum trăiește Habr fără geektimes

În general, nu am observat nicio scădere drastică a numărului de articole publicate în 2019 pe grafic. Mai mult, dimpotrivă, pare să fi crescut chiar ușor din vară.

Dar următoarele două grafice mă deprimă puțin mai mult.

Numărul mediu de vizionări per articol:

Habrastatistics: cum trăiește Habr fără geektimes

Evaluare medie pe articol:

Habrastatistics: cum trăiește Habr fără geektimes

După cum puteți vedea, numărul mediu de vizionări scade ușor pe parcursul anului. Acest lucru se poate explica prin faptul că articolele noi nu au fost încă indexate de motoarele de căutare și nu sunt găsite atât de des. Dar scăderea ratingului mediu pe articol este mai de neînțeles. Sentimentul este că cititorii fie pur și simplu nu au timp să se uite prin atâtea articole, fie nu acordă atenție evaluărilor. Din punctul de vedere al programului de recompensare a autorului, această tendință este foarte neplăcută.

Apropo, acest lucru nu s-a întâmplat în 2018, iar programul este mai mult sau mai puțin uniform.

Habrastatistics: cum trăiește Habr fără geektimes

În general, proprietarii de resurse au la ce să se gândească.

Dar să nu vorbim despre lucruri triste. În general, putem spune că Habr a „supraviețuit” schimbărilor de vară cu succes, iar numărul de articole de pe site nu a scăzut.

evaluare

Acum, de fapt, ratingul. Felicitări celor care s-au implicat. Permiteți-mi să vă reamintesc încă o dată că ratingul este neoficial, poate am omis ceva, iar dacă un articol ar trebui să fie aici, dar nu este, scrieți, îl voi adăuga manual. Ca rating, folosesc valori calculate, care cred că s-au dovedit a fi destul de interesante.

Top articole după numărul de vizualizări

Cele mai bune articole în funcție de raportul dintre evaluare și vizionări

Articole de top după raportul comentarii/vizionări

Top cele mai controversate articole

Top articole după rating

Top articole după numărul de marcaje

Top după raportul dintre marcaje și vizualizări

Top articole după numărul de comentarii

Și în sfârșit, ultimul Antitop după numărul de antipatii

Uf. Mai am câteva selecții interesante, dar nu-i voi plictisi pe cititori.

Concluzie

Când am construit ratingul, am acordat atenție la două puncte care mi s-au părut interesante.

În primul rând, 60% din top sunt articole din genul „geektimes”. Dacă vor fi mai puțini anul viitor și cum va arăta Habr fără articole despre bere, spațiu, medicină etc., nu știu. Cu siguranță, cititorii vor pierde ceva. Să vedem.

În al doilea rând, marcajele de top s-au dovedit a fi de o calitate neașteptat de înaltă. Acest lucru este de înțeles din punct de vedere psihologic, cititorii pot să nu acorde atenție ratingului, dar dacă articolul este necesar, apoi va fi adăugat la marcajele dvs. Și aici este tocmai cea mai mare concentrație de articole utile și serioase. Cred că proprietarii site-ului ar trebui să se gândească cumva la legătura dintre numărul de marcaje și programul de recompense dacă doresc să crească această categorie specială de articole aici pe Habré.

Ceva de genul. Sper ca a fost informativ.

Lista de articole s-a dovedit a fi lungă, ei bine, probabil că este în bine. Lectură fericită tuturor.

Sursa: www.habr.com

Adauga un comentariu