2017 Python 问卷调查结果初步分析
Note:本文在我的个人站点同步发布:2017 Python 问卷调查结果初步分析 · Lee’s Space Station,无广告,体验更好。
未经授权,禁止转载。
前言
2017 年末,PSF(Python Software Foundation,Python 软件基金会)和 JetBrains 一起进行了一次全球范围内的关于 Python 使用情况的问卷调查,共有来自 153 个国家的 9506 名开发者参与了这次调查,官方也发布了一份调查报告分析。
这次我从我自己感兴趣的角度来尝试做一些简单的分析,也是一次练手。这个过程断断续续持续了很长时间,中间也是被种种事情打断,现在终于基本完成了,然而还有很多东西可以分析,等以后有时间了再来接着分析。
我个人认为调查报告的分析主要有两点:
- 验证一些常理
- 发现一些现象
本文基本只做到了前者,而且侧重于直接展现分析结果(大多数为图),具体的代码实现见 analyzing-python-survey-2017.ipynb,GitHub 上的内容见 secsilm/analyzing-python-survey-2017,包括问卷调查的内容(PDF)和调查结果原始数据(CSV)。
数据
我认为拿到数据的第一步就是先看下数据长什么样,这样才能着手分析。先来看下我们的调查结果数据:
数据总大小是 9506×162,即 9506 行 162 列,上图是前 5 行,每行代表一个样本,即一个参与调查的开发者。可以看到已经将一道选择题的答案拆分成多列,这一般是用于处理多选题,例如上图中的「What other language(s) do you use?」,而单选题则不用拆分,可以直接写答案,例如上图第一列。
问题
分析前,我们需要首先提出一些问题,基于这些问题来作分析。本文提出了以下几个问题:
- 开发者中使用 Python 2 和 Python 3 的情况
- 做数据分析和机器学习的人中分别有多少人使用的是 Python 3?
- 常用框架中使用 Python 2 和 Python 3 的比例
- 做数据分析和机器学习的人常用的框架?
- 团队规模大小和是否使用 Python 3 的关系?
- 开发者年龄和是否使用 Python 3 的关系?
- 使用 Python 3 和 Python 2 的开发者的国别分布?
下面我们依次看下这几个问题。
开发者中使用 Python 2 和 Python 3 的情况
这个问题比较好解决,调查问卷中的问题 5 是「Which version of Python do you use the most?」,而且是单选题,那么我们直接那么对这列使用 value_counts()
进行处理,然后使用 plt.pie()
绘制饼图:
可以看到 Python 开发者中已经有 3434\frac{3}{4} 的人在使用 Python 3 了。
Note:2020 年 Python 2 就会停止维护,如果你还在纠结使用 Python 2 还是 Python 3,毋庸置疑 Python 3!
做数据分析和机器学习的人中分别有多少人使用的是 Python 3
调查问卷中问题 4 是「What do you use Python for the most?」,这是一道单选题,选项中有「Data analysis」和「Machine learning」两项,因此我们可以直接将这列与「Which version of Python do you use the most?」列进行交叉,就可以得到数据分析和机器学习中使用 Python 3 的比例,而交叉可以使用 pd.crosstab()
来做,然后绘制出条形图:
可以看到其实相差无几,Python 3 似乎在机器学习中更为流行。数据分析和机器学习中涉及到的字符串处理比较多,而 Python 3 在这方面显然更具有优势。
机器学习尤其是深度学习中最常用的库就是 TensorFlow 了,但是这个库官方只支持 Python 3,可以说这也是机器学习中 Python 3 的比例略微高于数据分析的一个原因。
常用框架中使用 Python 2 和 Python 3 的比例
如果我们将开发者常用的框架(库)与所使用的 Python 版本进行交叉,那么将得到各框架中的 Python 2 和 Python 3 使用情况。
在这之前,让我们先来看下框架使用排行(Just for curious ?):
统治 Python 的两大阵营(Web 开发和数据科学)的框架果然占据了前两名 ?
好了回到正题,让我们来看下各框架中的 Python 2 和 Python 3 使用情况:
上图是按照 Python 3 的使用比例由高到低排序的,可以看到排名前五的都是网络和 UI 相关的库,排名第一的 aiohttp Python 2 与 Python 3 的比例甚至达到了 1:9 ? 由于我本人对这方面不太了解,就不做过多评价了,如有懂得同学可以留言解释下为何网络和 UI 方面的库中 Python 3 的占比如此高。
不过总体上来说,各大框架中 Python 3 的使用比例都已经超过甚至远超 Python 2 ?
做数据分析和机器学习的人常用的框架
接着上面,我们可以将框架使用情况与 Python 在数据分析和机器学习方面的应用进行交叉,得到数据分析和机器学习开发者最常用的框架:
可以看到数据分析和机器学习开发者所用的框架大体相同,数据分析开发者人数要多于机器学习开发者,但是由于机器学习开发者更常用 Keras、scikit-learn 和 TensorFlow 等框架,反而使用这些框架上的机器学习和数据分析开发者人数基本一致。
乍一看让我有点意外的是 Django 和 Flask 的位置,相对来说这两个用于构建网站的框架排名还是很靠前的,但是仔细一想,我见过很多数据分析和机器学习开发者做一个网站来展示自己的作品,这样一来也不足为奇了。又或者是 Web 开发者兼职数据分析和机器学习?细思极恐……
团队规模大小和是否使用 Python 3 的关系
一般来说,团队规模越大,由 Python 2 转型 Python 3 所花费的代价就越大,所以团队规模越大使用 Python 3 的比例可能就会越低,而下图也印证了这一点。
但是需要注意的是,有将近 62% 的人是独立开发或者是外部顾问(external consultant)和培训讲师(trainer),也就是说不在一个团队中进行工作。上图就是基于剩下的约 38% 的开发者来绘制的。
开发者年龄和是否使用 Python 3 的关系
同上,越年轻使用 Python 3 的比例就越高,毕竟年轻人「情怀」比较少 ?
BUT,物极必反,60 岁以上的开发者使用 Python 3 的比例陡然提升了 10%……难道回光返照?
60 岁以上还在 coding 的人应该不多,我们来统计下每个国家内 60 岁以上的开发者人数,然后排名取前十名:
几乎是美国一家独大,后面的几乎可以忽略不计,所有 153 个国家的 60 岁以上开发者人数为 111,而美国为 56,占到了一半,而这 56 个人中有 41 个人使用的是 Python 3,占比约为 73%,so,上面的疑问也就不是疑问了。
此外,我们来看下开发者人数最多的三个国家(美国、印度和中国)的开发者年龄构成:
结合国内程序圈的情况,大家都想着 30 以后要不转要不升,上图也不足为奇,美国的年龄分布相对来说要好很多。
使用 Python 3 和 Python 2 的开发者的国别分布
首先来看下所有开发者的国别分布:
美国、印度和中国排名前三,上一节的年龄分布图选取的三个国家就是就是根据这个排名取的。
再来看下上图排名前十的国家中的 Python 2 和 Python 3 的使用比例:
其实使用比例是差不多的,都是 Python 3 远超 Python 2,这一点也可以用下图佐证:
我们有了国家信息,那么自然而然就会想到直接在地图上显示数据:
在这里查看有更好的交互式体验
总结
可以看到的趋势是:
- Python 3 已经被大多数人使用,无论是 Web 开发还是数据科学(数据分析和机器学习),无论是美国还是中国还是其他国家
- Web 开发和数据科学是 Python 开发的两大统治者
- 数据分析和机器学习开发者使用的 Python 框架有很大的相似性,只是在 TensorFlow 等机器学习框架上的使用有一定区别
- 年龄和团队规模和使用 Python 3 的比例有一定关系
- 美国的开发者年龄分布要好于中国
总的来说,本文所分析的内容只能说是冰山一角,还有大量内容可以分析,但是时间精力有限,后续可能的话再在此基础上加以分析。
END
2017 Python 问卷调查结果初步分析相关推荐
- ‘在路上’问卷调查结果与分析
为了收集数据通过这一次的调查问卷,以前只填过调查问卷,没想到自己也能做,很新鲜,但很辛苦.....从问卷设计到问卷发放,再到问卷分析,直到最后的总结.报告,每一步都很复杂. 本来以为设计问题很简单,也 ...
- 【2017年第3期】大数据服务三农的初步分析与探索
孙忠富, 褚金翔, 马浚诚, 杜克明, 郑飞翔 中国农业科学院农业环境与可持续发展研究所,北京 100081 摘要:三农问题是当前中国密切关注的社会问题,大数据技术的发展为三农带来了新的机遇.首先,对 ...
- Python数据分析系列之——王一博微博转发量分析1 数据说明2 粉丝结构初步分析3 粉丝画像最后的话
首先说明一下本人不是王一博粉丝,也不讨厌王一博,只是最近在学习python数据分析,就随便找了一条微博转发量来分析一下,只是刚好抽中了王一博哈~ 但是有些时候的确令人疑惑,为什么wyb随随便便发一条微 ...
- Python爬虫笔记——分析AJAX传递的JSON获取数据-初步分析动态网页
转载文章链接: Python爬虫:分析AJAX传递的JSON获取数据-初步分析动态网页(1) [4]实战:爬取动态网页的两种思路爬取新浪趣图(1) [5]实战:爬取动态网页的两种思路爬取新浪趣图(2) ...
- python分态密度图_学术干货丨能带结构和态密度图的绘制及初步分析
[能带结构绘图和初步分析] 1.1能带简介 在形成分子时,原子轨道构成具有分立能级的分子轨道.晶体是由大量的原子有序堆积而成的.由原子轨道所构成的分子轨道的数量非常之大,以至于可以将所形成的分子轨道的 ...
- 连享会-Python爬虫与文本分析专题 (2019.5.17-19)
连享会-Python爬虫与文本分析专题研讨班 文章目录 连享会-Python爬虫与文本分析专题研讨班 1. 课程概览 2. 嘉宾简介 3. 授课内容 3.1 课程介绍 为什么要学爬虫和文本分析? 为什 ...
- GitLab公布关于开发者趋势的问卷调查结果
GitLab公布了一项问卷调查结果,这个结果是基于他们在7月6日到7月27日期间对362家初创公司的软件开发人员进行问卷调查得出的.主要的调查结果显示,开发人员倾向于使用最新的开发工具,并希望有更多的 ...
- python如何读dat数据_如何用Python进行数据质量分析
概述 数据挖掘的第一步工作是数据准备,而数据准备的第一步就是数据质量分析了.本篇文章着重介绍如何使用Python进行数据质量分析的初步工作,属于比较基础的入门教程. 为什么要进行数据质量分析 根据百度 ...
- python 计算当月天数_告诉你怎么用Python进行企业营运分析!盈利这么多?
告诉你怎么用Python进行企业营运分析 内容导入: 大家好,这里是每天财务转一转.Python的应用领域现在非常的广泛,随着会计与财务智能化的步伐加快,Python数据分析在财务分析与投资决策中会占 ...
最新文章
- hi3559 h264
- qt designer 插入图片_高清免版权免费图片素材哪里找?
- BZOJ 2342 [Shoi2011]双倍回文(manacher+并查集)
- 进阶:案例六: Context Menu(静态 与 动态)
- 最大信息熵增益_机器学习笔记(三)——搞懂决策树必备的信息增益
- [云炬创业基础笔记]第九章企业的法律形态测试6
- linux文件的特殊权限,Linux系统文件的默认权限和特殊权限
- 080929 气温骤降
- 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)...
- MySQL双主io线程起不来_解决master and slave have equal MySQL server UUIDs导致Slave_IO_thread起不来问题...
- Java旧版不断发展
- 西瓜书机器学习总结(一)
- 要想深入理解mysql索引?这16个点你必须要了解!
- linux为mysql用户授权,Linux环境 Mysql新建用户和数据库并授权
- 【JS 笔记】比较操作符之大小与记录
- BAT频繁与移动医疗挂钩 预示行业即将爆发?
- android之普通蓝牙通信
- 使用阿里云邮件推送服务架设自己邮件验证与推送体系
- 富士康计算机主板官网,富士康主板官网?富士康主板刷bios工具?foxconn主板官网?富士康主板怎么样...
- STM32学习(电容触摸按键)
热门文章
- 云会议是什么?如何提升云会议的协同能力?
- linux 误删除根分区的pv,如何安全的删除Linux LVM中的PV物理卷(硬盘或分区)(4)
- BUUCTF pwn 安洵杯_2018_neko
- 多米诺骨牌上演:三箭资本崩盘始末
- vs怎么配置c语言codemac,在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)...
- 51单片机实现用一个定时器输出可调PWM
- 机器学习中的L1和L2正则化项
- 【渝粤题库】陕西师范大学201511先秦历史散文研究 作业(专升本)
- GDR(Gradual Decoder Refresh)帧
- mysql 按日期分组求和