十分钟用 Python 绘制了近十年编程语言趋势图
先来个视频体验一下效果,文末还有视频教程
1. 分析
我们需要获取数据,所以第一步需要从tiobe抓取近几年的top编程语言的占比情况,其次存入 csv,最后使用 Python 绘制成表格。
2. 安装包
python3 -m pip install plotly
python3 -m pip install pandas
3. 网页分析
我们进入 https://www.tiobe.com/tiobe-index/ 网站发现他下面有一个趋势图果不其然,我们右键点击查看源文件就能看到他的数据
那么我们就可以使用 request 盘他了,下面是抓取和解析的代码,可以配合 https://regex101.com/ 工具调试正则表达式。
import requests
import re
import os
import csv
url = 'https://www.tiobe.com/tiobe-index/'
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36'
}
f = open('programming.csv', 'w', newline='')
writer = csv.DictWriter(f, ['Programming','Percent','Date'])
writer.writeheader()
response = requests.get(url, headers=headers)
html = response.text
result = ''.join(re.findall(r'series: (.*?)\}\);', html, re.DOTALL))
result = re.findall(r'({.*?})', result, re.DOTALL)
for item in result:name = ''.join(re.findall(r"{name : '(.*?)'", item, re.DOTALL))data = re.findall(r"\[Date.UTC(.*?)\]", item, re.DOTALL)for i in data:i = i.replace(' ', '')i = re.sub(r'[()]', '', i)value = i.split(',')[-1]time_list = i.split(',')[:3]time = ""for index, j in enumerate(time_list):if index !=0:if len(j) == 1:j = '0' + jif index == 0:time += jelse:time += '-' + jtemp = {'Programming': name,'Percent': value,'Date': time}writer.writerow(temp)
f.close()
运行完成以后你就会发现程序目录多了一个文件 programming.csv
这样我们的数据就准备好了
4. 绘图
绘图之前还是需要把文件读取到 Python 程序,这里使用了 pandas 也是非常简单,读取 csv 成功以后,使用 plotly 的 bar 方法来绘图,直接上代码。
import plotly.express as px
import pandas as pd
df = pd.read_csv('programming.csv')
fig = px.bar(df,y="Programming",x="Percent",animation_frame="Date",range_x=[0, df.Percent.max()],orientation='h',text='Percent',color="Programming")
fig.update_layout(width=500,height=400,xaxis_showgrid=False,yaxis_showgrid=False,showlegend=False)
fig.update_xaxes(title_text= "十年编程语言趋势图(微信订阅号:小猿学Python)")
fig.show()
等待1分钟左右,他会自己创建好图自动打开浏览器进入演示,所以你学会了吗?
如果你想看这个教程的视频版,欢迎点击阅读原文查看。
精 彩 文 章
整理一份程序员常用的各类工具、技术站点
如何设计 API 接口,实现统一格式返回?
推荐 5 款好用的开源 Docker 工具
END
来和小伙伴们一起向上生长呀~~~
扫描下方二维码,添加小詹微信,可领取千元大礼包并申请加入 Python学习交流群,群内仅供学术交流,日常互动,如果是想发推文、广告、砍价小程序的敬请绕道!一定记得备注「交流学习」,我会尽快通过好友申请哦!(添加人数较多,请耐心等待)(扫码回复 1024 即可领取IT资料包)
十分钟用 Python 绘制了近十年编程语言趋势图相关推荐
- python分类预测降低准确率_十分钟掌握python机器学习特征选择
十分钟掌握python机器学习特征选择-1.jpg (33.2 KB, 下载次数: 0) 2018-6-26 23:01 上传 在机器学习中,特征选择是实践中的一步, 帮你在所有特征中选择对结果贡献最 ...
- python做客户端适合吗_太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端...
原标题:太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端 作者:Adil Moujahid 编译:kou.Eli 本文转自区块链大本营(ID:blockchai_camp),转载需授权 区 ...
- 类似零基础学python的小说_零基础小白十分钟用Python搭建小说网站!Python真的强!...
零基础小白十分钟用Python搭建小说网站!Python真的强!-1.jpg (128.29 KB, 下载次数: 0) 2018-10-8 18:51 上传 Python 和放大镜的二进制代码 人生苦 ...
- 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
可视化篇(四)--- python绘制双y轴.箱线图.概率分布三种图形及案例 摘要 绘制双y轴图形 绘制箱线图 绘制概率分布图 摘要 本文演示了如何通过python绘制双y轴.箱线图.概率分布三种图形 ...
- 可视化:python绘制多组多维数据雷达图
超过3维的数据用雷达图可以十分直观地展示.本文实践过程中以灰度共生矩阵的4项常用指标为例. python绘制多组多维数据雷达图 所使用的数据如下所示:每一行是一个样本,每个样本有4维特征(列). 封装 ...
- python双坐标轴箱线图,python绘制双y轴、箱线图、概率分布三种图形及案例
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 本文演示了如何通过python绘制双y轴.箱线图.概率分布三种图形,并给出了具体案例源代码供 ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 数据可视化(python)----中国近十年就业GDP对比
前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 中国近十年就业GDP的发展状况 一 二 三 四 总分 一.选题的背景介绍(15分) 为什么要选择该主题?要达到的数据分析目标是什么?从社会 ...
最新文章
- python开发需要掌握哪些知识-Python的8个基础知识点,新手必须背下来!
- 如何让奇异值分解(SVD)变得不“奇异”?
- 2021中超1 1006 xor sum
- Python3 split()分割和 join()合并
- Git 忽略提交 .gitignore
- struts 2 配置通配符
- base64_encode() 和 base64_decode() 8bit图片通过网络传输
- Back to back销售订单和drop ship第三方销售订单的销售成本的问题
- Windows 7 测试体验
- 平面向量内积坐标公式推导_平面向量内积的坐标运算与距离公式
- element 刷新
- 爱德华·琼斯(Edward Jones)公司
- excel查找出不来了_Excel查找全部,如何把查找出来内容全部复制?
- 大数据-NoSQL数据库:HBase【基于Zookeeper/HDFS的分布式、高并发、可扩展的NoSQL数据库;支持“十亿行”ד百万列”海量数据的实时随机读写;仅支持单表查询;不擅长数据分析】
- 红外线遥控旋转LED钟_QQ电子网--电子行业资讯|电子基础知识|电子视频教程|电子技术教... (转载)
- Tableau培训学习笔记3:空间数据分析——科比投篮以及新冠肺炎分析(带数据)
- php 限制字数_php 限制字数用法
- 动手实现简易网站目录扫描器(桌面窗口版)——WebScannerTkl
- Android DDMS如何使用
- STM32中的WFI和WFE指令的意思
热门文章
- 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError No module named _ctypes 的解决办法
- 自己做的压测实例(亲测)
- php5中Xdebug配置安装步骤介绍
- Go操作mysql实现增删改查及连接池
- 有用过PHP SPL的吗,不知道这主要用来干嘛
- uniapp的目录结构反思与整理 app.vue【base】pages.json【配置】main.json【框架入口文件】
- php中如何让这段东西不显示出来,数据显示处理,该怎么处理
- PHP45个方便的工具
- git按照tag拉取代码_Git实操小课堂
- html5 居中 字体 字号,css字体水平居中