探究在线课程时长与观看人数的关系——以极客学院为例

背景

看网络课程是假期充电的好方法,遇到一节短短的干货网络课,真是让人受益匪浅、回味无穷。但不知大家有没有类似的感受,当你在线上课程平台看到一个感兴趣的课程,并迫不及待的点进去一探究竟时,巨长的课程时长让你的热情瞬间下降了一半。就算仍然饶有兴致的开始了学习,中途可能就打哈哈流泪进而放弃了,下次再看到课程时间过长的,直接pass!是不是就我自己有这个毛病呢?闲来无事,用数据分析的方法来对这个问题一探究竟。我选择了个人比较青睐的线上教育平台——极客学院作为分析对象。

这篇文章只谈分析过程和分析结果,不想粘代码了,完整项目已扔至github->jkxy-data-analyse


数据收集

要分析数据嘛,没数据分析个皮皮虾,就好比今天是生娃抡丁节,没有女朋友你管那么多干嘛~不如正儿八经的撸点代码~

咳咳,言归正传,数据收集用Scrapy这个强大的爬虫框架,不会用的仁兄可以参考我博客里的教程。这里还要聊一聊爬虫道德问题,一个恶意或有意无意的运行速度极快甚至是多线程的定向爬虫,对网站维护者来说是很蛋疼的。因为这只爬虫占用了非常多的服务器资源,对于一个小型网站来说,很可能就因为这一只虫,造成正常用户无法访问,甚至崩溃,WTF,别问我怎么知道的……说多了都是泪。所以在这倡议一下,做一个文明的Spider

  • 遵守robot协议
  • 设置爬取时延
  • 最好在夜深人静的时候收集数据

虽然我知道我正常爬也不会对极客学院网站造成多大影响,但是我还是恭恭敬敬设置了三秒的爬取时延,即每三秒发一个HTTP请求。

我把能弄到的数据基本上都保存下来了,这次分析只用到了其中的一小部分,即课程时长课程小节数学习人数以及观看权限

github上我提供了我爬好的数据用于分析。


开始分析

分析一

首先我想到的是,课程时间越长,学习的人数越少,使用pandasmatplotlib库绘制出课程时长-学员数散点视图,如下:

这里写图片描述

根据此视图看,学员数与课程时长成近似反比关系,即课程时长越长,学员数越少,与预期相符,但是不乏有异常点的存在,这个我们稍后讨论,先忽略掉异常点,缩小范围,观察一下数据密集的区域:

这里写图片描述

反比关系似乎更明显了,不过更密集的区域还得再进一步缩小范围:

这里写图片描述

从这张图我分析得到以下内容:绝大部分课程学员数在2000以上,我们知道极客学院是有VIP机制的,即很多课程需要有VIP权限才能观看,所以这些观看量2000以上不多的课程,可能就是VIP课程,所以可以判断,极客学院的活跃VIP保持在2000以上。而学员数较密集的区间是[2000,10000],可以推断,大约每五个观看过极客学院视频的学员就有一个购买了VIP,极客学院的课程吸引力不言而喻。

然后回到我们刚才提到的问题,异常值是怎么回事?

在总视图中,有一异常点,课程时长1400分钟(异常的长),观看人数6万人(异常的多),我在数据库中找到此条记录后发现,这个课程包含79小节,每一小节的课时数并不长。所以,是不是小节时长对观看人数的影响更为明显,联系更大呢?我们再进行后续分析。

分析二

仍以学生数作为纵轴,横轴的数据我改为课程时长/课程小节数,即课程小节的平均时长,因为学员观看视频也是一小节一小节的看,所以分析小节时长与学员数的关系,也许更有规律,首先是小节平均时长-学员数散点视图

这里写图片描述

显而易见,大趋势比课程时长-学员数更为清晰,并且可以说,没有出乎意料的数据出现。好像是反比关系。为了让规律更加清晰明显,将范围缩小,查看数据密集区域的散点分布,即小节平均时长-学员数局部散点视图

这里写图片描述

从局部视图来看,密集区域更接近正态分布,而正态分布的期望约是7分钟。所以说,我们可以推断出,在课程质量相近的前提下,网络课将时间定在每小节7分钟更能吸引学员,让学员有耐心听完。


结论

结论君:作为结论我表示很尴尬,请参见上一部分的最后一句加粗的话,那就是我……

后记

果然不喜欢看长课不是我的专利,也果然生活中的现象总是符合正态分布。

这个故事告诉我们,如果我们以后要开网络课的话,最好把一小节的时间控制在7分钟左右,天,我这个抠脚菜鸡在想什么~

最后鸣谢极客学院、慕课网、CSDN等网上教育平台给我们提供了丰富多彩的课程,祝他们越办越好,鸡年大吉!

有钱的捧个钱场~