Python学习for数据可视化项目(三)使用API

本文介绍如何使用Python的requests库和Pygal库,通过GitHub API获取并可视化最受欢迎的Python项目信息。首先讲解了API调用的基本概念,然后展示了如何处理API响应和解析数据,接着使用Pygal创建交互式条形图展示项目热度,最后讨论了API的速率限制和图表的定制技巧。
摘要由CSDN通过智能技术生成

Python学习for数据可视化项目(三)使用API

图片后续添加

1 使用Web API

Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用。请求的数据将以易于处理的格式(如JSON或CSV)返回。依赖于外部数据源的大多数应用程序都依赖于API调用,如集成社交媒体网站的应用程序。

1.1 Git和Github

本章的可视化将基于来自GitHub的信息,这是一个让程序员能够协作开发项目的网站。

这里将使用GitHub的API来请求有关该网站中Python项目的信息,然后使用Pygal生成交互式可视化,以呈现这些项目的受欢迎程度。

GitHub(https://github.com/ )的名字源自Git,Git是一个分布式版本控制系统,让程序员团队能够协作开发项目。Git帮助大家管理为项目所做的工作,避免一个人所做的修改影响其他人所做的修改。如一个成员在项目中实现新功能时,Git将跟踪你对每个文件所做的修改。确定代码可行后,其提交所做的修改,而Git将记录项目最新的状态。如果想撤销所做的修改,可轻松地返回以前的任何可行状态 。

GitHub上的项目都存储在仓库中, 后者包含与项目相关联的一切: 代码、 项目参与者的信息、 问题或bug报告等。

本章中, 将编写一个程序, 它自动下载GitHub上星级最高(反映受欢迎程度)的Python项目的信息, 并对这些信息进行可视化。

1.2 使用API调用请求数据

Github的API可以让使用者通过API调用来请求各种信息。如以下调用可以返回Github当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息。

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

第一部分https://api.github.com/将请求发送到GitHub网站中响应API调用的部分;

接下来的一部分``search/repositories `让API搜索GitHub上的所有仓库。repositories 后面的问号指出我们要传递一个实参。 q 表示查询, 而等号让我们能够开始指定查询(q= ) 。 通过使用language:python , 我们指出只想获取主要语言为Python的仓库的信息。

最后一部分&sort=stars指定将项目按其获得的星级进行排序。

显示结果的前几行为:

{
   
  "total_count": 3652311,
  "incomplete_results": false,
  "items": [
    {
   
      "id": 21289110,
      "node_id": "MDEwOlJlcG9zaXRvcnkyMTI4OTExMA==",
      "name": "awesome-python",
      "full_name": "vinta/awesome-python",
      "private": false,
      "owner": {
   
        "login": "vinta",
        "id": 652070,
        "node_id": "MDQ6VXNlcjY1MjA3MA==",
        "avatar_url": "https://avatars2.githubusercontent.com/u/652070?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vinta",
        --sinp--

可见这是一个嵌套字典,键‘items’对应的是所有仓库,而每个仓库又是一个嵌套字典,描述了仓库自身的信息。

可看出此时GitHub总共有3652311个Python项目。 “incomplete_results” 的值为false , 据此我们知道请求是成功的(它并非不完整的) 。 倘若GitHub无法全面处理该API, 它返回的这个值将为true 。 接下来的列表中显示了返回的"items" , 其中包含GitHub上最受欢迎的Python项目的详细信息。

1.3 安装ruquests

由于我使用pycharm来调试,所以直接在pycharm中为编译器安装ruquests即可。

1.4 处理API响应

编写Python处理API响应。

#导入requests模块
import requests
url='https://api.github.com/search/repositories?q=language:python&sort=stars'
#用get()方法将API调用的url传递,用r存储响应对象
r=requests.get(url)
#属性status_code值为200时表明请求成功,
print('Staus code:',r.status_code)
#由于这个API返回JSON格式的信息,因此使用json()将信息转换成字典
response_dic=r.json()
print(response_dic.keys())

此时输出:

Staus code: 200
dict_keys(['total_count', 'incomplete_results', 'items'])

1.5 处理响应字典

上小节已经将API调用返回的信息存储到字典中了,现在开始处理字典中的数据。

先生成一些概述这些信息的输出。如Python项目总数,仓库总数,研究某个仓库。

import requests

url=https://api.github.com/search/repositories?q=language:python&sort=stars
r=requests.get(url)
print('Status code:',r.status_code)
#整个json对象的字典
response_dic=r.json()
#项目总数
print('Total repositories:',response_dic['total_count'])

#以各个仓库为元素的字典
repo_dicts=response_dic['items']
#仓库总数
print('Repositories returned:',len(repo_dicts))

#第一个仓库的字典
repo_dict=repo_dicts=[
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值