Habrastatisztika: hogyan él Habr geektimek nélkül

Szia Habr.

Ez a cikk az értékelés logikus folytatása A legjobb Habr cikkek 2018-ban. És bár még nincs vége az évnek, de tudniillik a nyáron változások történtek a szabályokban, ennek megfelelően érdekessé vált, hogy ez befolyásol-e valamit.

Habrastatisztika: hogyan él Habr geektimek nélkül

A tényleges statisztikák mellett a cikkek frissített értékelése, valamint néhány forráskód is elérhető lesz azok számára, akiket érdekel a működése.

Akit érdekelnek a történtek, annak a folytatás várat magára. Akit érdekel az oldal részeinek részletesebb elemzése, az is megnézheti következő rész.

Nyers adatok

Ez a minősítés nem hivatalos, és nincs bennfentes információm. Amint azt a böngésző címsorából könnyen láthatja, a Habréval kapcsolatos összes cikk folyamatos számozással rendelkezik. Akkor ez technika kérdése, egyszerűen egy ciklusban sorban olvassuk el az összes cikket (egy szálban és szünetekkel, hogy ne terheljük a szervert). Magukat az értékeket egy egyszerű értelmező Pythonban szereztük be (források elérhetők itt), és valami ilyesmit mentett el egy csv fájlba:

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

Feldolgozás

Az elemzéshez Python-t, Pandas-t és Matplotlib-et fogunk használni. Akit nem érdekelnek a statisztikák, az kihagyhatja ezt a részt, és egyenesen a cikkekre ugorhat.

Először be kell töltenie az adatkészletet a memóriába, és ki kell választania a kívánt év adatait.

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)

Kiderült, hogy ebben az évben (bár még nem fejeződött be) a cikk írásakor 12715 2018 cikk jelent meg. Összehasonlításképpen a teljes 15904-as évre vonatkozóan - 43. Általában sok - ez körülbelül napi XNUMX cikk (és ez csak pozitív értékeléssel; hány olyan cikket töltöttek le összesen, amely negatív lett vagy törölve lett, csak találgatni lehet vagy hozzávetőlegesen becsüljük meg az azonosítók közötti hézagokból).

Válasszuk ki a szükséges mezőket az adatkészletből. Mutatóként a megtekintések számát, a megjegyzéseket, az értékelési értékeket és a könyvjelzők számát fogjuk használni.

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

Most az adatokat hozzáadtuk az adatkészlethez, és már használhatjuk is. Csoportosítsuk az adatokat napok szerint, és vegyük az átlagértékeket.

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

Most az az érdekes, hogy megnézhetjük a grafikonokat.

Nézzük meg, hogy 2019-ben hány publikáció született a Habréról.

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

Az eredmény érdekes. Mint látható, Habr egész évben egy kis „kolbász” volt. Nem tudom az okát.

Habrastatisztika: hogyan él Habr geektimek nélkül

Összehasonlításképpen: 2018 egy kicsit simábbnak tűnik:

Habrastatisztika: hogyan él Habr geektimek nélkül

Általánosságban elmondható, hogy a grafikonon nem tapasztaltam drasztikus csökkenést a megjelent cikkek számában 2019-ben. Sőt, éppen ellenkezőleg, úgy tűnik, hogy a nyár óta kissé nőtt.

De a következő két grafikon egy kicsit jobban lehangol.

Átlagos megtekintések száma cikkenként:

Habrastatisztika: hogyan él Habr geektimek nélkül

Átlagos értékelés cikkenként:

Habrastatisztika: hogyan él Habr geektimek nélkül

Amint látható, az átlagos megtekintések száma enyhén csökken az év során. Ez azzal magyarázható, hogy az új cikkeket még nem indexelték a keresők, és nem is találják olyan gyakran. De érthetetlenebb a cikkenkénti átlagos értékelés csökkenése. Az az érzés, hogy az olvasóknak vagy egyszerűen nincs idejük annyi cikket átnézni, vagy nem figyelnek az értékelésekre. A szerzői jutalmazási program szempontjából ez a tendencia nagyon kellemetlen.

Ez egyébként 2018-ban nem történt meg, a menetrend pedig nagyjából egyenletes.

Habrastatisztika: hogyan él Habr geektimek nélkül

Általában az erőforrás-tulajdonosoknak van min gondolkodniuk.

De ne beszéljünk szomorú dolgokról. Általánosságban elmondható, hogy Habr elég sikeresen „túlélte” a nyári változásokat, és nem csökkent a cikkek száma az oldalon.

Értékelés

Most tulajdonképpen az értékelés. Gratulálok azoknak, akik belevágtak. Hadd emlékeztesselek még egyszer, hogy a minősítés nem hivatalos, lehet, hogy kihagytam valamit, és ha valami cikknek mindenképpen itt kellene lennie, de nem, akkor írj, manuálisan adom hozzá. Értékelésként kiszámított mérőszámokat használok, ami szerintem elég érdekesre sikerült.

A legnépszerűbb cikkek a megtekintések száma szerint

A legnépszerűbb cikkek értékelés és nézettség aránya szerint

A legnépszerűbb cikkek a megjegyzések/megtekintések aránya szerint

A legvitatottabb cikkek

A legnépszerűbb cikkek értékelés szerint

A legnépszerűbb cikkek a könyvjelzők száma szerint

Felül a könyvjelzők és a nézettség aránya szerint

Legnépszerűbb cikkek a megjegyzések száma alapján

És végül az utolsó Antitop a nemtetszések száma szerint

Ugh. Van még néhány érdekes válogatásom, de nem fogom untatni az olvasókat.

Következtetés

A minősítés felépítésénél két érdekesnek tűnő pontra figyeltem fel.

Először is, a toplista 60%-a a „geektimes” műfajhoz tartozó cikk. Hogy jövőre kevesebb lesz-e belőlük, és hogy fog kinézni Habr sörről, űrről, gyógyszerről stb. szóló cikkek nélkül, azt nem tudom. Az olvasók biztosan veszítenek valamit. Lássuk.

Másodszor, a legjobb könyvjelzők váratlanul jó minőségűnek bizonyultak. Ez pszichológiailag érthető, lehet, hogy az olvasók nem az értékelésre figyelnek, de ha a cikkre нужна, akkor hozzáadódik a könyvjelzőihez. És itt van a hasznos és komoly cikkek legnagyobb koncentrációja. Szerintem az oldaltulajdonosoknak valahogy át kellene gondolniuk a könyvjelzők száma és a jutalmazási program közötti összefüggést, ha ezt a konkrét cikkkategóriát szeretnék növelni itt a Habrén.

Valami ilyesmi. Remélem informatív volt.

A cikkek listája hosszúnak bizonyult, nos, valószínűleg ez a jobb. Jó olvasást mindenkinek.

Forrás: will.com

Hozzászólás