Habrastatistik: Wie Habr ohne Geektimes lebt

Hallo Habr.

Dieser Artikel ist eine logische Fortsetzung der Bewertung Die besten Habr-Artikel für 2018. Und obwohl das Jahr, wie Sie wissen, noch nicht vorbei ist, gab es im Sommer Änderungen in den Regeln. Dementsprechend wurde es interessant zu sehen, ob sich dies auf etwas auswirkte.

Habrastatistik: Wie Habr ohne Geektimes lebt

Zusätzlich zu den eigentlichen Statistiken wird eine aktualisierte Bewertung der Artikel sowie etwas Quellcode für diejenigen bereitgestellt, die sich für die Funktionsweise interessieren.

Für diejenigen, die sich für das Geschehene interessieren: Die Fortsetzung ist unter Verschluss. Wer an einer detaillierteren Analyse der Abschnitte der Website interessiert ist, kann sich ebenfalls umschauen nächster Teil.

Ausgangsdaten

Diese Bewertung ist inoffiziell und mir liegen keine Insiderinformationen vor. Wie Sie anhand der Adressleiste Ihres Browsers leicht erkennen können, sind alle Artikel auf Habré fortlaufend nummeriert. Dann ist es eine Frage der Technik, wir lesen einfach alle Artikel hintereinander im Zyklus (in einem Thread und mit Pausen, um den Server nicht zu belasten). Die Werte selbst wurden durch einen einfachen Parser in Python ermittelt (Quellen sind verfügbar). hier) und in einer CSV-Datei gespeichert, etwa so:

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

Verarbeitung

Zum Parsen verwenden wir Python, Pandas und Matplotlib. Wer sich nicht für Statistiken interessiert, kann diesen Teil überspringen und direkt zu den Artikeln wechseln.

Zuerst müssen Sie den Datensatz in den Speicher laden und Daten für das gewünschte Jahr auswählen.

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)

Es stellt sich heraus, dass dieses Jahr (obwohl es noch nicht abgeschlossen ist) zum Zeitpunkt des Verfassens dieses Artikels 12715 Artikel veröffentlicht wurden. Zum Vergleich: für das gesamte Jahr 2018 - 15904. Im Allgemeinen sehr viel - das sind etwa 43 Artikel pro Tag (und das nur bei einer positiven Bewertung; wie viele Artikel insgesamt heruntergeladen wurden, die negativ ausfielen oder gelöscht wurden, kann man nur sagen anhand der Lücken zwischen den Bezeichnern erraten oder grob schätzen).

Wählen wir die erforderlichen Felder aus dem Datensatz aus. Als Messgrößen verwenden wir die Anzahl der Aufrufe, Kommentare, Bewertungswerte und die Anzahl der Lesezeichen.

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

Jetzt wurden die Daten zum Datensatz hinzugefügt und wir können sie verwenden. Lassen Sie uns die Daten nach Tagen gruppieren und die Durchschnittswerte ermitteln.

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

Das Interessante daran ist nun, dass wir uns die Grafiken ansehen können.

Schauen wir uns die Anzahl der Veröffentlichungen zu Habré im Jahr 2019 an.

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

Das Ergebnis ist interessant. Wie Sie sehen, war Habr das ganze Jahr über eine kleine „Wurst“. Ich kenne den Grund nicht.

Habrastatistik: Wie Habr ohne Geektimes lebt

Zum Vergleich: 2018 sieht etwas ruhiger aus:

Habrastatistik: Wie Habr ohne Geektimes lebt

Im Allgemeinen konnte ich in der Grafik keinen drastischen Rückgang der Anzahl veröffentlichter Artikel im Jahr 2019 erkennen. Im Gegenteil scheint sie seit dem Sommer sogar leicht gestiegen zu sein.

Aber die nächsten beiden Grafiken deprimieren mich etwas mehr.

Durchschnittliche Anzahl Aufrufe pro Artikel:

Habrastatistik: Wie Habr ohne Geektimes lebt

Durchschnittliche Bewertung pro Artikel:

Habrastatistik: Wie Habr ohne Geektimes lebt

Wie Sie sehen, nimmt die durchschnittliche Anzahl der Aufrufe im Laufe des Jahres leicht ab. Dies lässt sich dadurch erklären, dass neue Artikel noch nicht von Suchmaschinen indexiert wurden und nicht so häufig gefunden werden. Unverständlicher ist jedoch der Rückgang der durchschnittlichen Bewertung pro Artikel. Man hat das Gefühl, dass die Leser entweder einfach keine Zeit haben, so viele Artikel durchzusehen, oder dass sie nicht auf die Bewertungen achten. Aus Sicht des Autorenprämienprogramms ist dieser Trend sehr unerfreulich.

Dies ist im Jahr 2018 übrigens nicht geschehen und der Zeitplan ist mehr oder weniger ausgeglichen.

Habrastatistik: Wie Habr ohne Geektimes lebt

Im Allgemeinen müssen Ressourceneigentümer über etwas nachdenken.

Aber lasst uns nicht über traurige Dinge reden. Im Allgemeinen können wir sagen, dass Habr die Sommerveränderungen recht erfolgreich „überstanden“ hat und die Anzahl der Artikel auf der Website nicht zurückgegangen ist.

Bewertung

Nun eigentlich zur Bewertung. Herzlichen Glückwunsch an diejenigen, die sich darauf eingelassen haben. Ich möchte Sie noch einmal daran erinnern, dass die Bewertung inoffiziell ist. Vielleicht habe ich etwas übersehen. Wenn ein Artikel unbedingt hier sein sollte, dies aber nicht der Fall ist, schreiben Sie, ich füge ihn manuell hinzu. Als Bewertung verwende ich berechnete Kennzahlen, was sich meiner Meinung nach als recht interessant herausgestellt hat.

Top-Artikel nach Anzahl der Aufrufe

Top-Artikel nach Verhältnis von Bewertung zu Aufrufen

Top-Artikel nach Verhältnis von Kommentaren zu Aufrufen

Die umstrittensten Artikel

Top-Artikel nach Bewertung

Top-Artikel nach Anzahl der Lesezeichen

Oben im Verhältnis von Lesezeichen zu Aufrufen

Top-Artikel nach Anzahl der Kommentare

Und schließlich das Letzte Antitop nach Anzahl der Abneigungen

Pfui. Ich habe noch ein paar weitere interessante Auswahlen, aber ich werde die Leser nicht langweilen.

Abschluss

Bei der Erstellung der Bewertung habe ich auf zwei Punkte geachtet, die mir interessant erschienen.

Erstens sind 60 % der Top-Artikel Artikel aus dem Genre „Geektimes“. Ob es nächstes Jahr weniger davon sein wird und wie Habr ohne Artikel über Bier, Weltraum, Medizin usw. aussehen wird, weiß ich nicht. Auf jeden Fall werden die Leser etwas verlieren. Mal sehen.

Zweitens erwiesen sich die Top-Lesezeichen als unerwartet hochwertig. Das ist psychologisch verständlich; Leser achten möglicherweise nicht auf die Bewertung, sondern auf den Artikel wird benötigt, dann wird es zu Ihren Lesezeichen hinzugefügt. Und genau hier ist die größte Konzentration an nützlichen und seriösen Artikeln. Ich denke, die Websitebesitzer sollten den Zusammenhang zwischen der Anzahl der Lesezeichen und dem Prämienprogramm irgendwie durchdenken, wenn sie diese spezielle Artikelkategorie hier auf Habré erweitern möchten.

Irgendwie so. Ich hoffe, es war informativ.

Die Liste der Artikel erwies sich als lang, nun ja, das ist wahrscheinlich zum Besseren. Viel Spaß beim Lesen an alle.

Source: habr.com

Kommentar hinzufügen