Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Hello, Habr.

Nkan yii jẹ ilọsiwaju ọgbọn ti igbelewọn Awọn nkan Habr ti o dara julọ fun ọdun 2018. Ati pe botilẹjẹpe ọdun ko ti pari sibẹsibẹ, bi o ṣe mọ, ninu ooru awọn iyipada wa ninu awọn ofin, ni ibamu, o jẹ ohun ti o nifẹ lati rii boya eyi kan ohunkohun.

Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Ni afikun si awọn iṣiro gangan, iwọn imudojuiwọn ti awọn nkan yoo wa, ati diẹ ninu koodu orisun fun awọn ti o nifẹ si bii o ṣe n ṣiṣẹ.

Fun awọn ti o nifẹ si ohun ti o ṣẹlẹ, itesiwaju wa labẹ gige. Awọn ti o nifẹ si itupalẹ alaye diẹ sii ti awọn apakan ti aaye naa tun le wo tókàn apakan.

Orisun orisun

Eleyi Rating jẹ laigba aṣẹ, ati ki o Emi ko ni eyikeyi Oludari alaye. Bii o ṣe le rii ni irọrun nipa wiwo ọpa adirẹsi aṣawakiri rẹ, gbogbo awọn nkan lori Habré ni nọmba ti nlọsiwaju. Lẹhinna o jẹ ọrọ ti ilana, a kan ka gbogbo awọn nkan ni ọna kan ni lupu kan (ni okun kan ati pẹlu awọn idaduro, nitorinaa ki o ma ṣe fifuye olupin naa). Awọn iye ara wọn ni a gba nipasẹ parser ti o rọrun ni Python (awọn orisun wa nibi) ati fipamọ sinu faili csv nkankan bi eleyi:

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

Itọju

Fun itupalẹ a yoo lo Python, Pandas ati Matplotlib. Awọn ti ko nifẹ si awọn iṣiro le foju apakan yii ki o lọ taara si awọn nkan naa.

Ni akọkọ o nilo lati kojọpọ dataset sinu iranti ati yan data fun ọdun ti o fẹ.

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)

O wa ni pe ni ọdun yii (botilẹjẹpe ko tii pari) ni akoko kikọ, awọn nkan 12715 ni a ti tẹjade. Fun lafiwe, fun gbogbo 2018 - 15904. Ni gbogbogbo, pupọ - eyi jẹ nipa awọn nkan 43 fun ọjọ kan (ati pe eyi jẹ nikan pẹlu ipinnu rere; melo ni awọn ohun elo lapapọ ti o gba lati ayelujara ti o lọ odi tabi ti paarẹ, ọkan le ṣe amoro nikan. tabi iṣiro aijọju lati awọn ela laarin awọn idamọ).

Jẹ ki a yan awọn aaye pataki lati inu dataset. Gẹgẹbi awọn metiriki a yoo lo nọmba awọn iwo, awọn asọye, awọn idiyele idiyele ati nọmba awọn bukumaaki.

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

Bayi a ti ṣafikun data naa si dataset ati pe a le lo. Jẹ ki a ṣe akojọpọ data naa ni ọjọ kan ati mu awọn iye apapọ.

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

Bayi apakan ti o nifẹ si ni pe a le wo awọn aworan.

Jẹ ki a wo nọmba awọn atẹjade lori Habré ni ọdun 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()

Abajade jẹ awon. Gẹgẹbi o ti le rii, Habr ti jẹ “soseji” diẹ ni gbogbo ọdun. Nko mo idi.

Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Fun lafiwe, 2018 dabi irọrun diẹ:

Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Ni gbogbogbo, Emi ko rii idinku nla eyikeyi ninu nọmba awọn nkan ti a tẹjade ni ọdun 2019 lori iyaya naa. Pẹlupẹlu, ni ilodi si, o dabi pe o ti pọ si diẹ sii lati igba ooru.

Ṣugbọn awọn aworan meji ti o tẹle n rẹ mi ni diẹ diẹ sii.

Nọmba apapọ awọn iwo fun nkan kan:

Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Iwọn aropin fun nkan kan:

Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Bi o ti le ri, apapọ nọmba ti awọn iwo dinku die-die jakejado odun. Eyi le ṣe alaye nipasẹ otitọ pe awọn nkan tuntun ko tii ṣe atọka nipasẹ awọn ẹrọ wiwa, ati pe wọn ko rii nigbagbogbo. Ṣugbọn idinku ni aropin apapọ fun nkan jẹ diẹ incomprehensible. Iro naa ni pe awọn oluka boya nìkan ko ni akoko lati wo nipasẹ ọpọlọpọ awọn nkan tabi ko ṣe akiyesi awọn idiyele. Lati oju-ọna ti eto ere onkọwe, aṣa yii ko dun pupọ.

Nipa ọna, eyi ko ṣẹlẹ ni 2018, ati iṣeto naa jẹ diẹ sii tabi kere si paapaa.

Habrastatistics: bawo ni Habr ṣe n gbe laisi geektimes

Ni gbogbogbo, awọn oniwun orisun ni nkan lati ronu nipa.

Ṣugbọn jẹ ki a ma sọrọ nipa awọn ohun ti o dun. Ni gbogbogbo, a le sọ pe Habr “laaye” awọn ayipada ooru ni aṣeyọri ni aṣeyọri, ati pe nọmba awọn nkan lori aaye naa ko dinku.

Rating

Bayi, ni otitọ, idiyele naa. Oriire fun awọn ti o wọle. Jẹ ki n leti lekan si pe idiyele jẹ laigba aṣẹ, boya Mo padanu nkankan, ati pe ti nkan kan ba dajudaju yẹ ki o wa nibi, ṣugbọn kii ṣe, kọ, Emi yoo ṣafikun pẹlu ọwọ. Gẹgẹbi idiyele, Mo lo awọn metiriki iṣiro, eyiti Mo ro pe o jẹ ohun ti o dun.

Top ìwé nipa nọmba ti wiwo

Awọn nkan ti o ga julọ nipasẹ iwọn si ipin wiwo

Awọn nkan ti o ga julọ nipasẹ awọn asọye si ipin wiwo

Top julọ ti ariyanjiyan ìwé

Top ìwé nipa Rating

Awọn nkan ti o ga julọ nipasẹ nọmba awọn bukumaaki

Oke nipasẹ ipin awọn bukumaaki si awọn iwo

Top ìwé nipa nọmba ti comments

Ati nikẹhin, eyi ti o kẹhin Antitop nipa nọmba ti ikorira

Ugh. Mo ni awọn aṣayan diẹ ti o nifẹ si, ṣugbọn Emi kii yoo gba awọn oluka naa.

ipari

Nigbati o ba n ṣe idiyele naa, Mo ṣe akiyesi si awọn aaye meji ti o dabi ẹni pe o nifẹ.

Ni akọkọ, 60% ti oke jẹ awọn nkan ti oriṣi “geektimes”. Boya yoo jẹ diẹ ninu wọn ni ọdun to nbọ, ati kini Habr yoo dabi laisi awọn nkan nipa ọti, aaye, oogun, ati bẹbẹ lọ, Emi ko mọ. Ni pato, awọn onkawe yoo padanu nkankan. Jẹ ki a ri.

Ni ẹẹkeji, awọn bukumaaki oke ti jade lati jẹ didara ga lairotẹlẹ. Eyi jẹ oye ti ọpọlọ; nilo, lẹhinna o yoo wa ni afikun si awọn bukumaaki rẹ. Ati pe eyi ni deede ifọkansi ti o tobi julọ ti awọn nkan to wulo ati pataki. Mo ro pe awọn oniwun aaye yẹ ki o ronu bakan nipasẹ asopọ laarin nọmba awọn bukumaaki ati eto ere ti wọn ba fẹ lati pọsi ẹka pato ti awọn nkan nibi lori Habré.

Nkankan bi eleyi. Mo nireti pe o jẹ alaye.

Atokọ awọn nkan ti jade lati gun, daradara, o ṣee ṣe fun dara julọ. Idunnu kika gbogbo eniyan.

orisun: www.habr.com

Fi ọrọìwòye kun