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é 上这一特定类别的文章,他们应该以某种方式考虑书签数量和奖励计划之间的联系。

像这样的东西。 我希望它能提供有用的信息。

文章列表很长,好吧,这可能是为了更好。 大家阅读愉快。

来源: habr.com

添加评论