Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Hoy Habr.

Ang artikulong ito ay isang lohikal na pagpapatuloy ng rating Ang pinakamahusay na mga artikulo ng Habr para sa 2018. At kahit na ang taon ay hindi pa tapos, ngunit tulad ng alam mo, may mga pagbabago sa mga patakaran sa tag-araw, nang naaayon, naging kawili-wiling makita kung naapektuhan nito ang anuman.

Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Bilang karagdagan sa aktwal na mga istatistika, magkakaroon din ng na-update na rating ng mga artikulo, pati na rin ang ilang mga mapagkukunan para sa mga interesado sa kung paano ito gumagana.

Para sa mga interesado sa nangyari, nagpatuloy sa ilalim ng hiwa. Ang mga interesado sa isang mas detalyadong pagsusuri ng mga seksyon ng site ay maaari ding tumingin susunod na bahagi.

Raw data

Hindi opisyal ang rating na ito, at wala akong insider data. Dahil madaling makita sa pamamagitan ng pagtingin sa address bar ng browser, lahat ng artikulo sa HabrΓ© ay may tuluy-tuloy na pagnunumero. Pagkatapos ito ay isang bagay ng pamamaraan, sa isang cycle lamang ay binabasa namin ang lahat ng mga artikulo sa isang hilera (sa isang thread at may mga pause upang hindi mai-load ang server). Ang mga halaga mismo ay nakuha ng isang simpleng Python parser (mayroong mga mapagkukunan dito) at nai-save sa isang csv file tulad nito:

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

Pagproseso

Para sa pag-parse, gagamitin namin ang Python, Pandas at Matplotlib. Ang mga hindi interesado sa mga istatistika ay maaaring laktawan ang bahaging ito at dumiretso sa mga artikulo.

Una kailangan mong i-load ang dataset sa memorya at piliin ang data para sa nais na taon.

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)

Lumalabas na 12715 na mga artikulo ang nai-publish ngayong taon (bagaman hindi pa ito tapos) sa oras ng pagsulat. Para sa paghahambing, para sa buong 2018 - 15904. Sa pangkalahatan, marami - ito ay tungkol sa 43 mga artikulo bawat araw (at ito ay may positibong rating lamang, kung gaano karaming mga artikulo ang na-load sa kabuuan na naging negatibo o natanggal, maaari lamang hulaan o halos tantiyahin sa pamamagitan ng mga pagtanggal sa mga identifier).

Piliin ang mga kinakailangang field mula sa dataset. Bilang mga sukatan, gagamitin namin ang bilang ng mga view, komento, halaga ng rating at bilang ng mga bookmark.

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

Ngayon ang data ay naidagdag na sa dataset at magagamit namin ito. Ipangkat natin ang data ayon sa mga araw at kunin ang mga average na halaga.

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

Ngayon ang nakakatuwang bahagi, maaari nating tingnan ang mga graph.

Tingnan natin ang bilang ng mga publikasyon sa HabrΓ© sa 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()

Ang resulta ay kawili-wili. Tulad ng makikita mo, ang Habr ay bahagyang "sausage" noong taon. Hindi ko alam ang dahilan.

Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Para sa paghahambing, mukhang medyo "mas makinis" ang 2018:

Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Sa pangkalahatan, wala akong nakitang matinding pagbaba sa bilang ng mga nai-publish na artikulo noong 2019 sa tsart. Bukod dito, sa kabaligtaran, tila lumaki pa ito ng kaunti mula noong tag-araw.

Ngunit ang susunod na dalawang mga graph ay nagpapahina sa akin ng kaunti.

Average na view sa bawat artikulo:

Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Average na rating bawat artikulo:

Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Tulad ng nakikita mo, ang average na bilang ng mga view sa buong taon ay bahagyang nabawasan. Ito ay maaaring ipaliwanag sa pamamagitan ng katotohanan na ang mga bagong artikulo ay hindi pa nai-index ng mga search engine, at hindi sila madalas na natagpuan. Ngunit ang pagbaba sa average na rating sa bawat artikulo ay mas hindi maintindihan. Ang pakiramdam ay ang mga mambabasa ay maaaring walang oras upang tingnan ang napakaraming artikulo o hindi binibigyang pansin ang mga rating. Mula sa punto ng view ng programang panghihikayat ng may-akda, ang kalakaran na ito ay lubhang hindi kanais-nais.

Sa pamamagitan ng paraan, hindi ito ang kaso noong 2018, at ang iskedyul ay higit pa o mas kaunti.

Habrastatistics: kung paano nabubuhay si Habr nang walang mga geektimes

Sa pangkalahatan, may dapat isipin ang mga may-ari ng mapagkukunan.

Ngunit huwag na nating pag-usapan ang mga malungkot na bagay. Sa pangkalahatan, maaari nating sabihin na si Habr ay "nakaligtas" sa mga pagbabago sa tag-araw nang matagumpay, at ang bilang ng mga artikulo sa site ay hindi nabawasan.

Marka

Ngayon talaga, ang rating. Congratulations sa mga nakapasok dito. Hayaan mong ipaalala ko sa iyo muli na ang rating ay hindi opisyal, marahil ay may napalampas ako, at kung ang ilang artikulo ay tiyak na narito, ngunit hindi, sumulat, idaragdag ko ito nang manu-mano. Bilang rating, gumagamit ako ng mga kalkuladong sukatan, na sa tingin ko ay naging kawili-wili.

Mga nangungunang artikulo ayon sa bilang ng mga view

Mga nangungunang artikulo ayon sa ratio ng rating-to-view

Mga nangungunang artikulo ayon sa ratio ng mga komento sa view

Nangungunang pinakakontrobersyal na mga artikulo

Mga nangungunang artikulo ayon sa rating

Mga nangungunang artikulo ayon sa bilang ng mga bookmark

Nangunguna sa ratio ng mga bookmark sa view

Mga nangungunang artikulo ayon sa bilang ng mga komento

At sa wakas, ang huli Antitop sa dami ng hindi gusto

Uff. Mayroon akong ilang mas kawili-wiling mga pagpipilian, ngunit hindi ako magsasawa sa mga mambabasa.

Konklusyon

Sa pagbuo ng rating, binigyan ko ng pansin ang dalawang puntos na tila kawili-wili.

Una, pagkatapos ng lahat, 60% ng nangunguna ay mga artikulo ng genre na "geektimes". Kung magiging mas kaunti sa kanila sa susunod na taon, at kung ano ang magiging hitsura ng Habr nang walang mga artikulo tungkol sa beer, espasyo, gamot, at iba pa - hindi ko alam. Siguradong may mami-miss ang mga mambabasa. Tingnan natin.

Pangalawa, ang tuktok ng bookmark ay naging hindi inaasahang mataas ang kalidad. Ito ay psychologically naiintindihan, ang mga mambabasa ay maaaring hindi bigyang-pansin ang rating, at kung ang artikulo ay kinakailangan, pagkatapos ay idaragdag ito sa mga bookmark. At narito lamang ang pinakamalaking konsentrasyon ng kapaki-pakinabang at seryosong mga artikulo. Sa tingin ko, dapat isipin ng mga may-ari ng site ang tungkol sa koneksyon sa pagitan ng bilang ng mga bookmark at reward program kung gusto nilang dagdagan ang partikular na kategoryang ito ng mga artikulo dito sa HabrΓ©.

Isang bagay na tulad nito. Sana naging informative ito.

Ang listahan ng mga artikulo ay naging mahaba, mabuti, marahil ito ay para sa pinakamahusay. Maligayang pagbabasa sa lahat.

Pinagmulan: www.habr.com

Magdagdag ng komento