Habrastatistiikka: kuinka Habr elää ilman geektimes

Hei Habr.

Tämä artikkeli on looginen jatko luokitukselle Vuoden 2018 parhaat Habr-artikkelit. Ja vaikka vuosi ei ole vielä ohi, niin tiedätte, kesällä sääntöihin tuli muutoksia, joten oli mielenkiintoista nähdä, vaikuttaako tämä mihinkään.

Habrastatistiikka: kuinka Habr elää ilman geektimes

Varsinaisten tilastojen lisäksi artikkeleista tarjotaan päivitetty luokitus sekä lähdekoodia niille, jotka ovat kiinnostuneita sen toiminnasta.

Tapahtuneesta kiinnostuneille jatkoa on luvassa. Ne, jotka ovat kiinnostuneita sivuston osien yksityiskohtaisemmasta analyysistä, voivat myös katsoa seuraava osa.

Raakatiedot

Tämä luokitus on epävirallinen, eikä minulla ole sisäpiiritietoa. Kuten näet helposti selaimesi osoitepalkista, kaikissa Habrén artikkelissa on jatkuva numerointi. Sitten se on tekniikan kysymys, luemme yksinkertaisesti kaikki artikkelit peräkkäin (yhdessä säikeessä ja tauoilla, jotta palvelin ei lataudu). Arvot on saatu yksinkertaisella Python-jäsentimillä (lähteet ovat saatavilla täällä) ja tallennettu csv-tiedostoon jotain tällaista:

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

Käsittely

Jäsentämiseen käytämme Python, Pandas ja Matplotlib. Ne, jotka eivät ole kiinnostuneita tilastoista, voivat ohittaa tämän osan ja siirtyä suoraan artikkeleihin.

Ensin sinun on ladattava tietojoukko muistiin ja valittava haluamasi vuoden tiedot.

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)

Osoittautuu, että tänä vuonna (vaikka se ei ole vielä valmis) tätä kirjoitettaessa on julkaistu 12715 2018 artikkelia. Vertailun vuoksi koko vuodelle 15904 - 43. Yleisesti ottaen paljon - tämä on noin XNUMX artikkelia päivässä (ja tämä on vain positiivisella arvosanalla; kuinka monta negatiivista tai poistettua artikkelia yhteensä ladataan, voidaan vain arvailla tai karkeasti arvioiden tunnisteiden välisten aukkojen perusteella).

Valitaan tietojoukosta tarvittavat kentät. Mittareina käytämme näyttökertojen, kommenttien, luokitusarvojen ja kirjanmerkkien määrää.

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

Nyt tiedot on lisätty tietojoukkoon ja voimme käyttää niitä. Ryhmitetään tiedot päiväkohtaisesti ja otetaan keskiarvot.

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

Nyt mielenkiintoinen osa on, että voimme katsoa kaavioita.

Katsotaanpa Habrén julkaisujen määrää vuonna 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()

Tulos on mielenkiintoinen. Kuten näette, Habr on ollut pieni "makkara" koko vuoden. En tiedä syytä.

Habrastatistiikka: kuinka Habr elää ilman geektimes

Vertailun vuoksi 2018 näyttää hieman tasaisemmalta:

Habrastatistiikka: kuinka Habr elää ilman geektimes

Yleisesti ottaen en nähnyt kaaviossa jyrkkää pudotusta julkaistujen artikkeleiden määrässä vuonna 2019. Lisäksi päinvastoin, se näyttää jopa hieman lisääntyneen kesästä lähtien.

Mutta kaksi seuraavaa kaaviota masentaa minua hieman enemmän.

Keskimääräinen näyttökerrat artikkelia kohti:

Habrastatistiikka: kuinka Habr elää ilman geektimes

Keskimääräinen arvio artikkelia kohti:

Habrastatistiikka: kuinka Habr elää ilman geektimes

Kuten näet, katselukertojen keskimääräinen määrä laskee hieman vuoden aikana. Tämä selittyy sillä, että hakukoneet eivät ole vielä indeksoineet uusia artikkeleita, eikä niitä löydy niin usein. Mutta artikkelikohtaisen keskiarvosanan lasku on käsittämättömämpää. Tuntuu siltä, ​​että lukijoilla ei yksinkertaisesti ole aikaa käydä läpi niin monia artikkeleita tai he eivät kiinnitä huomiota luokitukseen. Tekijän palkitsemisohjelman näkökulmasta tämä suuntaus on erittäin epämiellyttävä.

Muuten, tämä ei tapahtunut vuonna 2018, ja aikataulu on enemmän tai vähemmän tasainen.

Habrastatistiikka: kuinka Habr elää ilman geektimes

Yleensä resurssien omistajilla on ajattelemisen aihetta.

Mutta älkäämme puhuko surullisista asioista. Yleisesti voidaan sanoa, että Habr "selvi" kesän muutoksista melko onnistuneesti, eikä sivuston artikkelien määrä vähentynyt.

Luokitus

Nyt itse asiassa arvosana. Onnittelut mukana olleille. Muistutan vielä kerran, että luokitus on epävirallinen, ehkä missasin jotain, ja jos jonkin artikkelin pitäisi ehdottomasti olla täällä, mutta se ei ole, kirjoita, lisään sen manuaalisesti. Luokituksena käytän laskettuja mittareita, jotka mielestäni osoittautuivat varsin mielenkiintoisiksi.

Suosituimmat artikkelit katselukertojen mukaan

Suosituimmat artikkelit arvioiden ja katselukertojen suhteen

Suosituimmat artikkelit kommenttien ja katselukertojen suhteen mukaan

Parhaat kiistanalaisimmat artikkelit

Suosituimmat artikkelit luokituksen mukaan

Suosituimmat artikkelit kirjanmerkkien lukumäärän mukaan

Ylin kirjanmerkkien ja näyttökertojen suhteen mukaan

Suosituimmat artikkelit kommenttien lukumäärän mukaan

Ja lopuksi viimeinen Antitop ei-tykkäysten lukumäärän mukaan

Oho. Minulla on muutama kiinnostavampi valikoima, mutta en kyllästy lukijoita.

Johtopäätös

Luokitusta tehdessäni kiinnitin huomiota kahteen mielenkiintoiselta vaikuttavaan seikkaan.

Ensinnäkin 60 % ylhäältä löytyy "geektimes"-genren artikkeleita. Onko niitä vähemmän ensi vuonna ja miltä Habr näyttää ilman artikkeleita oluesta, avaruudesta, lääketieteestä jne., en tiedä. Lukijat menettävät varmasti jotain. Katsotaan.

Toiseksi huippukirjanmerkit osoittautuivat odottamattoman laadukkaiksi. Tämä on psykologisesti ymmärrettävää; lukijat eivät ehkä kiinnitä huomiota arvosanaan, mutta jos artikkeli tarvitaan, se lisätään kirjanmerkkeihisi. Ja tässä on juuri suurin pitoisuus hyödyllisiä ja vakavia artikkeleita. Mielestäni sivuston omistajien pitäisi jotenkin miettiä kirjanmerkkien määrän ja palkkio-ohjelman välistä yhteyttä, jos he haluavat lisätä tämän artikkelin luokkaa täällä Habressa.

Jotain tällaista. Toivottavasti se oli informatiivinen.

Artikkelilista osoittautui pitkäksi, no, se on luultavasti parempaan suuntaan. Hyvää lukemista kaikille.

Lähde: will.com

Lisää kommentti