对 996.ICU 仓库 Stargazers 的一些统计和分析

有热心读者提供了一份 Issues 的数据,是 SQLite 格式的,暂时我可能没有时间分析,下面给出下载地址,欢迎有兴趣的同学来一起分析:https://blog.bgme.me/files/996_icu_issues.db.zip(原始链接),https://blog-assets.nova.moe/pics/996/issues.db(我的镜像)。


大概是这两天最火的一个仓库了,几天时间获得了超多的 Stars ,且上了 GitHub Trending ,很多媒体和新闻也对这个仓库以及相关的现象做了一些报道,但是很少有对于 Stargazers(给这个仓库点 Star 的用户)进行统计的,遂决定对 Stargazers 进行一些简单的统计和分析,由于我个人对于数据的解读不是非常多,强烈建议有一定 Python 基础的同学结合 Gist 中贴出的我通过 Jupyter Notebook 对于数据的操作来分析,而不是单纯看本文中的几张图片,本文可能会随着项目的变化而不断更新,相关统计建议和分析可以在本文下方留言。

获取 Stargazers 信息

在网上找了一下,这里使用了一个现成的脚本:minimaxir/get-profile-data-of-repo-stargazers,不过脚本中获取的值与我们希望要的值有一些小的出入,且时区默认是 EST(UTC -5),且没有对 urllib 做任何异常处理(这样就导致了一旦遇到一个 Exception ,整个程序就停了:(),所以在使用前需要进行一些调整。

此外,在对于 GitHub 的爬取过程中,发现分页到达 1334 页的时候会报一个错,只好一直爬到 1333 页,每页 30 条记录,总计最多可以爬到 39990 条数据。

2019/04/09 更新:获取到了 176852 条 Stargazers 数据,新的数据下载地址:https://blog-assets.nova.moe/pics/996/996-stargazers-180000.csv

顺便安利一下自己用 GraphQL 写的脚本,在:n0vad3v/get-profile-data-of-repo-stargazers-graphql,比之前使用的快了不少,而且不会遇到 Limit,爬完 14W 条数据大概只用了 1 小时,相比较之前那个可能需要 48+ 小时。

信息处理

相关的统计代码和过程(统计使用了 Jupyter Notebook,有兴趣的同学可以直接下载我的数据和代码并尝试从其他角度做进一步的分析)在:https://gist.github.com/n0vad3v/03010b73ff9e3442a2ba723bfa769df5

整体情况概览

Creation Time

通过对于 API 的请求:

https://api.github.com/repos/996icu/996.ICU

可以发现这个项目的创建时间是:2019-03-26T07:31:14Z(Z 是 Zulu 时间,也就是 UTC),对应到北京时间是: 2019-03-26 15:31:14(UTC+8 )。

对比了一下从项目上线之后注册的,且给项目点了 Star 的用户共计 2423 个用户,其中没有任何 Followers 的有 2378 个用户。

Available For Hire?

由于在 GitHub 上可以设置一个是否 Hireable(默认好像是没有勾选的),如图:

而对于我们爬下来的信息中正好有这个项,所以从它开始咯,在这 148200 条数据中,有 9772 个用户勾选这个选项(占比 6%)。

Companys?

对于各个比较主流的公司进行一些搜索(基于 GitHub 上在自己 Company 一栏中填写的信息进行模糊匹配),以 Google 为例,使用代码如下:

company_google = df[df['company'].str.contains("google",na=False,regex=True,case=False)]
company_google_count = len(company_google.index)

得到的数据如下:

Dji5
LeetCode6
SUSE6
Douyu6
Lenovo23
TCL24
iQiyi30
Didi57
Google84
HuaWei90
Meituan118
JD152
Netease167
Microsoft239
Baidu296
Tecent397
Alibaba421

可视化得出图表如下:

对于 Star 时间的分析

通过对于点 Star 的时间统计,我们可以发现点 Star 的高峰期在 1000 和 1700 达到两个峰值,可能正好是上班和下班的时间?

通过对于 Stargazers 的 Followers 情况来统计,在已有的 148200 条数据中,有 79749 个用户没有任何的 Follower。

对于 0 Followers 的用户分析

我们对于这 79749 个用户进行分析,通过注册时间来看,在项目上线的一个月(注:这里统计是按照月统计的,所以会显示到 2019/04/30)内注册量有一个峰值:

由于是按照月来统计的,我们只能粗略地看出 2019 年 3 月有很多注册用户,我们把这个月的数据放大,统计一下:在 3 月中注册的,且没有 Followers 的,且给仓库点 Star 的用户的注册数量情况,如下图:

可以看出,在 3 月 28 号,29 号的时候,有大量用户注册(共计达到了 1402 个),且给这个项目点了 Star,这个时间可能正是项目上线的前后两天,不过我们需要考虑一个可能的情况即:一些没有 GitHub 账户的程序员为了支持这个仓库而专门注册了帐号并且点了 Star。

为了进一步的了解在 2019/03/28 ~ 2019/04/02 时候注册用户的情况,我将那个时候注册的 219 个用户信息进行了导出(为 csv 格式),截图如下(文件可以从:https://blog-assets.nova.moe/pics/996/zero_follower_users_registered_in_last_day.csv 下载):

几乎清一色的没有设置 Name (仅有一个 username),好奇心驱使我把所有 2129 个用户的头像给下载了下来,截图如下(本来想拼张图的,无奈没找到合适的工具,就截图啦):

发现绝大多数都是 GtiHub 默认生成的头像。