Habrastatistics: Çawa Habr bêyî geektimes dijî

Hey Habr.

Ev gotar berdewamiyek mentiqî ya nirxandinê ye Gotarên çêtirîn Habr ji bo 2018. Û her çend sal hîn neqediyaye, wekî ku hûn dizanin, di havînê de di rêzikan de guhertin çêbûn, li gorî vê yekê, balkêş bû ku hûn bibînin ka gelo ev bandor li tiştek dike.

Habrastatistics: Çawa Habr bêyî geektimes dijî

Ji bilî statîstîkên rastîn, dê rêjeyek nûvekirî ya gotaran were peyda kirin, û her weha hin koda çavkaniyê ji bo kesên ku eleqedar dibin ka ew çawa dixebite.

Ji bo kesên ku bi çi qewimî re eleqedar dibin, berdewam di bin qutbûnê de ye. Kesên ku bi analîzek berfirehtir a beşên malperê re eleqedar dibin jî dikarin lê binêrin beşa din.

Daneyên çavkaniyê

Ev nirxandin nefermî ye, û ez agahdariya hundurîn tune. Wekî ku hûn dikarin bi nihêrîna li barika navnîşana geroka xwe bi hêsanî bibînin, hemî gotarên li ser Habré xwedan jimareya domdar in. Dûv re ew mijarek teknîkî ye, em bi hêsanî hemî gotaran di rêzek de di rêzek de dixwînin (di yek mijarî de û bi rawestan, da ku serverê bar nekin). Nirxên xwe ji hêla parserek hêsan a Python ve hatine wergirtin (çavkanî hene vir) û di pelek csv de tiştek mîna vî tomar kir:

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

Danasîn

Ji bo parskirinê em ê Python, Pandas û Matplotlib bikar bînin. Kesên ku bi îstatîstîkê re eleqedar nabin dikarin vê beşê berdin û rasterast biçin ser gotaran.

Pêşî hûn hewce ne ku databasê di bîranînê de bar bikin û daneyên sala xwestî hilbijêrin.

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)

Derketiye holê ku îsal (her çend hîn neqediyaye) di dema nivîsandinê de 12715 gotar hatine weşandin. Ji bo berhevdanê, ji bo tevahiya 2018 - 15904. Bi gelemperî, pir - ev rojek bi qasî 43 gotar e (û ev tenê bi nirxek erênî ye; bi tevahî çend gotarên ku neyînî derketin an jêbirin têne dakêşandin, meriv tenê dikare texmîn bike an jî bi texmînî ji valahiyên di nav nasnameyan de texmîn bikin).

Werin em zeviyên pêwîst ji databasê hilbijêrin. Wekî metris em ê hejmara dîtin, şîrove, nirxên nirxandî û hejmara nîşangiran bikar bînin.

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

Naha dane li ser daneyê hatine zêdekirin û em dikarin wê bikar bînin. Werin em daneyan bi roj kom bikin û nirxên navîn bistînin.

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

Naha beşa balkêş ev e ku em dikarin li grafikan binêrin.

Ka em li hejmara weşanên li ser Habré di sala 2019 de binihêrin.

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

Encam balkêş e. Wekî ku hûn dibînin, Habr di seranserê salê de piçûkek "sosîs" bûye. Sedema wê nizanim.

Habrastatistics: Çawa Habr bêyî geektimes dijî

Ji bo berhevdanê, 2018 hinekî hêsantir xuya dike:

Habrastatistics: Çawa Habr bêyî geektimes dijî

Bi gelemperî, min di sala 2019-an de li ser grafikê di hejmara gotarên hatine weşandin de kêmbûnek berbiçav nedît. Wekî din, berevajî vê yekê, xuya ye ku ji havînê ve hinekî jî zêde bûye.

Lê her du grafikên paşîn hinekî din min dilteng dikin.

Hejmara navînî ya dîtinan her gotarê:

Habrastatistics: Çawa Habr bêyî geektimes dijî

Rêjeya navînî ya her gotarê:

Habrastatistics: Çawa Habr bêyî geektimes dijî

Wekî ku hûn dibînin, hejmara navînî ya dîtinan di seranserê salê de hinekî kêm dibe. Ev dikare ji hêla rastiyê ve were ravekirin ku gotarên nû hîn ji hêla motorên lêgerînê ve nehatine navnîş kirin, û ew pir caran nayên dîtin. Lê kêmbûna rêjeya navînî ya her gotarê bêtir nayê fêm kirin. Hest ev e ku xwendevan an tenê wextê wan tune ku li gelek gotaran binihêrin an jî guh nadin nirxan. Ji hêla bernameya xelata nivîskarê ve, ev meyl pir ne xweş e.

Bi awayê, ev yek di sala 2018-an de pêk nehat, û bername kêm-zêde hêj jî kêm e.

Habrastatistics: Çawa Habr bêyî geektimes dijî

Bi gelemperî, xwediyên çavkaniyê tiştek heye ku li ser bifikirin.

Lê em behsa tiştên xemgîn nekin. Bi gelemperî, em dikarin bibêjin ku Habr ji guhertinên havînê bi rengek serketî "serxwe" kir, û hejmara gotarên li ser malperê kêm nebû.

Rêjeya

Niha, bi rastî, nirxandin. Silav ji bo kesên ku ketine nav wê. Bihêle ez careke din bi bîr bînim ku nirx nefermî ye, dibe ku min tiştek ji dest da, û heke hin gotar bê guman li vir be, lê ne wusa be, binivîsim, ez ê bi destan lê zêde bikim. Wekî nirxek, ez metrîkên hesabkirî bikar tînim, ku ez difikirim ku ew pir balkêş derket.

Gotarên jorîn ji hêla hejmara dîtinan ve

Gotarên jorîn li gorî rêjeya rêjeya ji bo dîtinan

Gotarên jorîn ji hêla rêjeya şîrove û dîtinan ve

Top gotarên herî nakokî

Gotarên jorîn ji hêla nirxandinê ve

Gotarên jorîn li gorî hejmara nîşangiran

Ji hêla rêjeya nîşangiran ber bi dîtinan ve bilindtirîn

Gotarên jorîn ji hêla hejmara şîroveyan ve

Û di dawiyê de, ya dawîn Antitop ji hêla hejmara nerazîbûnê ve

Ugh. Çend vebijarkên min ên balkêş hene, lê ez ê xwendevanan bêzar nekim.

encamê

Dema ku rêjeyê ava kir, min bala xwe da du xalên ku balkêş xuya dikirin.

Ya yekem, 60% ji jorîn gotarên celebê "geektimes" ne. Gelo dê sala bê ji wan kêmtir bin, û Habr bêyî gotarên li ser bîr, feza, derman û hwd., dê çawa xuya bike, ez nizanim. Bê guman, xwendevan dê tiştek winda bikin. Ka em bibînin.

Ya duyemîn, nîşangirên jorîn bi qalîteya nediyar bilind bûn. Ev ji hêla psîkolojîk ve tê fêm kirin, dibe ku xwendevan bala xwe nedin rêjeyê, lê heke gotarê; pêdivî ye, paşê ew ê li nîşangirên we were zêdekirin. Û li vir bi rastî berhevoka herî mezin a gotarên kêrhatî û ciddî ye. Ez difikirim ku xwediyên malperê divê bi rengekî bi têkiliya di navbera hejmara nîşangir û bernameya xelatan de bifikirin ger ew dixwazin vê kategoriya taybetî ya gotaran li vir li ser Habré zêde bikin.

Tiştekî wiha. Ez hêvî dikim ku ew agahdar bû.

Navnîşa gotaran dirêj bû, baş e, dibe ku ew ji bo çêtir be. Xwendina herkesî xweş.

Source: www.habr.com

Add a comment