利用ArangoDB做科创论坛学术分统计
novakon2016/05/15软件综合 IP:广东
最近在做数据库迁移,从MySQL到ArangoDB.
PHPWind的schema简直跟垃圾堆一样,如果PW开发组的在天之灵能听见,希望他们把这段话录下来,每天放30遍。
以下是用户数据(局部)……

QQ截图20160515142711.jpg



以下是一个user对象的新貌:
QQ截图20160515142546.jpg


既然现在手上有所有人的学术分数据(截止到14年12月),不妨做个小统计吧。我们希望知道,在过去的n年中,每年注册的用户数量,以及这些用户中至少有1个学术分的用户的数量。


下面是我用的ArangoDB查询语句(AQL)


QQ截图20160515143942.jpg



我们按照yearsback分组,通过timestamp筛选,最后统计结果。


以下是输出:
<code class="lang-js">[
  {
    "y": 9,
    "oldusers": 2240,
    "oldusers_xsf": 74,
    "ratio": 0.033035714285714286
  },
  {
    "y": 8,
    "oldusers": 2983,
    "oldusers_xsf": 62,
    "ratio": 0.02078444518940664
  },
  {
    "y": 7,
    "oldusers": 5522,
    "oldusers_xsf": 58,
    "ratio": 0.010503440782325244
  },
  {
    "y": 6,
    "oldusers": 5927,
    "oldusers_xsf": 70,
    "ratio": 0.011810359372363759
  },
  {
    "y": 5,
    "oldusers": 11182,
    "oldusers_xsf": 52,
    "ratio": 0.004650330888928635
  },
  {
    "y": 4,
    "oldusers": 7064,
    "oldusers_xsf": 24,
    "ratio": 0.0033975084937712344
  },
  {
    "y": 3,
    "oldusers": 7031,
    "oldusers_xsf": 15,
    "ratio": 0.002133409187882236
  },
  {
    "y": 2,
    "oldusers": 5685,
    "oldusers_xsf": 2,
    "ratio": 0.00035180299032541777
  },
  {
    "y": 1,
    "oldusers": 0,
    "oldusers_xsf": 0,
    "ratio": null
  }
]</code>
来自:计算机科学 / 软件综合
6
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
novakon 作者
7年11个月前 IP:广东
819334
可见,9年前注册的用户,至少有一个学术分的比例是3.3%
6年前是1.1%
3年前是0.2%

其中,5年前有一次注册用户数量剧增(伴随着质量的直接滑坡)。这是为什么呢?

令人印象深刻的是,我重新统计了一次
<code class="lang-js">{
  "y": 12,
  "oldusers": 0,
  "oldusers_xsf": 0,
  "ratio": null
},
{
  "y": 11,
  "oldusers": 1121,
  "oldusers_xsf": 97,
  "ratio": 0.08652988403211419
},
{
  "y": 10,
  "oldusers": 1769,
  "oldusers_xsf": 58,
  "ratio": 0.03278688524590164
},
{
  "y": 9,
  "oldusers": 2240,
  "oldusers_xsf": 74,
  "ratio": 0.033035714285714286
},</code>
最早的1000个用户中,学术分比例高达8.6%
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
7年11个月前 IP:广东
819339
这是论坛学术分分布:


<code class="lang-js">[
  {
    "xsf": null,
    "num": 49993
  },
  {
    "xsf": -3,
    "num": 2
  },
  {
    "xsf": -2,
    "num": 6
  },
  {
    "xsf": -1,
    "num": 11
  },
  {
    "xsf": 1,
    "num": 248
  },
  {
    "xsf": 2,
    "num": 68
  },
  {
    "xsf": 3,
    "num": 39
  },
  {
    "xsf": 4,
    "num": 28
  },
  {
    "xsf": 5,
    "num": 16
  },
  {
    "xsf": 6,
    "num": 15
  },
  {
    "xsf": 7,
    "num": 12
  },
  {
    "xsf": 8,
    "num": 18
  },
  {
    "xsf": 9,
    "num": 10
  },
  {
    "xsf": 10,
    "num": 14
  },
  {
    "xsf": 11,
    "num": 6
  },
  {
    "xsf": 12,
    "num": 5
  },
  {
    "xsf": 13,
    "num": 4
  },
  {
    "xsf": 15,
    "num": 3
  },
  {
    "xsf": 16,
    "num": 2
  },
  {
    "xsf": 17,
    "num": 2
  },
  {
    "xsf": 18,
    "num": 2
  },
  {
    "xsf": 19,
    "num": 3
  },
  {
    "xsf": 21,
    "num": 1
  },
  {
    "xsf": 22,
    "num": 2
  },
  {
    "xsf": 23,
    "num": 1
  },
  {
    "xsf": 24,
    "num": 2
  },
  {
    "xsf": 27,
    "num": 1
  },
  {
    "xsf": 29,
    "num": 1
  },
  {
    "xsf": 30,
    "num": 1
  },
  {
    "xsf": 33,
    "num": 1
  },
  {
    "xsf": 34,
    "num": 1
  },
  {
    "xsf": 35,
    "num": 1
  },
  {
    "xsf": 39,
    "num": 1
  },
  {
    "xsf": 40,
    "num": 3
  },
  {
    "xsf": 44,
    "num": 1
  },
  {
    "xsf": 47,
    "num": 2
  }
]</code>
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
7年11个月前 IP:广东
819342
我做了更为详细的统计:

<code class="lang-text">for u in users
collect time = left(date_iso8601(u.toc),7) into groups = u.xsf
let num_of_register_with_xsf = length(for u in groups filter u>0 return u)
let total_xsf = sum(groups)
let num_of_register = length(groups)
return {time, num_of_register_with_xsf, num_of_register,
ratio:num_of_register_with_xsf/num_of_register, xsf_per_user_that_have_xsf:total_xsf/num_of_register_with_xsf }</code>
结果:



attachment icon xsf_details.zip 2.21KB ZIP 20次下载
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
7年11个月前 IP:广东
819344
对上述数据转csv用excel作图,得到以下结果
图例按月分别为:
注册数量
其中有至少一个学术分的用户的百分比
有至少一个学术分的用户的数量
平均每个有学术分的用户的学术分数量 QQ截图20160515161151.jpg


通俗的来讲
蓝色:涌入人头数
橙色:牛人占人头的比例(平均用户质量)
紫色:牛人的牛逼程度(高质量用户平均水平)
绿色:牛人数
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
王者归来abs
7年11个月前 IP:山东
819378
...
看到这个我感觉自己好弱机
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
novakon
学者 机友 笔友
文章
1256
回复
8385
学术分
16
2008/03/29注册,2年2个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}