Habrastatistika: kā Habrs dzīvo bez geektimes

Čau, Habr.

Å is raksts ir loÄ£isks reitinga turpinājums Labākie Habr raksti 2018. gadā. Un, lai gan gads vēl nav beidzies, kā zināms, vasarā notika izmaiņas noteikumos, attiecÄ«gi kļuva interesanti pavērot, vai tas kaut ko ietekmēja.

Habrastatistika: kā Habrs dzīvo bez geektimes

Papildus faktiskajai statistikai tiks nodroÅ”ināts atjaunināts rakstu vērtējums, kā arÄ« daži pirmkodi tiem, kuri interesējas par tā darbÄ«bu.

Tiem, kam ir interese par notikuÅ”o, turpinājums ir zem griezuma. Var apskatÄ«t arÄ« tie, kurus interesē detalizētāka vietnes sadaļu analÄ«ze nākamā daļa.

Neapstrādāti dati

Å is vērtējums ir neoficiāls, un man nav nekādas iekŔējās informācijas. Kā jÅ«s viegli varat redzēt, apskatot pārlÅ«kprogrammas adreses joslu, visiem rakstiem par HabrĆ© ir nepārtraukta numerācija. Tad tas ir tehnikas jautājums, mēs vienkārÅ”i lasām visus rakstus pēc kārtas ciklā (vienā pavedienā un ar pauzēm, lai nenoslogotu serveri). PaÅ”as vērtÄ«bas tika iegÅ«tas ar vienkārÅ”u Python parsētāju (avoti ir pieejami Å”eit) un saglabāts csv failā apmēram Ŕādi:

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

Pārstrādes

ParsÄ“Å”anai izmantosim Python, Pandas un Matplotlib. Tie, kurus neinteresē statistika, var izlaist Å”o daļu un doties tieÅ”i uz rakstiem.

Vispirms jāielādē datu kopa atmiņā un jāizvēlas dati vēlamajam gadam.

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)

Izrādās, Å”ogad (lai gan tas vēl nav pabeigts) rakstÄ«Å”anas brÄ«dÄ« ir publicēti 12715 2018 raksti. SalÄ«dzinājumam, par visu 15904. gadu - 43. Kopumā daudz - tas ir aptuveni XNUMX raksti dienā (un tas ir tikai ar pozitÄ«vu vērtējumu; cik kopumā tiek lejupielādēti raksti, kas kļuva negatÄ«vi vai tika izdzēsti, var tikai uzminēt vai aptuveni aplēst, izmantojot identifikatoru atŔķirÄ«bas).

AtlasÄ«sim nepiecieÅ”amos laukus no datu kopas. Kā metriku mēs izmantosim skatÄ«jumu skaitu, komentārus, vērtējuma vērtÄ«bas un grāmatzÄ«mju skaitu.

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

Tagad dati ir pievienoti datu kopai, un mēs varam tos izmantot. Sagrupēsim datus pa dienām un ņemsim vidējās vērtības.

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

Tagad interesantākā daļa ir tāda, ka mēs varam apskatīt grafikus.

ApskatÄ«sim publikāciju skaitu par Habrē 2019. gadā.

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

Rezultāts ir interesants. Kā redzat, Habrs visu gadu ir bijis mazs ā€œdesiņŔā€. Es nezinu iemeslu.

Habrastatistika: kā Habrs dzīvo bez geektimes

Salīdzinājumam, 2018. gads izskatās nedaudz gludāks:

Habrastatistika: kā Habrs dzīvo bez geektimes

Kopumā grafikā neredzēju krasu publicēto rakstu skaita samazināŔanos 2019. gadā. Turklāt, gluži pretēji, kopÅ” vasaras tas, Ŕķiet, ir pat nedaudz palielinājies.

Bet nākamie divi grafiki mani nomāc nedaudz vairāk.

Vidējais skatījumu skaits vienam rakstam:

Habrastatistika: kā Habrs dzīvo bez geektimes

Vidējais vērtējums par rakstu:

Habrastatistika: kā Habrs dzīvo bez geektimes

Kā redzat, vidējais skatÄ«jumu skaits gada garumā nedaudz samazinās. Tas skaidrojams ar to, ka jaunus rakstus meklētājprogrammas vēl nav indeksējuÅ”i, un tie nav tik bieži atrodami. Bet nesaprotamāks ir vidējā vērtējuma kritums vienam rakstam. SajÅ«ta tāda, ka lasÄ«tājiem vai nu vienkārÅ”i nav laika pārŔķirstÄ«t tik daudz rakstu, vai arÄ« nepievērÅ” uzmanÄ«bu reitingiem. No autoratlÄ«dzÄ«bas programmas viedokļa Ŕī tendence ir ļoti nepatÄ«kama.

Starp citu, 2018. gadā tas nenotika, un grafiks ir vairāk vai mazāk vienmērīgs.

Habrastatistika: kā Habrs dzīvo bez geektimes

Kopumā resursu īpaŔniekiem ir par ko padomāt.

Bet nerunāsim par skumjām lietām. Kopumā varam teikt, ka Habrs vasaras pārmaiņas ā€œpārdzÄ«vojaā€ diezgan veiksmÄ«gi, un rakstu skaits vietnē nesamazinājās.

Novērtējums

Tagad faktiski vērtējums. Apsveicam tos, kuri tajā iekļuva. Atgādinu vēlreiz, ka vērtējums ir neoficiāls, iespējams, esmu kaut ko palaidis garām, un, ja kādam rakstam noteikti vajadzētu bÅ«t, bet tā nav, rakstiet, pievienoÅ”u manuāli. Kā vērtējumu izmantoju aprēķinātos rādÄ«tājus, kas, manuprāt, izrādÄ«jās diezgan interesanti.

Populārākie raksti pēc skatījumu skaita

Populārākie raksti pēc vērtējuma un skatījumu attiecības

Populārākie raksti pēc komentāru un skatījumu attiecības

Vispretrunīgākie raksti

Populārākie raksti pēc vērtējuma

Populārākie raksti pēc grāmatzīmju skaita

Tops pēc grāmatzīmju un skatījumu attiecības

Populārākie raksti pēc komentāru skaita

Un visbeidzot, pēdējais Antitop pēc atzīmju Nepatīk skaita

Uhh. Man ir vēl dažas interesantas izlases, bet es negarlaikoÅ”u lasÄ«tājus.

Secinājums

Veidojot reitingu, pievērsu uzmanÄ«bu diviem punktiem, kas Ŕķita interesanti.

Pirmkārt, 60% topa ir ā€œgeektimesā€ žanra raksti. Vai nākamgad viņu bÅ«s mazāk un kā Habrs izskatÄ«sies bez rakstiem par alu, kosmosu, medicÄ«nu utt., es nezinu. Noteikti lasÄ«tāji kaut ko pazaudēs. PaskatÄ«simies.

Otrkārt, top grāmatzÄ«mes izrādÄ«jās negaidÄ«ti kvalitatÄ«vas. Tas ir psiholoÄ£iski saprotams, lasÄ«tāji var nepievērst uzmanÄ«bu vērtējumam, bet, ja raksts ir nepiecieÅ”ams, tad tas tiks pievienots jÅ«su grāmatzÄ«mēm. Un Å”eit ir tieÅ”i lielākā noderÄ«go un nopietnu rakstu koncentrācija. Es domāju, ka vietņu Ä«paÅ”niekiem vajadzētu kaut kā padomāt par saistÄ«bu starp grāmatzÄ«mju skaitu un atlÄ«dzÄ«bas programmu, ja viņi vēlas palielināt Å”o konkrēto rakstu kategoriju Å”eit vietnē HabrĆ©.

Kaut kas tamlīdzīgs. Es ceru, ka tas bija informatīvs.

Rakstu saraksts izrādÄ«jās garÅ”, iespējams, tas ir uz labu. PriecÄ«gu lasÄ«Å”anu visiem.

Avots: www.habr.com

Pievieno komentāru