IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> python应用篇之数据可视化——使用API(上) -> 正文阅读

[开发工具]python应用篇之数据可视化——使用API(上)

前言

??上篇文章我们给大家介绍了处理数据的另一种形式——json格式的处理,主要包括数据的下载、提取相应的数据、将数据转换成相应的格式、绘制收盘分析折线图、以及进一步对我们的数据进行相应的分析,最后通过收盘价数据仪表盘。本文开始给大家介绍API的相关使用。学过java的都知道,Web API是网站的一部分,常用于使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用,正如集成社交媒体网站的应用程序。我们仍然是以上篇文章提到的数据作为本文的研究对象。首先介绍Git和GitHub的具体使用。

一、使用Web API

??本文介绍的可视化是基于Git Hub的信息,这是一个让程序员能够协作开发项目的网站。我们将使用Git Hub的API来请求有关该网站的Python项目信息,然后使用Pygal生产交互式可视化,以呈现这些项目的受欢迎程度。在这里提醒大家的是我们会用到Pygal第三方库,希望大家可以提前下载好。

1、Git和GitHub

??GitHub的名字源自Git,Git是一个分布式版本控制系统,让程序员团队能够协助开发项目。Git帮助大家管理为项目所做的工作,避免一个人所做的修改影响其他人所做的修改。你在项目中实现新功能时,Git将跟踪你的每个文件所做的修改。确定代码可行后,你提交所做的修改,而Git将记录项目最新的状态。如果我们犯了错,想撤销所做的修改,可轻松地返回以前的任何可行状态。GitHub上的项目都存储在仓库中,后者包含与项目相关联的一切:代码、项目参与者的信息、问题或bug报告等。
??对于喜欢的项目,GitHub用户可给它加星(star)以表示支持,用户还可跟踪他可能想使用的项目。在本文,我们将编写一个程序,它自动下载GitHub上星级最高的Python项目的信息,并将这些信息进行可视化。

2、使用API调用请求数据

??GitHub的API让你能够通过API调用来请求各种信息。要知道API调用是什么样的,请打开浏览器在地址栏中输入如下地址并按回车键,具体网址如下:

https://api.github.com/search/repositories?q=language:python&sort=stars

??这个调用返回GitHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息。下面来仔细研究这个调用。第一部分https://api.github.com/将请求发送到GitHub网站中响应API调用的部分;接下来的一部分search/repositories让API搜索GitHub上的所有仓库。repositories后面的问号指出我们要传递一个实参。q表示查询,而等号让我们能够开始指定查询(q=)。通过使用language:python,我们指出只想获取主要语言为Python的仓库的信息。最后一部分(&sort=stars)指定将项目按下其获得的星级进行排序。接下来显示了响应的前几行。从响应可知,该URL并不适合人工输入,具体如情况如下:

??我们从上图中的total_count:可知,在本文撰写的时候,该GitHub总共有8634290个Python项目。incomplete_results的值为true,由此我们可以发现我们的请求不是完成成功的。当然,我们也可以显示相应的items,其中包含了GitHUb中最受欢迎的Python项目的详细信息。

3、安装requests

??requests包让Python能够轻松地向网站请求信息以及检查返回的响应。要安装requests,要安装requests,首先在黑屏终端输入以下命令进行安装:

> pip install --user requests

??具体执行结果如下:

??这是我已经安装黄成功的页面。大家安装成功后,在黑屏终端输入以下命令即可查看自己requests的详细版本信息:

pip list

??本人安装的requests的相关版本如下:

4、处理API响应

??接下来我们编写一个程序,它执行API调用并处理结果,找出GitHub中上星级最高的Python项目:

import requests
# 执行API调用并存储响应
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
print("Status code: ", r.status_code)
#将API响应存储在一个变量中
response_dict = r.json()
# 处理结果
print(response_dict.keys())

??我们首先导入了了刚刚下载的requests的第三方模块,接着我们调用了API中的URL,然后使用requests来执行调用。我们调用get()并将URL传递给它,在将响应对象存储在变量r中。响应对象包含一个名为status_code的属性,它让我们知道请求是否成功(状态码200表示是请求成功)。最后,我们打印了status_code,核实调用是否成功了。
??这个API返回了JSON格式的信息,因此我们使用方法json()将这些信息转换为一个Python字典。我们将转换得到的字典存储在response_dict中。最后我们打印了response_dict中的键,具体输出如下:

??从图中执行的结果来看,状态码为200,因此,我们的调用结果是成功的。响应字典只包含了三个键itemstotal_countincomplete_results。不过这里需要我们注意的是:像这样的简单调用应该会返回完整的结果集,因此完全可以忽略与incomplete_results相关联的值。但执行更复杂的API调用时,程序应检查这个值。

5、处理响应字典

??将API调用返回信息存储到字典中后,就可以处理这个字典中的数据看了。接下来我们生成一些概述这些信息的输出。这是一种不错的方式,可确认收到了期望的信息,进而可开始研究感兴趣的信息,具体实现如下:

import requests
# 执行API调用并存储响应
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
print("Status code: ", r.status_code)
#将API响应存储在一个变量中
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# 研究第一个仓库
repo_dict = repo_dicts[0]
print("\nKeys:", len(repo_dict))
for key in sorted(repo_dict.keys()):
    print(key)

??首先我们打印了与total_count相关联的值,它指出了github总共有多少个Python仓库。与items相关联的值是一个列表,其中包含很多字典,而每个字典都包含有关一个Python的仓库信息。接着,我们将这个字典列表存储在repo_dicts中。接下来,我们打印repo_dicts的长度,以获悉我们获得了多少个仓库的信息。为了更深入地了解返回有关每个仓库的信息,我们提取了repo_dicts中的第一个字典,并将其存储在repo_dict中,接下来,我们答应这个字典包含的键数,看看其中有多少信息,最后我们打印了这个字典所有的键,并且查看了其中包含的相关信息,具体实现情况如下:

??GitHub的API返回有关每个仓库的大量信息:repo_dict包含68个键。通过仔细查看这些键,可大致知道可提取有关项目的哪些信息,当然,要准确地获悉API将返回哪些信息,我们要么是需要阅读文档,要么像此处这样使用代码来查看这些信息。接下来,我们提取repo_dict中与一些键相关联的值,具体实现如下:

import requests
# 执行API调用并存储响应
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
print("Status code: ", r.status_code)
#将API响应存储在一个变量中
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# 研究第一个仓库
repo_dict = repo_dicts[0]
print("\nSelected information about first repository:")
print("Name:", repo_dict['name'])
print("Owner:", repo_dict['owner']['login'])
print("Stars:", repo_dict['stargazers_count'])
print("Repository:", repo_dict['html_url'])
print("Created:", repo_dict['created_at'])
print("Updated:", repo_dict['updated_at'])
print("Description:", repo_dict['description'])

??在这里我们首先打印了表示第一个仓库的字典中与很多键相关联的值。首先我们打印了项目名字。项目所有者是用一个字典表示的。因此,接下来我们使用owner来访问表示所有者的字典,在使用键key来获取所有者的登录名。其次,我们打印项目获得了多好个星的评价,以及项目在github仓库的url。接下来,我们显示项目的创建时间和最后一次更新的时间,最后,我们打印了仓库的描述,输出详情如下:

??从上述的输出可以看出:在本人撰写这篇文章的时候,Github上星级最高Python项目为public-apis,其所有者的用户为public-apis,有174273多个github用户给这个项目加星。我们同时也可以看出这个项目的仓库的url,其创建时间为2016年3月,刚好今天(2022-01-16)就更新了。代码最后指出了public-apis是一个免费的APIs容器。

6、概述最受欢迎的仓库

??对这些数据进行可视化时,我们需要涵盖多个仓库。下面我们编写一个循环,打印API调用返回的每个仓库的特定信息,以便能够在可视化中包含所有的这些信息:

import requests
# 执行API调用并存储响应
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
print("Status code: ", r.status_code)
#将API响应存储在一个变量中
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# 研究第一个仓库
repo_dict = repo_dicts[0]
print("\nSelected information about each repository:")
for repo_dict in repo_dicts:
    print("\nName:", repo_dict['name'])
    print("Owner:", repo_dict['owner']['login'])
    print("Stars:", repo_dict['stargazers_count'])
    print("Repository:", repo_dict['html_url'])
    print("Created:", repo_dict['created_at'])
    print("Updated:", repo_dict['updated_at'])
    print("Description:", repo_dict['description'])

??首先我们打印了一条说明性消息。其次,我们遍历了repo_dicts中的所有字典。在这个循环中,我们打印每个项目的名称、所有者、星级、在Github上的url以及描述:

??上述输出中有一些有趣的项目,可能值得再看一眼,但建议大家不要在这上面花费太多时间,因为我们即将创建的可视化可让我们更容易地看清结果。

7、监视API的速率限制

??大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制。要获悉我们是否接近了github的限制,我们需要在浏览器中输入以下地址,我们将看到类似于下面的响应:

https://api.github.com/rate_limit

??具体响应如下:

??我们关心的信息是搜索API的速率限制。当然,我们也可以看见极限为每分钟10个请求,而在当前这一分钟内,我们还可执行10个请求。reset指的是配额将重置的Unix时间或新纪元时间。用完配额后,我们将收到一条简单的响应,由此可知已经到达API极限。到达极限后,我们必须等待配额重置。这里需要注意的是:很多API要求我们注册获得秘钥之后才能执行API调用。如果注册后,我们能够获得API秘钥后,配额将高的多。

总结

??上篇文章我们给大家介绍了处理数据的另一种形式——json格式的处理,主要包括数据的下载、提取相应的数据、将数据转换成相应的格式、绘制收盘分析折线图、以及进一步对我们的数据进行相应的分析,最后通过收盘价数据仪表盘。本文开始给大家介绍API的相关使用,主要介绍了如何使用Web API,包括git和github中的使用、使用API调用请求数据以及处理API响应、处理响应字典以及目前常用的仓库;最后介绍了监视API的速率限制。Python是一门注重实际操作的语言,它是众多编程语言中最简单,也是最好入门的。当你把这门语言学会了,再去学习java、go以及C语言就比较简单了。当然,Python也是一门热门语言,对于人工智能的实现有着很大的帮助,因此,值得大家花时间去学习。生命不息,奋斗不止,我们每天努力,好好学习,不断提高自己的能力,相信自己一定会学有所获。加油!!!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:41:39  更:2022-01-17 11:42:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:59:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码