先来个视频体验一下效果,文末还有视频教程

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 绘制了近十年编程语言趋势图相关推荐

  1. python分类预测降低准确率_十分钟掌握python机器学习特征选择

    十分钟掌握python机器学习特征选择-1.jpg (33.2 KB, 下载次数: 0) 2018-6-26 23:01 上传 在机器学习中,特征选择是实践中的一步, 帮你在所有特征中选择对结果贡献最 ...

  2. python做客户端适合吗_太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端...

    原标题:太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端 作者:Adil Moujahid 编译:kou.Eli 本文转自区块链大本营(ID:blockchai_camp),转载需授权 区 ...

  3. 类似零基础学python的小说_零基础小白十分钟用Python搭建小说网站!Python真的强!...

    零基础小白十分钟用Python搭建小说网站!Python真的强!-1.jpg (128.29 KB, 下载次数: 0) 2018-10-8 18:51 上传 Python 和放大镜的二进制代码 人生苦 ...

  4. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例

    可视化篇(四)--- python绘制双y轴.箱线图.概率分布三种图形及案例 摘要 绘制双y轴图形 绘制箱线图 绘制概率分布图 摘要 本文演示了如何通过python绘制双y轴.箱线图.概率分布三种图形 ...

  5. 可视化:python绘制多组多维数据雷达图

    超过3维的数据用雷达图可以十分直观地展示.本文实践过程中以灰度共生矩阵的4项常用指标为例. python绘制多组多维数据雷达图 所使用的数据如下所示:每一行是一个样本,每个样本有4维特征(列). 封装 ...

  6. python双坐标轴箱线图,python绘制双y轴、箱线图、概率分布三种图形及案例

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 本文演示了如何通过python绘制双y轴.箱线图.概率分布三种图形,并给出了具体案例源代码供 ...

  7. 快速入门:十分钟学会Python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

  8. python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

  9. 数据可视化(python)----中国近十年就业GDP对比

    前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 中国近十年就业GDP的发展状况 一 二 三 四 总分 一.选题的背景介绍(15分) 为什么要选择该主题?要达到的数据分析目标是什么?从社会 ...

最新文章

  1. python开发需要掌握哪些知识-Python的8个基础知识点,新手必须背下来!
  2. 如何让奇异值分解(SVD)变得不“奇异”?
  3. 2021中超1 1006 xor sum
  4. Python3 split()分割和 join()合并
  5. Git 忽略提交 .gitignore
  6. struts 2 配置通配符
  7. base64_encode() 和 base64_decode() 8bit图片通过网络传输
  8. Back to back销售订单和drop ship第三方销售订单的销售成本的问题
  9. Windows 7 测试体验
  10. 平面向量内积坐标公式推导_平面向量内积的坐标运算与距离公式
  11. element 刷新
  12. 爱德华·琼斯(Edward Jones)公司
  13. excel查找出不来了_Excel查找全部,如何把查找出来内容全部复制?
  14. 大数据-NoSQL数据库:HBase【基于Zookeeper/HDFS的分布式、高并发、可扩展的NoSQL数据库;支持“十亿行”ד百万列”海量数据的实时随机读写;仅支持单表查询;不擅长数据分析】
  15. 红外线遥控旋转LED钟_QQ电子网--电子行业资讯|电子基础知识|电子视频教程|电子技术教... (转载)
  16. Tableau培训学习笔记3:空间数据分析——科比投篮以及新冠肺炎分析(带数据)
  17. php 限制字数_php 限制字数用法
  18. 动手实现简易网站目录扫描器(桌面窗口版)——WebScannerTkl
  19. Android DDMS如何使用
  20. STM32中的WFI和WFE指令的意思

热门文章

  1. 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError No module named _ctypes 的解决办法
  2. 自己做的压测实例(亲测)
  3. php5中Xdebug配置安装步骤介绍
  4. Go操作mysql实现增删改查及连接池
  5. 有用过PHP SPL的吗,不知道这主要用来干嘛
  6. uniapp的目录结构反思与整理 app.vue【base】pages.json【配置】main.json【框架入口文件】
  7. php中如何让这段东西不显示出来,数据显示处理,该怎么处理
  8. PHP45个方便的工具
  9. git按照tag拉取代码_Git实操小课堂
  10. html5 居中 字体 字号,css字体水平居中