Habrastatistieken: hoe Habr leeft zonder geektimes

Hé Habr.

Dit artikel is een logisch vervolg op de beoordeling De beste Habr-artikelen voor 2018. En hoewel het jaar nog niet voorbij is, zoals je weet, waren er in de zomer veranderingen in de regels, dus het werd interessant om te zien of dit iets beïnvloedde.

Habrastatistieken: hoe Habr leeft zonder geektimes

Naast de feitelijke statistieken zal er een bijgewerkte beoordeling van artikelen worden gegeven, evenals enige broncode voor degenen die geïnteresseerd zijn in hoe het werkt.

Voor degenen die geïnteresseerd zijn in wat er is gebeurd, het vervolg ligt onder de noemer. Degenen die geïnteresseerd zijn in een meer gedetailleerde analyse van delen van de site kunnen ook kijken volgende deel.

Initiële gegevens

Deze beoordeling is niet officieel en ik beschik niet over voorkennis. Zoals u gemakkelijk kunt zien door naar de adresbalk van uw browser te kijken, zijn alle artikelen op Habré doorlopende nummering. Dan is het een kwestie van techniek, we lezen simpelweg alle artikelen achter elkaar in een cyclus (in één thread en met pauzes, om de server niet te belasten). De waarden zelf zijn verkregen door een eenvoudige parser in Python (bronnen zijn beschikbaar hier) en opgeslagen in een csv-bestand, ongeveer zo:

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

Verwerking

Voor het parseren gebruiken we Python, Pandas en Matplotlib. Degenen die niet geïnteresseerd zijn in statistieken kunnen dit deel overslaan en direct naar de artikelen gaan.

Eerst moet u de dataset in het geheugen laden en gegevens voor het gewenste jaar selecteren.

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)

Het blijkt dat er dit jaar (hoewel het nog niet klaar is) op het moment van schrijven 12715 artikelen zijn gepubliceerd. Ter vergelijking: voor heel 2018 - 15904. Over het algemeen veel - dit zijn ongeveer 43 artikelen per dag (en dit is alleen met een positieve beoordeling; hoeveel artikelen er in totaal zijn gedownload die negatief zijn geworden of zijn verwijderd, kan alleen raden of een ruwe schatting maken op basis van de gaten tussen de identificatiegegevens).

Laten we de benodigde velden uit de dataset selecteren. Als statistieken gebruiken we het aantal weergaven, reacties, beoordelingswaarden en het aantal bladwijzers.

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

Nu zijn de gegevens aan de dataset toegevoegd en kunnen we deze gebruiken. Laten we de gegevens per dag groeperen en de gemiddelde waarden nemen.

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

Het interessante is dat we naar de grafieken kunnen kijken.

Laten we eens kijken naar het aantal publicaties over Habré in 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()

Het resultaat is interessant. Zoals je kunt zien, is Habr het hele jaar door een beetje “worst” geweest. Ik weet de reden niet.

Habrastatistieken: hoe Habr leeft zonder geektimes

Ter vergelijking: 2018 ziet er iets soepeler uit:

Habrastatistieken: hoe Habr leeft zonder geektimes

Over het algemeen zag ik geen drastische daling van het aantal gepubliceerde artikelen in 2019 in de grafiek. Bovendien lijkt het integendeel zelfs licht te zijn gestegen sinds de zomer.

Maar de volgende twee grafieken maken mij iets meer deprimerend.

Gemiddeld aantal views per artikel:

Habrastatistieken: hoe Habr leeft zonder geektimes

Gemiddelde beoordeling per artikel:

Habrastatistieken: hoe Habr leeft zonder geektimes

Zoals je kunt zien, daalt het gemiddelde aantal views gedurende het jaar lichtjes. Dit kan worden verklaard door het feit dat nieuwe artikelen nog niet door zoekmachines zijn geïndexeerd en niet zo vaak worden gevonden. Maar de daling van de gemiddelde waardering per artikel is onbegrijpelijker. Het gevoel is dat lezers simpelweg geen tijd hebben om zoveel artikelen te bekijken of geen aandacht besteden aan de beoordelingen. Vanuit het oogpunt van het beloningsprogramma voor auteurs is deze trend zeer onaangenaam.

Dit gebeurde overigens niet in 2018 en het schema is min of meer gelijk.

Habrastatistieken: hoe Habr leeft zonder geektimes

Over het algemeen hebben eigenaren van hulpbronnen iets om over na te denken.

Maar laten we het niet over trieste dingen hebben. Over het algemeen kunnen we zeggen dat Habr de zomerveranderingen behoorlijk succesvol heeft “overleefd”, en dat het aantal artikelen op de site niet is afgenomen.

Waardering

Nu eigenlijk de beoordeling. Proficiat aan degenen die erin zijn gestapt. Laat me je er nogmaals aan herinneren dat de beoordeling niet officieel is, misschien heb ik iets gemist, en als een artikel hier zeker zou moeten staan, maar dat is het niet, schrijf dan, ik zal het handmatig toevoegen. Als beoordeling gebruik ik berekende statistieken, waarvan ik denk dat ze behoorlijk interessant zijn gebleken.

Topartikelen op basis van aantal weergaven

Topartikelen op basis van beoordeling en weergaveratio

Topartikelen op basis van reacties en weergaven

Top meest controversiële artikelen

Topartikelen op beoordeling

Topartikelen op basis van aantal bladwijzers

Top op basis van de verhouding tussen bladwijzers en weergaven

Topartikelen op basis van aantal reacties

En tot slot de laatste Antitop op basis van het aantal antipathieën

Uhm. Ik heb nog een paar interessante selecties, maar ik zal de lezers niet vervelen.

Conclusie

Bij het samenstellen van de beoordeling heb ik aandacht besteed aan twee punten die interessant leken.

Ten eerste bestaat 60% van de top uit artikelen uit het genre ‘geektimes’. Of het er volgend jaar minder zullen zijn, en hoe Habr eruit zal zien zonder artikelen over bier, ruimtevaart, medicijnen etc. weet ik niet. Zeker, lezers zullen iets verliezen. Laten we eens kijken.

Ten tweede bleken de topbladwijzers van onverwacht hoge kwaliteit. Dit is psychologisch begrijpelijk; lezers letten misschien niet op de beoordeling, maar op het artikel is nodig, waarna het aan uw bladwijzers wordt toegevoegd. En hier is precies de grootste concentratie aan nuttige en serieuze artikelen. Ik denk dat de site-eigenaren op de een of andere manier moeten nadenken over het verband tussen het aantal bladwijzers en het beloningsprogramma als ze deze specifieke categorie artikelen hier op Habré willen vergroten.

Iets zoals dit. Ik hoop dat het informatief was.

De lijst met artikelen bleek lang, maar dat is waarschijnlijk ten goede. Veel leesplezier allemaal.

Bron: www.habr.com

Voeg een reactie