转自丘壑博客,转载注明出处数组
bestscreenshot.com/data-analys…在以前的文章中,咱们已经把WordPress.org上的全部插件信息爬取下来,并分析了一些关于插件开发者的结论。本次是针对是插件的信息作一些简单分析。安全
分析插件的维度也有很多,好比下载量、安装量、tag/分类,甚至代码自己。针对每一个维度也能提出一些有意思的问题角度。数据结构
总下载量是多少?下载量前十名是哪些?哪些分类的插件量下载量比较大?下载量和评分、插件描述文字之间是否是有什么关系?哪些插件是版本帝,版本更新比较快?这些均可以是一些角度,虽然未必有什么实际意义,也算是“Just for fun” 吧。wordpress
关于代码自己的分析,国外也有比较专业的网站和团队在作,好比有专门作WordPress插件的安全分析的团队 WPWhiteSecurity.com , 也有专门分析一个网站所使用的各类插件、技术栈的专业团队。总之,能够分析的内容是不少的。本次仅作一些简单的分析,也是抛砖引玉。函数
一碗米饭总共有多少粒米?这个总和数据的参考意义其实不大。同理,全部插件的全部历史下载量总和,只能算一个比较好玩的数据,能够做为一个WordPress市场份额的感性指标。这个数据很好计算,直接使用 pandas.DataFrame.sum 便可,sum会返回指定轴上值的和.性能
简单加总一下能够看到,WordPress的插件被下载了将近30亿次,天文数字。做为一个参照,能够看下WordPress各个版本的下载总量:1478295868 ,14亿次网站
召唤出老朋友describe查看以后,能够清晰的看出,总共54421个插件,每一个插件的平均下载次数为53,849次,最少的为0次,最多的为1.5亿次,WordPress的插件下载量仍是很是活跃的。google
获取下载量的排行,能够直接用nlargest来进行排序。nlargest()的优势就是能一次看到最大的几行,并且不须要排序,索引仍是按照以前的索引。lua
前10个里面有两个是SEO相关的,互联网上在流量获取成本愈来愈高,看来SEO确实仍是刚需;还有著名的电商插件WooCommerce,可见WordPress也在CMS以外成为了中小企业自建电商平台的主要选择。下面就是插件下载量前十名的列表,都是明星插件,没用过的也基本都听过,耳熟能详的了插件
Wordfence Security – Firewall & Malware Scan
Google Analytics Dashboard Plugin for WordPress by MonsterInsights
咱们的数据文件中,下载量是精确到个位的,其实有时候并不须要这么精细的粒度,好比在分类汇总的时候就可使用更粗的粒度。下面来看看插件下载量的区间分布,把具体的下载量的数据分个等级,拉平到一个居间内,看看0-1000的有多少,1000-10000之间的有多少等等。
一种方式是把下载量都除以10,用倍数来划分区间,比较麻烦
最方便的方式就是直接使用对数函数,而后把对数值向下取整,就是各自的区间了。主要用到如下几个函数:
np.floor 返回不大于输入参数的最大整数。 即对于输入值 x ,将返回最大的整数 i ,使得 i <= x。 注意在Python中,向下取整老是从 0 舍入。
np.log(a) np.log10(a) np.log2(a) : 计算各元素的天然对数、十、2为底的对数 。numpy的强大之处是能够直接对数组的全部元素进行计算。
这里有一个地方须要注意下,有的插件的下载量是0,根据对数的定义:
若是a的x次方等于N(a>0,且a不等于1),那么数x叫作以a为底N的对数,记做x=logaN。其中,a叫作对数的底数,N叫作真数。
0没有对数,在numpy中取0的对数,会获得-inf
(Infinity(无穷大))那么处理办法也有几种:
-inf
所有替换为0每种方法的代码略有不一样,这里我采用的是事先删除的方式,由于下载为零的插件只有几个而已,并不影响分析。下面是具体代码:
基于range这个数据,能够很方便的把插件按下载量几个档次:个、10、百、千、万、十万、百万、千万、亿。按range汇总看下每一个档次的插件有多少个:
肉眼能够看出,数量最多的一档几种在range 3,也就是1,000-10,000 这一档。能到达7(千万级)、8(亿级)这两个级别的实属百里挑一。
进一步看一下,range 4(万级)以上的插件数量总共占了多少呢?
看出什么来了吗?典型的二八法则啊!20%的插件占了总下载量的97% !
帕累托法则(英语:Pareto principle,也被称为 80/20 法则、关键少数法则、八二法则)[1] 指出,约仅有20%的变因操纵着80%的局面。也就是说:全部变量中,最重要的仅有20%,虽然剩余的80%占了多数,控制的范围却远低于“关键的少数”
还能够看出一个结论,下载量在range 5(十万级)的插件总数占了4%,也就是说能进入十万级俱乐部已经算是很成功的插件了。
上面咱们看到了一些插件下载量的整体概览,旱的旱死,涝的涝死,5万多个插件的下载量是很不平均,这也是很正常的,取决于不少方面的因素,好比功能是否是刚需、代码质量、营销推广、技术支持等等因素,也有正规军和业余爱好者之分。这些都是一些很差量化的东西,不过也有一些数据能够结合起来看看,是否是会对下载量有必定的影响,好比能够把这几个数据取出来一块儿分析:
"description":
字符串类型,插件的描述文字,这个描述的字数做为数值其实也能够做为一个指标评分还有更新的指标,好比打5星的多少人,打4星的多少人等等,为了简化一点,评分只取一个打分人数便可,这个基本能反映出用户的反馈度;一样的原理,帖子也只取一个问题解决数量便可,这个能反映出开发者对用户问题的技术支持的响应度。因此,一共有四个维度:下载量、打分数、问题解决数、描述文字字数。这些维度各自之间的数据量级差异太大,从0到亿都有,直接拿来作图基本上什么都看不到,因此所有把他们都取对数,缩小到同一个刻度。那么这四个数据之间有什么关系呢?具体请看代码和图表:
这是一个信息量极大的散点图矩阵,一行简单的代码就可以让咱们获得整个图,使人惊叹。还能够根据须要再作进一步的美化和调整,具体能够参考这篇文章:如何利用散点图矩阵进行数据可视化
散点图矩阵会构建两种基本图形:直方图和散点图。位于对角线位置的直方图让咱们看到了每个变量的分布,而对角线上下的散点图则展现了变量两两之间的关系。例如,第一列几个散点图就展现了 下载量(downloaded) 和 评分数、问题解决数、描述字数 之间的关系。能够看出下载量越大的插件打分人数越高、问题解决数也较高,而插件描述字数和下载量之间就看不出什么特别明显的关系,也有下载量很高但描述不多的,也有描述文字写的不少但下载量寥寥的。
最后,看一下插件的分类的状况。WordPress的插件没有明确的用途目录分类,使用的是tag机制,是一种比较松散的内容分类方式,有好处也有不方便之处。
每一个插件都有能够有不少个tag,为了统计每一个tag的总下载量,须要作一下数据结构的转换,代码以下:
从各个TAG的下载总量和插件数量能够看出来SEO、性能、安全、备份、电商、内容建设等等是最大的刚需。下一次,将就这几方面作一些优秀插件的推荐,敬请期待!