用Python分析5万+个WordPress插件

简介: 哪些WordPress插件的下载量最大?下载量和哪些因素有关系?本文用Python分析了所有WordPress插件并得出一些结论。

转自丘壑博客 转自注明出处

在之前的文章中,我们已经把WordPress.org上的所有插件信息爬取下来,并分析了一些关于插件开发者的结论。本次是针对是插件的信息做一些简单分析。

分析插件的维度也有不少,比如下载量、安装量、tag/分类,甚至代码本身。针对每个维度也能提出一些有意思的问题角度。

总下载量是多少?下载量前十名是哪些?哪些分类的插件量下载量比较大?下载量和评分、插件描述文字之间是不是有什么关系?哪些插件是版本帝,版本更新比较快?这些都可以是一些角度,虽然未必有什么实际意义,也算是“Just for fun” 吧。

关于代码本身的分析,国外也有比较专业的网站和团队在做,比如有专门做WordPress插件的安全分析的团队 WPWhiteSecurity.com , 也有专门分析一个网站所使用的各种插件、技术栈的专业团队。总之,可以分析的内容是很多的。本次仅做一些简单的分析,也是抛砖引玉。

关于插件下载量

插件下载量总览

一碗米饭总共有多少粒米?这个总和数据的参考意义其实不大。同理,所有插件的所有历史下载量总和,只能算一个比较好玩的数据,可以作为一个WordPress市场份额的感性指标。这个数据很好计算,直接使用 pandas.DataFrame.sum 即可,sum会返回指定轴上值的和.

pandas.DataFrame.sum

简单加总一下可以看到,WordPress的插件被下载了将近30亿次,天文数字。作为一个参照,可以看下WordPress各个版本的下载总量:1478295868 ,14亿次

WordPress各个版本的历史下载量

召唤出老朋友describe查看之后,可以清晰的看出,总共54421个插件,每个插件的平均下载次数为53,849次,最少的为0次,最多的为1.5亿次,WordPress的插件下载量还是非常活跃的。

下载量Top 10的插件

获取下载量的排行,可以直接用nlargest来进行排序。nlargest()的优点就是能一次看到最大的几行,而且不需要排序,索引还是按照之前的索引。

pandas.DataFrame.nlargest 下载最多的WordPress插件

前10个里面有两个是SEO相关的,互联网上在流量获取成本越来越高,看来SEO确实还是刚需;还有著名的电商插件WooCommerce,可见WordPress也在CMS之外成为了中小企业自建电商平台的主要选择。下面就是插件下载量前十名的列表,都是明星插件,没用过的也基本都听过,耳熟能详的了

Yoast SEO 最强大最全能的最专业的SEO插件

Akismet Anti-Spam 是WordPress默认安装的插件,目标是帮助网站来过滤垃圾留言

Jetpack by WordPress.com 是WORDPRESS.com官方出品的怪兽级插件,这个插件里面集成了30个左右的网站常用的辅助功能

Wordfence Security – Firewall & Malware Scan最强WordPress安全插件

Contact Form 7 史上最受欢迎的WordPress表单插件

WooCommerce WordPress上的电子商务插件之王 , 电子商务世界的皇冠上的宝石,

All in One SEO Pack 不输Yoast的SEO利器

Google Analytics Dashboard Plugin for WordPress by MonsterInsights只需点击几下即可启用所有高级Google分析跟踪功能

WP Super Cache 是WordPress 官方开发人员Donncha 开发,是当前最高效也是最灵活的WordPress 静态缓存插件。

WordPress Importer 官方产品的WorPress数据导入插件

下载量的区间分布

我们的数据文件中,下载量是精确到个位的,其实有时候并不需要这么精细的粒度,比如在分类汇总的时候就可以使用更粗的粒度。下面来看看插件下载量的区间分布,把具体的下载量的数据分个等级,拉平到一个居间内,看看0-1000的有多少,1000-10000之间的有多少等等。

一种方式是把下载量都除以10,用倍数来划分区间,比较麻烦

最方便的方式就是直接使用对数函数,然后把对数值向下取整,就是各自的区间了。主要用到以下几个函数:

np.floor 返回不大于输入参数的最大整数。 即对于输入值 x ,将返回最大的整数 i ,使得 i <= x。 注意在Python中,向下取整总是从 0 舍入。

np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数 。numpy的强大之处是可以直接对数组的所有元素进行计算。

这里有一个地方需要注意下,有的插件的下载量是0,根据对数的定义:

如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数,记作x=logaN。其中,a叫做对数的底数,N叫做真数。

0没有对数,在numpy中取0的对数,会得到-inf(Infinity(无穷大))那么处理办法也有几种:

  • 删除相关数据:如果不影响整体数据分析,可以考虑去除相应行和列,直接把下载量为0的排除掉。
  • 数值替换:
    • 事先替换:把零值替换成为一个“非常小的非零值”再取对数
    • 事后替换:先把所有数据都取对数,然后把-inf全部替换为0

每种方法的代码略有不同,这里我采用的是事先删除的方式,因为下载为零的插件只有几个而已,并不影响分析。下面是具体代码:

基于range这个数据,可以很方便的把插件按下载量几个档次:个、十、百、千、万、十万、百万、千万、亿。按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万多个插件的下载量是很不平均,这也是很正常的,取决于很多方面的因素,比如功能是不是刚需、代码质量、营销推广、技术支持等等因素,也有正规军和业余爱好者之分。这些都是一些不好量化的东西,不过也有一些数据可以结合起来看看,是不是会对下载量有一定的影响,比如可以把这几个数据取出来一起分析:

  • “rating”:数值类型,插件的评分
  • “num_ratings”:数值类型, 评分的人数
  • “support_threads”: 数值类型,该插件在WordPress.org上的用户求助帖子数量
  • “support_threads_resolved”: 数值类型,用户的帖子被解决的数量
  • "description":字符串类型,插件的描述文字,这个描述的字数作为数值其实也可以作为一个指标

评分还有更新的指标,比如打5星的多少人,打4星的多少人等等,为了简化一点,评分只取一个打分人数即可,这个基本能反映出用户的反馈度;同样的原理,帖子也只取一个问题解决数量即可,这个能反映出开发者对用户问题的技术支持的响应度。所以,一共有四个维度:下载量、打分数、问题解决数、描述文字字数。这些维度各自之间的数据量级差别太大,从0到亿都有,直接拿来做图基本上什么都看不到,所以全部把他们都取对数,缩小到同一个刻度。那么这四个数据之间有什么关系呢?具体请看代码和图表:

下载量、打分数、问题解决数、描述文字字数的两两关系

这是一个信息量极大的散点图矩阵,一行简单的代码就能够让我们得到整个图,令人惊叹。还可以根据需要再做进一步的美化和调整,具体可以参考这篇文章:如何利用散点图矩阵进行数据可视化

散点图矩阵会构建两种基本图形:直方图和散点图。位于对角线位置的直方图让我们看到了每一个变量的分布,而对角线上下的散点图则展示了变量两两之间的关系。例如,第一列几个散点图就展示了 下载量(downloaded) 和 评分数、问题解决数、描述字数 之间的关系。可以看出下载量越大的插件打分人数越高、问题解决数也较高,而插件描述字数和下载量之间就看不出什么特别明显的关系,也有下载量很高但描述很少的,也有描述文字写的很多但下载量寥寥的。

关于插件分类

最后,看一下插件的分类的情况。WordPress的插件没有明确的用途目录分类,使用的是tag机制,是一种比较松散的内容分类方式,有好处也有不方便之处。

每个插件都有可以有很多个tag,为了统计每个tag的总下载量,需要做一下数据结构的转换,代码如下:

从各个TAG的下载总量和插件数量可以看出来SEO、性能、安全、备份、电商、内容建设等等是最大的刚需。下一次,将就这几方面做一些优秀插件的推荐,敬请期待!

Filed Under: 代码

Reader Interactions

目录
相关文章
|
5天前
|
数据可视化 数据挖掘 Python
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(下)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
12 0
|
5天前
|
数据可视化 API 开发者
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(上)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
16 0
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】金融数据分析中的机器学习应用
【4月更文挑战第30天】本文探讨了机器学习在金融数据分析中的应用,如股价预测、信用评分、欺诈检测、算法交易和风险管理,并以Python为例展示了如何进行股价预测。通过使用机器学习模型,金融机构能更准确地评估风险、识别欺诈行为并优化交易策略。Python结合scikit-learn库简化了数据分析过程,助力金融从业者提高决策效率。随着技术发展,机器学习在金融领域的影响力将持续增强。
|
4天前
|
机器学习/深度学习 Python
【Python 机器学习专栏】混淆矩阵与 ROC 曲线分析
【4月更文挑战第30天】本文介绍了机器学习中评估模型性能的两种工具——混淆矩阵和ROC曲线。混淆矩阵显示了模型在不同类别上的预测情况,包括真正例、假正例、真反例和假反例,帮助评估模型错误类型和数量。ROC曲线则通过假正率和真正率展示了模型的二分类性能,曲线越接近左上角,性能越好。文章还提供了Python中计算混淆矩阵和ROC曲线的代码示例,强调它们在模型选择、参数调整和理解模型行为中的应用价值。
|
4天前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
17 1
|
4天前
|
机器学习/深度学习 存储 数据采集
【Python 机器学习专栏】PCA(主成分分析)在数据降维中的应用
【4月更文挑战第30天】本文探讨了主成分分析(PCA)在高维数据降维中的应用。PCA通过线性变换找到最大化方差的主成分,从而降低数据维度,简化存储和计算,同时去除噪声。文章介绍了PCA的基本原理、步骤,强调了PCA在数据降维、可视化和特征提取上的优势,并提供了Python实现示例。PCA广泛应用在图像压缩、机器学习和数据分析等领域,但降维后可能损失解释性,需注意选择合适主成分数量及数据预处理。
|
4天前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
10 0
|
4天前
|
自然语言处理 数据可视化 数据挖掘
数据代码分享|Python对全球Covid-19疫情失业数据相关性、可视化分析
数据代码分享|Python对全球Covid-19疫情失业数据相关性、可视化分析
10 0
|
4天前
|
资源调度 数据可视化 Python
Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数时间数据波动性可视化
Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数时间数据波动性可视化
12 0
|
5天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化