Habrastatistics: hoe Habr libbet sûnder geektimes

Hoi Habr.

Dit artikel is in logyske fuortsetting fan 'e beoardieling De bêste Habr-artikels foar 2018. En hoewol it jier noch net foarby is, lykas jim witte, yn de simmer wiene der feroaringen yn de regels, dus waard it nijsgjirrich om te sjen oft dit wat beynfloede.

Habrastatistics: hoe Habr libbet sûnder geektimes

Neist de eigentlike statistiken sil in bywurke wurdearring fan artikels wurde levere, lykas wat boarnekoade foar dyjingen dy't ynteressearre binne yn hoe't it wurket.

Foar dyjingen dy't ynteressearre binne yn wat der bard is, is it ferfolch ûnder de besuniging. Dejingen dy't ynteressearre binne yn in mear detaillearre analyze fan seksjes fan 'e side kinne ek sjen folgjende diel.

Roald gegevens

Dizze wurdearring is net-offisjeel, en ik haw gjin ynsider ynformaasje. Sa't jo maklik kinne sjen troch te sjen nei de adresbalke fan jo browser, hawwe alle artikels op Habré trochgeande nûmering. Dan is it in kwestje fan technyk, wy lêze gewoan alle artikels op in rige yn in syklus (yn ien tried en mei pauzes, om de tsjinner net te laden). De wearden sels waarden krigen troch in ienfâldige parser yn Python (boarnen binne beskikber hjir) en bewarre yn in csv-bestân soksawat as dit:

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

Ferwurkjen

Foar it parsearjen sille wy Python, Pandas en Matplotlib brûke. Dejingen dy't net ynteressearre binne yn statistyk kinne dit diel oerslaan en direkt nei de artikels gean.

Earst moatte jo de dataset yn it ûnthâld laden en gegevens selektearje foar it winske jier.

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)

It docht bliken dat dit jier (hoewol't it noch net klear is) op it momint fan skriuwen, 12715 artikels publisearre binne. Foar fergeliking, foar de hiele 2018 - 15904. Yn 't algemien, in protte - dit giet oer 43 artikels per dei (en dit is allinich mei in positive beoardieling; hoefolle totale artikels wurde downloade dy't negatyf giene of wiske binne, kin men allinich riede of rûchwei skatting út de gatten tusken identifiers).

Litte wy de nedige fjilden selektearje út de dataset. As metriken sille wy it oantal werjeften, opmerkings, wurdearringswearden en it oantal blêdwizers brûke.

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

No binne de gegevens tafoege oan de dataset en wy kinne it brûke. Litte wy de gegevens per dei groepearje en de gemiddelde wearden nimme.

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

No is it nijsgjirrige diel dat wy nei de grafiken kinne sjen.

Litte wy sjen nei it oantal publikaasjes oer Habré yn 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()

It resultaat is nijsgjirrich. Sa't jo sjen kinne, hat Habr it hiele jier in bytsje "woarst" west. Ik wit de reden net.

Habrastatistics: hoe Habr libbet sûnder geektimes

Foar fergeliking sjocht 2018 in bytsje soepeler:

Habrastatistics: hoe Habr libbet sûnder geektimes

Yn 't algemien seach ik gjin drastyske fermindering fan it oantal publisearre artikels yn 2019 op' e grafyk. Boppedat liket it krekt oarsom sûnt de simmer sels wat tanommen te wêzen.

Mar de folgjende twa grafiken depressearje my wat mear.

Gemiddelde oantal werjeften per artikel:

Habrastatistics: hoe Habr libbet sûnder geektimes

Gemiddelde wurdearring per artikel:

Habrastatistics: hoe Habr libbet sûnder geektimes

Sa't jo sjen kinne, nimt it gemiddelde oantal werjeften it hiele jier in bytsje ôf. Dit kin ferklearre wurde troch it feit dat nije artikels noch net yndeksearre binne troch sykmasines, en se wurde net sa faak fûn. Mar de delgong yn gemiddelde wurdearring per artikel is ûnbegrypliker. It gefoel is dat lêzers òf gewoan gjin tiid hawwe om safolle artikels troch te sjen òf net omtinken jaan oan de wurdearrings. Ut it eachpunt fan it auteursbeleanningsprogramma is dizze trend heul onaangenaam.

Trouwens, dit barde net yn 2018, en it skema is min of mear gelyk.

Habrastatistics: hoe Habr libbet sûnder geektimes

Yn 't algemien hawwe eigeners fan boarnen wat te tinken.

Mar litte wy it net oer tryste dingen ha. Yn 't algemien kinne wy ​​​​sizze dat Habr de simmerferoarings frij suksesfol "oerlibbe" en it oantal artikels op' e side net fermindere.

Rating

No, eins, de wurdearring. Lokwinsken foar dejingen dy't deryn kamen. Lit my jo nochris herinnerje dat de beoardieling net-offisjeel is, miskien haw ik wat miste, en as ien of oar artikel hjir perfoarst moat wêze, mar it is net, skriuw, ik sil it manuell tafoegje. As beoardieling brûke ik berekkene metriken, dy't neffens my frij nijsgjirrich bliken te wêzen.

Top artikels troch oantal views

Top artikels troch rating to views ratio

Top artikels troch opmerkings nei werjefte ratio

Top meast kontroversjele artikels

Top artikels troch wurdearring

Top artikels troch oantal blêdwizers

Top troch ferhâlding fan blêdwizers nei werjeften

Top artikels troch oantal opmerkingen

En as lêste, de lêste Antitop troch oantal dislikes

Ugh. Ik haw in pear mear nijsgjirrige seleksjes, mar ik sil net ferfele de lêzers.

konklúzje

By it konstruearjen fan de wurdearring haw ik omtinken jûn oan twa punten dy't ynteressant liken.

As earste binne 60% fan 'e top artikels fan it sjenre "geektimes". Oft it der takom jier minder binne, en hoe't Habr der útsjen sil sûnder artikels oer bier, romte, medisinen, ensfh., dat wit ik net. Fansels sille lêzers wat ferlieze. Litte wy sjen.

Twads, de top blêdwizers bliken te wêzen fan ûnferwachte hege kwaliteit. Dit is psychologysk begryplik; lêzers meie net omtinken jaan oan de wurdearring, mar as it artikel nedich, dan wurdt it tafoege oan jo blêdwizers. En hjir is krekt de grutste konsintraasje fan nuttige en serieuze artikels. Ik tink dat de side-eigners op ien of oare manier de ferbining tusken it oantal blêdwizers en it beleanningsprogramma moatte trochtinke as se dizze bepaalde kategory artikels hjir op Habré ferheegje wolle.

Soksawat. Ik hoopje dat it wie ynformatyf.

De list mei artikels blykte lang te wêzen, no, it is wierskynlik foar it better. Lokkich lêzen elkenien.

Boarne: www.habr.com

Add a comment