Habra 統計學:Habr 如何在沒有極客時代的情況下生活

嘿哈布爾。

本文是評級的邏輯延續 2018 年最佳 Habr 文章。 雖然這一年還沒有結束,但正如你所知,在夏天,規則發生了變化,相應地,看看這是否會產生任何影響就變得有趣。

Habra 統計學:Habr 如何在沒有極客時代的情況下生活

除了實際的統計數據之外,還將提供更新的文章評級,以及一些對其工作原理感興趣的人的原始程式碼。

對於那些對發生的事情感興趣的人來說,續集已被削減。 有興趣更詳細分析網站各部分的人也可以查看 下一部分.

初始數據

這個評級是非官方的,我沒有任何內幕消息。 透過查看瀏覽器的網址列,您可以輕鬆看到,Habré 上的所有文章都有連續編號。 然後就是技術問題了,我們只是在一個循環中連續讀取所有文章(在一個線程中並暫停,以免加載伺服器)。 這些值本身是透過 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 篇文章(這只是正面評價;總共下載了多少篇負面或被刪除的文章,只能猜測或根據標識符之間的差距粗略估計)。

讓我們從資料集中選擇必要的欄位。 作為指標,我們將使用瀏覽量、評論數、評分值和書籤數。

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 年關於 Habré 的出版數量。

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

結果很有趣。 正如你所看到的,哈布爾這一整年都有點「香腸」。 我不知道原因。

Habra 統計學:Habr 如何在沒有極客時代的情況下生活

相較之下,2018 年看起來要順利一些:

Habra 統計學:Habr 如何在沒有極客時代的情況下生活

整體來說,我在圖表上並沒有看到2019年發表的文章數量大幅下降。 而且,相反,自夏季以來似乎甚至略有增加。

但接下來的兩張圖讓我更加沮喪。

每篇文章的平均瀏覽次數:

Habra 統計學:Habr 如何在沒有極客時代的情況下生活

每篇文章的平均評分:

Habra 統計學:Habr 如何在沒有極客時代的情況下生活

正如您所看到的,全年平均觀看次數略有下降。 這可以解釋為新文章尚未被搜尋引擎索引,並且不那麼頻繁地被發現。 但每篇文章平均分數的下降就更讓人難以理解了。 感覺讀者要嘛根本沒有時間看那麼多文章,要嘛不注意收視率。 從作者獎勵計劃的角度來看,這種趨勢是非常令人不快的。

順便說一下,2018年並沒有出現這種情況,而且日程安排也差不多。

Habra 統計學:Habr 如何在沒有極客時代的情況下生活

一般來說,資源所有者有一些需要考慮的事情。

但我們不要談論悲傷的事情。 總的來說,我們可以說哈布爾相當成功地「熬過了」夏季變化,網站上的文章數量並沒有減少。

等級

現在,實際上,評級。 恭喜那些進入其中的人。 讓我再次提醒您,評級是非官方的,也許我錯過了一些東西,如果某篇文章肯定應該在這裡,但它不是,寫下來,我會手動添加它。 作為評級,我使用計算指標,我認為這非常有趣。

按瀏覽次數排列的熱門文章

以收視率排名的熱門文章

按評論瀏覽率排名的熱門文章

最有爭議的文章

按評級排名的熱門文章

按書籤數量排列的熱門文章

按書籤與視圖的比例排名靠前

按評論數量排列的熱門文章

最後,最後一張 按不喜歡數量排列的 Antitop

啊。 我還有一些更有趣的選擇,但我不會讓讀者感到無聊。

結論

在構建評級時,我注意到了兩點似乎很有趣。

首先,前60%的文章屬於「極客時代」類型。 明年是否會減少,如果沒有有關啤酒、太空、醫學等的文章,哈布爾會是什麼樣子,我不知道。 毫無疑問,讀者會失去一些東西。 讓我們來看看。

其次,頂級書籤的品質出乎意料地高。 這在心理上是可以理解的;讀者可能不會注意評分,但如果文章 是必要的,然後它將添加到您的書籤中。 這裡恰恰是有用且嚴肅的文章的最集中的地方。 我認為,如果網站所有者想增加 Habré 上這一特定類別的文章,他們應該以某種方式考慮書籤數量和獎勵計劃之間的聯繫。

像這樣的東西。 我希望它能提供有用的信息。

文章清單很長,好吧,這可能是為了更好。 大家閱讀愉快。

來源: www.habr.com

添加評論