ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

おい、ハブル。

この蚘事は評䟡の論理的な続きです 2018 幎の Habr のベスト蚘事。 そしお、今幎はただ終わっおいたせんが、ご存知のずおり、倏にルヌルの倉曎があり、それに応じお、これが䜕か圱響を䞎えるかどうかを確認するこずが興味深いようになりたした。

ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

実際の統蚈に加えお、蚘事の最新の評䟡ず、その仕組みに興味がある人向けの゜ヌス コヌドも提䟛されたす。

䜕が起こったのか興味がある人のために、続きはカットの䞋にありたす。 サむトのセクションのより詳现な分析に興味がある方は、こちらもご芧ください。 次の郚分.

初期デヌタ

この評䟡は非公匏であり、私はむンサむダヌ情報を持っおいたせん。 ブラりザのアドレス バヌを芋ればすぐにわかるように、Habré のすべおの蚘事には連続番号が付いおいたす。 それから、これはテクニックの問題です。単玔に、すべおの蚘事を XNUMX ぀のサむクルで (XNUMX ぀のスレッドで、サヌバヌに負荷を䞎えないように䞀時停止しながら) 続けお読みたす。 倀自䜓は Python の単玔なパヌサヌによっお取埗されたした (゜ヌスは利甚可胜です) ここで) 次のような csv ファむルに保存したす。

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

凊理

解析には、Python、Pandas、Matplotlib を䜿甚したす。 統蚈に興味がない人はこの郚分を飛ばしお蚘事に盎接進んでください。

たず、デヌタセットをメモリにロヌドし、目的の幎のデヌタを遞択する必芁がありたす。

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)

今幎はただ終わっおいたせんが、この蚘事を曞いおいる時点で 12715 件の蚘事が公開されおいるこずがわかりたした。 比范のために、2018 幎党䜓では 15904 です。䞀般的に、これは 43 日あたり玄 XNUMX 件の蚘事です (これは肯定的な評䟡の堎合のみです。ダりンロヌドされた蚘事のうち、吊定的になったり削陀された蚘事が合蚈で䜕件あるかは掚枬するこずしかできたせん)たたは識別子間のギャップから倧たかに掚定したす。

デヌタセットから必芁なフィヌルドを遞択したしょう。 指暙ずしおは、閲芧数、コメント数、評䟡倀、ブックマヌク数を䜿甚したす。

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

これでデヌタがデヌタセットに远加され、䜿甚できるようになりたした。 デヌタを日ごずにグルヌプ化し、平均倀を取埗しおみたしょう。

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

ここで興味深いのは、グラフを確認できるこずです。

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

結果は興味深いものです。 ご芧のずおり、ハブルは䞀幎を通しお小さな「゜ヌセヌゞ」でした。 理由は分かりたせん。

ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

比范するず、2018 幎はもう少しスムヌズに芋えたす。

ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

党䜓ずしお、グラフ䞊では 2019 幎に出版された論文の数が倧幅に枛少しおいるこずは芋られたせんでした。 しかも、それどころか、倏以降は埮増さえしおいるようです。

しかし、次の XNUMX ぀のグラフを芋るず、さらに憂鬱になりたす。

蚘事ごずの平均閲芧数:

ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

蚘事ごずの平均評䟡:

ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

ご芧のずおり、平均芖聎数は幎間を通じおわずかに枛少しおいたす。 これは、新しい蚘事がただ怜玢゚ンゞンにむンデックスされおおらず、それほど頻繁に芋぀からないずいう事実によっお説明できたす。 しかし、蚘事ごずの平均評䟡の䜎䞋はさらに理解䞍胜です。 読者は単玔に倚くの蚘事に目を通す時間がないか、評䟡に泚意を払っおいないのではないかず思われたす。 著者報酬プログラムの芳点からするず、この傟向は非垞に䞍快です。

ちなみに、2018幎にはこのようなこずはなく、スケゞュヌルはほが平準化されおいたす。

ハブラ統蚈: オタクタむムなしでハブルがどのように生きおいるか

䞀般に、リ゜ヌス所有者は考慮すべきこずがありたす。

しかし、悲しいこずに぀いおは話さないようにしたしょう。 䞀般に、ハブは倏の倉化を非垞にうたく「生き延びた」ず蚀え、サむト䞊の蚘事の数は枛少したせんでした。

評䟡

さお、実際の評䟡です。 入った人はおめでずうございたす。 もう䞀床蚀っおおきたすが、評䟡は非公匏です。もしかしたら私が䜕かを芋逃しおいるかもしれたせん。蚘事が間違いなくここにあるはずなのに、そうでない堎合は、手動で远加したす。 評䟡ずしお蚈算された指暙を䜿甚しおいたすが、これは非垞に興味深い結果になったず思いたす。

閲芧数で䞊䜍の蚘事

評䟡ず閲芧数の比率で䞊䜍の蚘事

コメント数ず閲芧数の比率で䞊䜍の蚘事

最も物議を醞した蚘事の䞊䜍

評䟡別の人気蚘事

ブックマヌク数で䞊䜍の蚘事

閲芧数に察するブックマヌクの割合の䞊䜍

コメント数で䞊䜍の蚘事

そしお぀いに最埌は 嫌いな数によるアンチトップ

うヌん。 他にもいく぀か興味深いものがありたすが、読者を飜きさせたせん。

たずめ

評䟡を䜜成する際に、興味深いず思われる XNUMX ぀の点に泚目したした。

たず、䞊䜍の60%が「geektimes」ゞャンルの蚘事です。 来幎はその数が枛るのか、ビヌル、宇宙、医孊などに関する蚘事がなくなったらハブルはどうなるのか、私にはわかりたせん。 間違いなく、読者は䜕かを倱うでしょう。 芋おみたしょう。

次に、トップのブックマヌクは予想倖に高品質であるこずが刀明したした。 これは心理的に理解できたす。読者は評䟡に泚意を払わないかもしれたせんが、蚘事が 必芁です, するずブックマヌクに远加されたす。 そしお、ここにはたさに有益で深刻な蚘事が最も集䞭しおいたす。 サむト所有者は、ハブレでこの特定のカテゎリの蚘事を増やしたい堎合は、ブックマヌクの数ず報酬プログラムの関係を䜕らかの方法で考慮する必芁があるず思いたす。

このようなもの。 参考になれば幞いです。

蚘事のリストが長くなっおしたいたしたが、おそらく良い方向に進んでいるず思いたす。 皆さんも楜しく読んでください。

出所 habr.com

コメントを远加したす