|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 鱼C-小师妹 于 2020-5-12 10:20 编辑
很多鱼油都应该看过甲鱼哥在 B 站传的这个视频:
想不想自己也弄一个呢?
想的话,小师妹来教你呦~
接下来的演示,我都是使用 Chrome 不做解释啦。
找数据
数据就用 TIOBE 的吧,在吹水阁每月都有解读,有兴趣的小哥哥可以去围观:2020年04月TIOBE编程语言排行榜 | 【少儿编程语言Scratch要火】
我们先打开 TIOBE 官网(传送门),滚动页面到这里:
右键,检查,找到 network,然后刷新:
这样所有用到的数据就会加载好了。
因为我们直接在网页中看到了数据,看看主页 tiobe-index/ 中有木有数据:
点击,切换到 Response,因为这种数据往往都会写关键字 Date(经验 ),直接 ctrl+F,然后输入 Date:
嘻嘻,果然不出小师妹所料,一下就找到数据啦!
将上图中的数据复制出来确认下:
吼吼,就是我们要哒!
温馨如小师妹,把数据分享出来(防止犯懒,收点鱼币):
data.zip
(9.18 KB, 下载次数: 16, 售价: 2 鱼币)
处理数据
肉眼看数据,我们其实就需要 3 个指标:
Programming(函数名),DataPer(数据),Date(日期)
那就用正则表达式来处理呗。
这里小师妹只能说一下大概思路,因为正则很灵活,每个人都会写出不同的匹配方式。
既然需要 3 个指标,其实清洗后的数据就是 3 列。
而现在 series:[] 中数据,都是一个编程语言一个键 name ,然后值都放在键 data 中(时间和对应的数据值)。
Programming 就是键值,但是要为每一项都添加这个值。
data 中数据也要清洗,先要去掉 Date.UTC(),然后 Date 日期格式按照 xxxx-xx-xx 来放。
DataPer 就是每个日期下对应的值,不需要处理,直接提取出来即可。
这里只能默认大家会啦,因为要讲的话,这期视频时长会很长很长..
不会的话(下方留言),小师妹考虑教你们。
其实小甲鱼老师也有讲过正则,有兴趣的可以自行去学习:
如果有的鱼油觉得看视频太慢,小甲鱼老师还准备了文字教程:
数据如何清洗的方向也有啦,接着就要请出 requests 啦!
requests 小师妹不做深入介绍啦,不会的可以看小甲鱼老师写的文字教程:Requests 模块帮助文档(小甲鱼版)
代码直接给大家吧:
- 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('fishcTiobe.csv', 'w', newline='')
- #分类
- writer = csv.DictWriter(f, ['Programming','DataPer','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' + j
- if index == 0:
- time += j
- else:
- time += '-' + j
- temp = {
- 'Programming': name,
- 'DataPer': value,
- 'Date': time
- }
- writer.writerow(temp)
- #写入本地文件
- f.close()
复制代码
稍微插一下,如果鱼油通过:
- python3 -m pip install xxx
复制代码
安装库时报,可以采取清华的镜像安装:
- python -m pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
xxx 就是你要用到的库,基本所有库,都有镜像。
所以提示库没安装的,你不要问我了阿,问就是一顿打屁屁!
运行完成后,就会在程序目录中发现多了一个文件:
里面就是我们要的数据啦:
数据可视化
清洗后的数据也有啦,就差最后一步咯:图示
安装完 pandas 和 plotly 库以后。
我们把文件 fishcTiobe.csv 读取到程序中,使用 pandas 来完成数据分析。
读取 csv 成功以后,使用 plotly 的 bar 方法来绘图,上代码:
等待几十秒左右,然后会自动在浏览器中打开创建好的图。
看到下面这个酷炫的图标就意味着搞定定啦:
基本上就是实现我们要的效果啦,通过调整参数还能继续优化。
欢迎小哥哥们自行发挥,下方留言,很酷炫的,小师妹一定给你评分。
源代码(高鱼币,就是劝退,让你们自己写):
tiobeFishC.zip
(10.77 KB, 下载次数: 39, 售价: 50 鱼币)
|
评分
-
查看全部评分
|