Habrastatistikk: hvordan Habr lever uten geektimes

Hei Habr.

Denne artikkelen er en logisk fortsettelse av vurderingen De beste Habr-artiklene for 2018. Og selv om året ikke er over enda, som du vet, på sommeren ble det endringer i reglene, og derfor ble det interessant å se om dette påvirket noe.

Habrastatistikk: hvordan Habr lever uten geektimes

I tillegg til selve statistikken vil det bli gitt en oppdatert vurdering av artikler, samt litt kildekode for de som er interessert i hvordan det fungerer.

For de som er interessert i hva som skjedde, er fortsettelsen under kuttet. De som er interessert i en mer detaljert analyse av deler av nettstedet kan også se neste del.

Innledende data

Denne vurderingen er uoffisiell, og jeg har ingen innsideinformasjon. Som du enkelt kan se ved å se på adresselinjen i nettleseren din, har alle artikler på Habré kontinuerlig nummerering. Da er det et spørsmål om teknikk, vi leser ganske enkelt alle artiklene på rad i en syklus (i en tråd og med pauser, for ikke å laste serveren). Selve verdiene ble oppnådd av en enkel parser i Python (kilder er tilgjengelige her) og lagret i en csv-fil noe sånt som dette:

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

Processing

For å analysere vil vi bruke Python, Pandas og Matplotlib. De som ikke er interessert i statistikk kan hoppe over denne delen og gå rett til artiklene.

Først må du laste inn datasettet i minnet og velge data for ønsket år.

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)

Det viser seg at i år (selv om det ennå ikke er ferdig) i skrivende stund er det publisert 12715 artikler. Til sammenligning, for hele 2018 - 15904. Generelt mye - dette er omtrent 43 artikler per dag (og dette er kun med en positiv vurdering; hvor mange totalt artikler som ble lastet ned som ble negative eller ble slettet, kan man bare gjette eller grovt estimat fra gapene mellom identifikatorer).

La oss velge de nødvendige feltene fra datasettet. Som beregninger vil vi bruke antall visninger, kommentarer, vurderingsverdier og antall bokmerker.

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

Nå er dataene lagt til datasettet og vi kan bruke dem. La oss gruppere dataene etter dag og ta gjennomsnittsverdiene.

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

Nå er den interessante delen at vi kan se på grafene.

La oss se på antall publikasjoner på Habré i 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()

Resultatet er interessant. Som du kan se, har Habr vært en liten "pølse" gjennom hele året. Jeg vet ikke grunnen.

Habrastatistikk: hvordan Habr lever uten geektimes

Til sammenligning ser 2018 litt jevnere ut:

Habrastatistikk: hvordan Habr lever uten geektimes

Generelt så jeg ingen drastisk nedgang i antall publiserte artikler i 2019 på grafen. Dessuten ser det tvert imot ut til å ha økt litt siden sommeren.

Men de to neste grafene demper meg litt mer.

Gjennomsnittlig antall visninger per artikkel:

Habrastatistikk: hvordan Habr lever uten geektimes

Gjennomsnittlig vurdering per artikkel:

Habrastatistikk: hvordan Habr lever uten geektimes

Som du ser, synker gjennomsnittlig antall visninger noe gjennom året. Dette kan forklares med at nye artikler ennå ikke er indeksert av søkemotorer, og de blir ikke funnet så ofte. Men nedgangen i gjennomsnittlig vurdering per artikkel er mer uforståelig. Følelsen er at leserne enten rett og slett ikke har tid til å se gjennom så mange artikler eller ikke tar hensyn til vurderingene. Fra synspunktet til forfatterbelønningsprogrammet er denne trenden veldig ubehagelig.

Dette skjedde forresten ikke i 2018, og timeplanen er mer eller mindre jevn.

Habrastatistikk: hvordan Habr lever uten geektimes

Generelt har ressurseiere noe å tenke på.

Men la oss ikke snakke om triste ting. Generelt kan vi si at Habr "overlevde" sommerendringene ganske vellykket, og antall artikler på nettstedet gikk ikke ned.

Rangering

Nå, faktisk, vurderingen. Gratulerer til de som kom inn i det. La meg minne deg nok en gang om at vurderingen er uoffisiell, kanskje jeg gikk glipp av noe, og hvis en artikkel definitivt burde være her, men det er det ikke, skriv, så legger jeg den til manuelt. Som vurdering bruker jeg beregnede beregninger, som jeg synes viste seg å være ganske interessant.

Toppartikler etter antall visninger

Toppartikler etter rangering til visningsforhold

Toppartikler etter forhold mellom kommentarer og visninger

Topp mest kontroversielle artikler

Topp artikler etter vurdering

Toppartikler etter antall bokmerker

Topp etter forholdet mellom bokmerker og visninger

Toppartikler etter antall kommentarer

Og til slutt, den siste Antitop etter antall misliker

Uff. Jeg har noen flere interessante utvalg, men jeg skal ikke kjede leserne.

Konklusjon

Da jeg konstruerte vurderingen, tok jeg hensyn til to punkter som virket interessante.

For det første er 60 % av toppen artikler av «geektimes»-sjangeren. Om det blir færre av dem neste år, og hvordan Habr vil se ut uten artikler om øl, rom, medisin osv., vet jeg ikke. Leserne vil definitivt miste noe. La oss se.

For det andre viste de beste bokmerkene seg å være av uventet høy kvalitet. Dette er psykologisk forståelig, lesere kan ikke ta hensyn til vurderingen, men hvis artikkelen er nødvendig, så legges den til i bokmerkene dine. Og her er nettopp den største konsentrasjonen av nyttige og seriøse artikler. Jeg synes nettstedeierne på en eller annen måte bør tenke gjennom sammenhengen mellom antall bokmerker og belønningsprogrammet hvis de ønsker å øke denne spesielle kategorien artikler her på Habré.

Noe sånt som dette. Jeg håper det var informativt.

Listen over artikler viste seg å være lang, vel, det er sannsynligvis til det bedre. God lesing alle sammen.

Kilde: www.habr.com

Legg til en kommentar