您的位置 首页 科技

一图看尽编程语言十年热度变化!

作者 | 叶庭云 责编 | 张文 前言 TIOBE 排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube 统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

作者| 叶庭云 责编 | 张文

前言

TIOBE 排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube 统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

TIOBE 开发语言排行榜每月更新一次,依据的指数是基于世界范围内的资深软件工程师和第三方供应商提供,其结果作为当前业内程序开发语言的流行使用程度的有效指标。

该指数可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的。观察认为,该指数反应的虽并非当前最流行或应用最广的语言,但对世界范围内开发语言的走势仍具有重要参考意义。

一图看尽编程语言十年热度变化!

一图看尽编程语言十年热度变化!

2020 年,Python 再次获得年度编程语言荣誉。Python 在人工智能和数据科学领域的应用越来越来广泛,且在过去的一年里,Python 在处理疫情数据和舆情数据也发挥了巨大作用。至此,Python 已经第四次获得年度编程语言荣誉。

展开全文

获取数据

获取 TIOBE 官网里历年编程语言热度数据,目标URL:https://www.tiobe.com/tiobe-index/

一图看尽编程语言十年热度变化!

分析网页源代码可以找到我们想要的数据,利用正则表达式提取出数据,并保存到 Excel 中,便于后续数据处理和可视化。

一图看尽编程语言十年热度变化!

爬虫代码如下:

logging.basicConfig(level=logging.INFO, format= ‘%(asctime)s – %(levelname)s: %(message)s’) headers = {“User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1”}

wb = openpyxl.Workbook # 创建工作簿对象sheet = wb.active # 获取活动的工作表# 编程语言 时间 热度sheet.append([ ‘Programing’, ‘Date’, ‘data_per’])

url = ‘https://www.tiobe.com/tiobe-index/’rep = requests.get(url, headers=headers).text

# 正则匹配提取数据data = re.findall( ‘{name : (.*?),data : (.*?)}’, rep) programing = [eval(k[ 0]) fork indata] # 编程语言dates = [i[ 1] fori indata]

# 正则表达式处理 提取出想要的数据forx inrange(len(dates)): name = programing[x]datas = re.findall( r’/[Date.UTC(.*?)]’, dates[x], re.DOTALL) form indatas: date1 = re.findall( r’/d+’, m) # 正则提取出数字date2 = ‘-‘.join(date1[: 3]) # 拼接得到时间data_per = ‘.’.join(date1[ -2:]) # 得到热度数据sheet.append([name, date2, data_per])logging.info([name, date2, data_per])

wb.save( ‘language_data.xlsx’)

结果如下:

一图看尽编程语言十年热度变化!

成功提取出数据,并保存到Excel,在 jupyter notebook 环境中查看数据:

df = pd.read_excel( ‘language_data.xlsx’) df.sample( 10)

一图看尽编程语言十年热度变化!

df.info

一图看尽编程语言十年热度变化!

数据可视化

利用 pyecharts 绘制时间轮播图数据可视化,展示现在热度排 Top10 的编程语言 2011-2020 年这十年里平均热度变化。

CurrentConfig.ONLINE_HOST = ‘D:/python/pyecharts-assets-master/assets/’

# 提取现在的Top10编程语言name = list(pd.read_excel( ‘language_data.xlsx’)[ ‘Programing’].unique)

data = xlrd.open_workbook( ‘language_data.xlsx’) table = data.sheets[ 0]

dic1 = {k: [] fork inname} # 各编程语言对应每年里不同时间的热度fori inrange( 1, table.nrows): x = table.row_values(i)dic1[x[ 0]].append((x[ 1], x[ 2]))

# 与编程语言顺序对应 每年编程语言对应的不同时间的热度data_per = {k: [[] forx inrange( 10)] fork inrange( 2001, 2022)} print(data_per)

count = 0fork, v indic1.items: print(k, v)forj inv: # v (时间,热度) 热度数据添加进各年对应的列表里data_per[int(j[ 0][: 4])][count].append(eval(j[ 1])) # 一年里各编程语言不同时间时的热度 对应count += 1

# print(data_per)data_per1 = {k: [] fork inlist(data_per.keys)}

fork, v inlist(data_per.items): forx inv: iflen(x) == 0: # 这一年里该语言没有热度数据data_per1[k].append( 0) else: avg = sum(x) / len(x)data_per1[k].append(round(avg, 2)) # 这一年里的平均热度

# 得到TOBIE现在排Top10的编程语言从2001年开始每年的平均热度print(data_per1)

defget_year_overlap_chart(year)-> Bar: sum_info = [(m, n) form, n inzip(name, data_per1[year])] # 编程语言按每年平均热度排序sum_info.sort(key= lambdaz: z[ 1]) name_ = [m[ 0] form insum_info] datas = [m[ 1] form insum_info] # 每根柱子的颜色列表colors = [ ‘#00BFFF’, ‘#0000CD’, ‘#000000’, ‘#008000’, ‘#FF1493’, ‘#FFD700’, ‘#FF4500’, ‘#00FA9A’, ‘#191970’, ‘#9932CC’] data_1 = []foritem inrange( 10): data_1.append(opts.BarItem(name=name_[item],value=datas[item],itemstyle_opts=opts.ItemStyleOpts(color=colors[item]) # 设置每根柱子的颜色))# 绘制柱形图bar = Barbar.add_xaxis(name_)bar.add_yaxis(series_name= ‘热度’, yaxis_data=data_1, is_selected= True, label_opts=opts.LabelOpts(is_show= False)) bar.reversal_axisbar.set_global_opts(title_opts=opts.TitleOpts(title= “2011-2020年编程语言热度变化”), tooltip_opts=opts.TooltipOpts(is_show= True, trigger= “axis”, axis_pointer_type= “shadow”), xaxis_opts=opts.AxisOpts(name= ‘平均热度’), yaxis_opts=opts.AxisOpts(name= ‘编程语言’), )returnbar

# 生成时间轴的图timeline = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS, width= “1200px”, height= “600px”)) fory inrange( 2011, 2021): timeline.add(get_year_overlap_chart(y), time_point=str(y))

timeline.add_schema(is_auto_play= True, play_interval= 1000) timeline.render( “language_2011_2020.html”)

结果如下:

一图看尽编程语言十年热度变化!

一图看尽编程语言十年热度变化!

解决有时候 pyecharts 绘制的图形渲染在网页上无法加载 js 文件的问题

  • 根据网站资源引用说明:pyecharts 使用的所有静态资源文件存放于 pyecharts-assets 项目中

  • 这个文件默认挂载在 https://assets.pyecharts.org/assets/,因为默认优先从远程引用资源,这就导致有的时候无法加载 js 文件,图表显示不出来。

根据网站资源引用说明:pyecharts 使用的所有静态资源文件存放于 pyecharts-assets 项目中

这个文件默认挂载在 https://assets.pyecharts.org/assets/,因为默认优先从远程引用资源,这就导致有的时候无法加载 js 文件,图表显示不出来。

解决办法:下载所需 js 文件到本地,修改资源引用地址,Github地址:https://github.com/pyecharts/pyecharts-assets看网站的介绍,pyecharts提供了更改全局 HOST 的快捷方式

CurrentConfig.ONLINE_HOST = ‘D:/python/pyecharts-assets-master/assets/’# 本地保存 js 资源的路径

一图看尽编程语言十年热度变化!

一图看尽编程语言十年热度变化!

小米回应造车传闻;饿了么就春节“套路”骑手活动致歉;Go 1.16 正式发布 | 极客头条 破圈!不止于浏览器,WebAssembly 2020 大事记

X86 “将死”?RISC-V 正当立

C++落选,2021年最想学习的五大编程语言

本文来自网络,不代表聚合资讯立场,转载请注明出处:http://vivalille.com/23677.html

作者: admin

为您推荐

联系我们

联系我们

13000001211

在线咨询: QQ交谈

邮箱: email@wangzhan.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部