热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Python分析WordPress官网所有插件的开发者信息

书接上回,上一篇里我们已经把需要的数据爬下来了。众所周知,数据只有在分析出结论的时候才有价值,不能是

前言

书接上回,上一篇里我们已经把需要的数据爬下来了。众所周知,数据只有在分析出结论的时候才有价值,不能是为了爬而爬。

数据分析(Data Analysis)是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。

在数据分析前要找到分析的目标,带着问题去分析,也就是了解前期数据分析的需求。在产品运营过程中,数据分析具有极其重要的战略意义,是产品优化和产品决策的核心大脑。因此做好数据分析,是产品运营中最重要的环节之一。如果 程序员 能有一些数据分析的意识,懂一些数据分析的基本方法,无疑会对自身的职业发展会有很大的帮助。

所以,这一篇里将讲一点很简单的数据分析的方法,看看能不能得出一些有意思的结论。同样的,也是为了提供一种思路和方法。

思路

为什么分析?

首先,你得知道为什么分析?弄清楚此次数据分析的目的。因为我本身也是一个开发者,所以对WordPress插件开发者的情况会天然的比较感兴趣,也想看看国内外一些优秀的插件开发者是谁,在做什么插件。

实际这次的分析纯属个人兴趣,具体这些结论能有什么用,好像也并没有什么卵用。还有一个原因可能是前段时间学了大量的机器学习数据分析方面的知识,如饥似渴的在YouTube上在各种网站上填鸭式学习,脑子塞的满满的,也想通过这次实验一下,看看自己是不是真的理解了,而不是说仅仅是为了学习而学习

需要哪些数据? 如何采集?

数据来源的问题上一篇中已经解决了,不过有一点需要补充一下,是有的插件可能并没有在WordPress.org上发布过,可能就只是在github上或个人网站上提供了一个zip文件,就好比有的手机app并没有在各大应用商店上发布,这种会被遗漏掉,不过无所谓了,这种数据也不好统计到。

数据长什么样子?分析的维度是什么?

在做分析之前,先要简单的观察数据的情况,比如他们的属性个数、属性类别、缺失值情况等等,对数据有个大概的认识。

在上一篇文章中爬取的数据中,我们得到了一个WordPress.org的svn上的所有插件列表,但其实有很多无效数据,有些插件在WordPress.org上已经找不到了,并没有过滤掉,会有很多行这种:

{"error": "Plugin not found."}

要么在把这些行全部删除掉,要么在分析的时候过滤掉,其实完全可以在爬的时候就过滤掉,不管怎么说自己挖的坑还是要自己填,当然,在数据分析的时候这种情况也是经常会出现的,第一步都需要先把无效数据过滤掉。为了后面方便一点,我把这些行直接删除掉了。竟然有24685行 “Plugin not found.”。。。删玩之后还有54421行,这么一算,和官网的插件数量也差不多啊。。。

gsed -i '/"Plugin not found."/d' output.jsonl

然后,还需要对数据结构有一个直观性的了解。有必要把json数据结构展示一下,一个正常插件的完整有效信息包容如下字段和值,基本上都可以望文生义,没有什么特别复杂奇怪的,后面的分析都是基于这些字段进行的:

用 Python 分析WordPress官网所有插件的开发者信息

如何处理数据?

整理数据是门技术活,相关 工具 也特别多,从开源的到各大厂商的都有。不得不承认Excel是个强大工具,很多时候一些简单的数据分析用Excel就可以很快速方便的完成,如果能熟练掌握和使用数据透视表那就更不得了了。我在工作中也经常用Excel,玩的还算挺溜的,用数据透视表做各种维度的运维数据处理和时间进度安排,也能很好的完成工作。不过好像在程序员眼中似乎Office三大套件都挺不受待见的,我以前的一个leader就很不喜欢Excel,搞的我都得偷偷用,真是够够的。不知道有一句话说的好吗,“干活的累死累活,有成果那又如何,到头来干不过写PPT 的”。其实完全没有必要对一些工具带着有色眼镜看,现在我是一个实用主义者,拿来主义者,能用就行,够用就行,曾经我也有程序员中的那种工具癖好,信奉“工欲善其事必先利其器”,光tm磨刀了,什么柴都没砍!题外话了。

本次会用到的是Python的强大的数据分析工具pandas、numpy。这几个库都是大名鼎鼎如雷贯耳的了,只要知道Python的人就算没用过也会多少有所耳闻,相关的书籍和课程也汗牛充栋。初次接触的朋友可以看看下面这几本书和教程,值得系统学习(假设你已经有了一点Python的基础):

  • Python数据分析-基础技术篇
  • 利用Python进行数据分析 (O’Reilly精品图书系列)
  • 深入浅出数据分析
  • 数学之美(第二版) 吴军博士作品 源自谷歌黑板 根植于谷歌方法论 新版增加大数据和机器学习内容 文津图书奖获奖书 央视新闻推荐的学科敲门砖

这些是一些系统性讲解的书,有关更多的类似numpy、pandas数据处理模块的讲解,可以自行查阅官网的文档说明。

如何展现和输出?

数据可视化也是一个学问,是展示数据的一个非常好的手段,如何用合适的图表表现?每一种图表的寓意是什么? 好的图表自己会说话。毋庸多言,在Python的世界里,matplotlib是最著名的绘图库,它支持几乎所有的2D绘图和部分3D绘图,被广泛地应用在科学计算和数据可视化领域。但是介绍matplotlib的中文书籍很少,大部分书籍只是在部分章节中提到了matplotlib的基本用法,因此在内容和深度上都力有不逮。 《Python数据可视化编程实战(第2版)》 则是一本专门介绍matplotlib的译著。70多个方法,轻松入门Python可视化编程。

matplotlib是一个开源项目,由John Hunter发起。关于matplotlib的由来,有一个小故事。John Hunter和他研究癫痫症的同事借助一个专有软件做脑皮层电图分析,但是他所在的实验室只有一份该电图分析软件的许可。他和许多一起工作的同事不得不轮流使用该软件的硬件加密狗。于是,John Hunter便有了开发一个工具来替代当前所使用的软件的想法。当时MATLAB被广泛应用在生物医学界中,John Hunter最初是想开发一个基于MATLAB的版本,但是由于MATLAB的一些限制和不足,加上他本身对Python非常熟悉,于是就有了matplotlib的诞生。创始人John Hunter在12年的时候因为癌症去世了(默哀)

Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形,可以作出非常漂亮的图表,见下图。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。但应强调的是,应该把Seaborn视为matplotlib的补充,而不是替代物。

用Python分析WordPress官网所有插件的开发者信息

以下列举几个常用的8个图表类型和用途:

(1)、折线图:合适用于随时间而变化的连续数据,例如随时间收入变化,及增长率变化。

(2)、柱型图:主要用来表示各组数据之间的差别。主要有二维柱形图、三维柱形图、圆柱图、圆锥图和棱锥图。如支付宝与微信覆盖率差别。

(3)、堆积柱形图:堆积柱形图不仅可以显示同类别中每种数据的大小,还可以显示总量的大小。例如我们需要表示各个支付方式的人数及总人数时。

(4)、线-柱图:这种类型的图不仅可以显示出同类别的比较,还可以显示出趋势情况。

(5)、条形图:类似于横向的柱状图,和柱状图的展示效果相同,主要用于各项类的比较。

(6)、饼图:主要显示各项占比情况。饼图一般慎用,除非占比区别非常明显。因为肉眼对对饼图的占比比例分辨并不直观。而且饼图的项,一般不要超过6项。6项后建议用柱形图更为直观。

(7)、复合饼图:一般是对某项比例的下一步分析。

(8)、母子饼图:可直观地分析项目的组成结构与比重。例如上次短信支付能力用户中,没有第3方支付能力的用户,中间有X%比例是没银行卡,X%比例是没微信支付账号等。

图表不必太花哨,一个表说一个问题就好。用友好的可视化图表,节省阅读者的时间,也是对阅读者的尊重。

有一些数据,辛辛苦苦做了整理和分析,最后发现对结论输出是没有关系的,虽然做了很多工作,但不能为了体现工作量而堆砌数据。

在展现的过程中,请注明数据的来源,时间,指标的说明,公式的算法,不仅体现数据分析的专业度,更是对报告阅读者的尊重。

数据分析

本文为了讲述的清晰一点,每一部分的分析可能都会跑一遍完整的数据获取代码,这会产生一些代码冗余和重复运行,实际上是不优雅的,不过这只是个纯演示性的示例,重要的是能让读者看明白就行了,抛砖引玉。代码的优化和运行效率那就又是另外一个故事了。

下面就开始进入代码的是世界吧!

关于开发者

你谁啊?关于开发者的名字

首先我们看下作者的数量情况,一般来说每个插件都会有作者名字的,但竟然也会有写插件连作者名字都没有。没名字的插件谁知道是什么野路子来的,用户也不敢安装。那我们看看有多少是没有名字的,小试牛刀。判断有没有名字的逻辑很简单,对于没有作者名字的插件,有author这个key,但值为空,这样数据jsonlines文件循环一遍就可以得出了

用Python分析WordPress官网所有插件的开发者信息
用Python分析WordPress官网所有插件的开发者信息

结论:

很明显,即使不用图表也能肉眼看见,99%的WordPress插件都有作者名字。这个饼图其实比较傻也比较丑,没啥必要,仅作演示。

谁的插件最多?关于作者的插件数量

author 这个key来分析作者的插件数量的话,会有个问题,这个key里大部分是html代码形式,还有一部分是直接显示的文本,或者干脆就是空的,就像上面一步看到过的样子,有不少文字处理工作要做。那么我们可以看看另外一个key author_profile , 这个就是开发者在WordPress.og上注册的用户名了,是必须的,也是唯一的,类似这种 https://profiles.wordpress.org/brooksx , 所以我们就用这个做分析吧

首先把所有的 author_profiles 都取出来,放入一个列表。保险起见 author_profile 把都转换 str 的格式,然后去掉其中重复的字段 https://profiles.wordpress.org/ ,这个不去掉也成,主要是为了下面的图表展示时候名字不要那么拥挤

用Python分析WordPress官网所有插件的开发者信息

这个list还是比较大的,有5万多个元素,所以我们把它转成numpy的array。至于为什么这么做,可以参考一下这篇文章 python学习笔记 — python中的list和numpy中的矩阵分析

用Python分析WordPress官网所有插件的开发者信息

下一步,把这个numpy的array扔进pandas里进行分析

用Python分析WordPress官网所有插件的开发者信息

这种形式就相当于一个Excel文件,每行都是一个作者名字,并不能看出什么东西来。因为我们要这一步主要是要统计数量,也就是count,所以,需要把这个DataFrame转换成我们需要的形式,按作者计数。

pandas 的 value_counts() 函数可以对Series里面的每个值进行计数并且排序。value_counts是计数,统计所有非零元素的个数,默认以降序的方式输出Series。如下:

用Python分析WordPress官网所有插件的开发者信息

describe函数(统计计数函数)。describe函数总结数据集分布的中心趋势,分散和形状,不包括NaN值。从下面的结果可以看出来,一共有27289个不重复的开发者,平均每人开发了1.99个插件,最多的开发了93个插件。

用Python分析WordPress官网所有插件的开发者信息

开发者的插件数量分布图

从上面的describe函数的结果可以看出一些平均值等数据,如果想更直观的显示呢,那就可以使用散点图。

散点图也叫 X-Y 图,它将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定。散点图通常用于显示和比较数值,不光可以显示趋势,还能显示数据集群的形状,以及在数据云团中各数据点的关系。

在我们的例子中,只有一个维度,所以使用分类散点图就可以直观的显示出同一作者的插件数量的分步。下图可以看出大部分大部分作者发布的插件数量是1-20个,那些开发了几十个插件的大牛真可以说是WordPress的死忠粉了,质量且不论,光这个数量没有极大的热情和勤奋度那是不可能完成的,当然,某些数量比较多的帐号也有可能是公司化运行的WordPress开发公司使用同一个帐号发布的。

用Python分析WordPress官网所有插件的开发者信息

对于一维数据的可视化,散点图仅适用于数据量较小的情况;当数据量稍大时,散点图就不适用了。

上图可以看到,该散点图虽然可以清晰地表示数据聚集区域(20附近),但由于该区域内数据点太多,导致点的重合度过大,从而难以分辨该区域与其它区域在聚集度上的差异。为了解决这个问题,可以使用直方图(Histogram)。

所谓直方图,就是将数据值所在范围分成若干个区间,然后在图上描画每个区间中数据点的个数。与散点图相比,直方图可以清晰地展示数据聚集区域,以及各区域之间聚集度的差异。

用Python分析WordPress官网所有插件的开发者信息

TOP 10

电影TOP100,金曲10,还有全球小姐,还有年度最美的女人,最性感的男人,各种颁奖典礼,福布斯……全球大学排名……榜单这种形式是经久不衰的,所以下面就看一下WordPress.org上发布插件最多的前10名作者的排行吧

上面已经获得了所有开发者的统计量并 排序 好了,所以只要取前10个数据就可以了 author_count[:10] 。这种图就是最简单的柱状图了。

用Python分析WordPress官网所有插件的开发者信息

下面就是 wordPress.org 上发布的插件数量前10名的作者的链接

name plugins profile website
Peter Shaw 93 https://profiles.wordpress.org/shawfactor https://shawfactor.com/
Scott Reilly 74 https://profiles.wordpress.org/coffee2code http://coffee2code.com/
Algoritmika Ltd 69 https://profiles.wordpress.org/algoritmika https://wpfactory.com
YITH 61 https://profiles.wordpress.org/yithemes https://yithemes.com/
DeMomentSomTres 54 https://profiles.wordpress.org/marcqueralt http://DeMomentSomTres.com
Gopi Ramasamy 54 https://profiles.wordpress.org/gopiplus http://www.gopiplus.com/work/2010/07/18/youtube-with-fancy-zoom/
Access Keys 53 https://profiles.wordpress.org/access-keys https://access-keys.com
WP OnlineSupport 52 https://profiles.wordpress.org/wponlinesupport https://www.wponlinesupport.com
GamiPress 50 https://profiles.wordpress.org/rubengc https://gamipress.com/
BestWebSoft 48 https://profiles.wordpress.org/bestwebsoft https://bestwebsoft.com/

你哪儿的?关于开发者的地域

这一part有点麻烦,就目前的数据集来说,没有区域这个属性,要想获得话,需要进行二次爬取或二次处理,简单想了一下,有几个思路:

  • 根据 https://profiles.wordpress.org 上开发者自己填写的Location来判断,但是不是所有的人都会填写Location
  • 根据开发者的网站的域名信息来判断,但这个也不一定准确,比如有的会隐藏whois信息,有的在国外注册的也不一定就是该国人
  • 根据开发者的网站的服务器ip地址来判断,同上道理,也不准确
  • nlp(自然语言处理)来判断。。。如果名字是中文的就判断为中国的,其他的还真不一定好判断

所以,就是很蛋疼,就不弄了,其实不用什么分析,用脚趾头想想也肯定是英语国家的开发者更多更活跃。。。这里可以看下WordPress的创始人Matt Mullenweg在 2016年WordCamp大会 上分享的一个全球开发者数量分布,

可以看出,欧洲美国一片红啊,WordPress的开发者非常活跃,开源的社区和生态很强大,背靠着WordPress能养活很多中小型开发、咨询公司。中国的开发者也有不少,目测广州深圳的居多。Matt还调侃了一下俄罗斯 “What’s up Russia?”,呵呵

用Python分析WordPress官网所有插件的开发者信息

参考链接

一维数据可视化:直方图(Histogram)

数据分析8个流程与常用7个思路

未完待续

不知不觉又写了这么多长。。。好像也分析出个毛线出来,就算作为一个Python数据分析和数据可视化的的入门介绍吧。下一篇继续分析一下插件的下载量、分类等其他的维度


以上所述就是小编给大家介绍的《用Python分析WordPress官网所有插件的开发者信息》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
author-avatar
enlend_443
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有