关于“Python”的核心知识点整理大全49

 

目录

16.2.10 加亮颜色主题

16.3 小结

第17 章

使用API

17.1 使用 Web API

17.1.1 Git 和 GitHub

17.1.2 使用 API 调用请求数据

17.1.3 安装 requests

17.1.4 处理 API 响应

python_repos.py

注意

17.1.5 处理响应字典

python_repos.py


import json
import pygal
1 from pygal.style import RotateStyle
--snip--
# 根据人口数量将所有的国家分成三组
cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}
for cc, pop in cc_populations.items():if pop < 10000000:--snip-- 
2 wm_style = RotateStyle('#336699')
3 wm = pygal.Worldmap(style=wm_style)
wm.title = 'World Population in 2010, by Country'
--snip-- 

Pygal样式存储在模块style中,我们从这个模块中导入了样式RotateStyle(见1)。创建这 个类的实例时,需要提供一个实参——十六进制的RGB颜色(见2);Pygal将根据指定的颜色为 每组选择颜色。十六进制格式的RGB颜色是一个以井号(#)打头的字符串,后面跟着6个字符, 其中前两个字符表示红色分量,接下来的两个表示绿色分量,最后两个表示蓝色分量。每个分量 的取值范围为00(没有相应的颜色)~FF(包含最多的相应颜色)。如果你在线搜索hex color chooser (十六进制颜色选择器),可找到让你能够尝试选择不同的颜色并显示其RGB值的工具。这里使用 的颜色值(#336699)混合了少量的红色(33)、多一些的绿色(66)和更多一些的蓝色(99), 它为RotateStyle提供了一种淡蓝色基色。 RotateStyle返回一个样式对象,我们将其存储在wm_style中。为使用这个样式对象,我们在 创建Worldmap实例时以关键字实参的方式传递它(见3)。更新后的地图如图16-11所示。

前面的样式设置让地图的颜色更一致,也更容易区分不同的编组

16.2.10 加亮颜色主题

Pygal通常默认使用较暗的颜色主题。为方便印刷,我使用LightColorizedStyle加亮了地图的颜色。这个类修改整个图表的主题,包括背景色、标签以及各个国家的颜色。要使用这个样式, 先导入它:

from pygal.style import LightColorizedStyle

然后就可独立地使用LightColorizedStyle了,例如:

wm_style = LightColorizedStyle 

然而使用这个类时,你不能直接控制使用的颜色,Pygal将选择默认的基色。要设置颜色, 可使用RotateStyle,并将LightColorizedStyle作为基本样式。为此,导入LightColorizedStyle 和RotateStyle:

from pygal.style import LightColorizedStyle, RotateStyle

再使用RotateStyle创建一种样式,并传入另一个实参base_style:

wm_style = RotateStyle('#336699', base_style=LightColorizedStyle) 

这设置了较亮的主题,同时根据通过实参传递的颜色给各个国家着色。使用这种样式时,生 成的图表与本书的屏幕截图更一致。 尝试为不同的可视化选择合适的样式设置指令时,在import语句中指定别名会有所帮助:

from pygal.style import LightColorizedStyle as LCS, RotateStyle as RS

这样,样式定义将更短:

wm_style = RS('#336699', base_style=LCS)

通过使用几个样式设置指令,就能很好地控制图表和地图的外观。

16.3 小结

在本章中,你学习了:如何使用网上的数据集;如何处理CSV和JSON文件,以及如何提取 你感兴趣的数据;如何使用matplotlib来处理以往的天气数据,包括如何使用模块datetime,以及 如何在同一个图表中绘制多个数据系列;如何使用Pygal绘制呈现各国数据的世界地图,以及如 何设置Pygal地图和图表的样式。 有了使用CSV和JSON文件的经验后,你将能够处理几乎任何要分析的数据。大多数在线数 据集都可以以这两种格式中的一种或两种下载。学习使用这两种格式为学习使用其他格式的数据 做好了准备。 在下一章,你将编写自动从网上采集数据并对其进行可视化的程序。如果你只是将编程作为 业余爱好,学会这些技能可以增加乐趣;如果你有志于成为专业程序员,就必须掌握这些技能。


第17 章

使用API

17.1 使用 Web API

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

17.1.1 Git 和 GitHub

本章的可视化将基于来自GitHub的信息,这是一个让程序员能够协作开发项目的网站。我们 将使用GitHub的API来请求有关该网站中Python项目的信息,然后使用Pygal生成交互式可视化, 以呈现这些项目的受欢迎程度。

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

17.1.2 使用 API 调用请求数据

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

这个调用返回GitHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息。 下面来仔细研究这个调用。第一部分(https://api.github.com/)将请求发送到GitHub网站中响 应API调用的部分;接下来的一部分(search/repositories)让API搜索GitHub上的所有仓库。

repositories后面的问号指出我们要传递一个实参。q表示查询,而等号让我们能够开始指定 查询(q=)。通过使用language:python,我们指出只想获取主要语言为Python的仓库的信息。最 后一部分(&sort=stars)指定将项目按其获得的星级进行排序。 下面显示了响应的前几行。从响应可知,该URL并不适合人工输入。

{"total_count": 713062,"incomplete_results": false,"items": [{"id": 3544424,"name": "httpie","full_name": "jkbrzt/httpie",--snip-- 

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

17.1.3 安装 requests

requests包让Python程序能够轻松地向网站请求信,息以及检查返回的响应。要安装requests, 请执行类似于下面的命令:

$ pip install --user requests

如果你还没有使用过pip,请参阅12.2.1节(根据系统的设置,你可能需要使用这个命令的稍 微不同的版本)。

17.1.4 处理 API 响应

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

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

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

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

状态码为200,因此我们知道请求成功了。响应字典只包含三个键:'items'、'total_count' 和'incomplete_results'。


注意

像这样简单的调用应该会返回完整的结果集,因此完全可以忽略与'incomplete_results' 相关联的值。但执行更复杂的API调用时,程序应检查这个值。


17.1.5 处理响应字典

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

python_repos.py
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()
1 print("Total repositories:", response_dict['total_count'])
# 探索有关仓库的信息
2 repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# 研究第一个仓库
3 repo_dict = repo_dicts[0]
4 print("\nKeys:", len(repo_dict))
5 for key in sorted(repo_dict.keys()):print(key) 

在1处,我们打印了与'total_count'相关联的值,它指出了GitHub总共包含多少个Python仓 库。

与'items'相关联的值是一个列表,其中包含很多字典,而每个字典都包含有关一个Python 仓库的信息。在2处,我们将这个字典列表存储在repo_dicts中。接下来,我们打印repo_dicts 的长度,以获悉我们获得了多少个仓库的信息。 为更深入地了解返回的有关每个仓库的信息,我们提取了repo_dicts中的第一个字典,并将 其存储在repo_dict中(见3)。接下来,我们打印这个字典包含的键数,看看其中有多少信息(见 4)。在5处,我们打印这个字典的所有键,看看其中包含哪些信息。 输出让我们对实际包含的数据有了更清晰的认识:

Status code: 200
Total repositories: 713062
Repositories returned: 30
1 Keys: 68
archive_url
assignees_url
blobs_url
--snip--
url
watchers
watchers_count

关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661731.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

1.Linux快速入门

Linux快速入门 Linux操作系统简介Linux操作系统优点Linux操作系统发行版1. Red Hat Linux2. CentOS3. Ubuntu4. SUSE Linux5. Fedora Linux 32位与64位操作系统的区别Linux内核命名规则 Linux操作系统简介 Linux操作系统是基于UNIX以网络为核心的设计思想&#xff0c;是一个性…

什么是计算机视觉

计算机视觉&#xff08;Computer Vision&#xff09;是一门研究如何让计算机能够理解和分析数字图像或视频的学科。简单来说&#xff0c;计算机视觉的目标是让计算机能够像人类一样对视觉信息进行处理和理解。为实现这个目标&#xff0c;计算机视觉结合了图像处理、机器学习、模…

JavaSE基础50题:28.(数组练习)冒泡排序

概述 给定一个整型数组&#xff0c;实现冒泡排序。 如&#xff1a;给一组数组{5&#xff0c;10&#xff0c;8&#xff0c;3&#xff0c;7}进行冒泡排序。 j一直往下走&#xff0c;和下一个数字进行比较&#xff0c;如果当前数字大于下一个数字&#xff0c;则两个数字交换&…

什么是高并发系统?

1.1 什么是高并发&#xff1f; 高并发&#xff08;High Concurrency&#xff09;&#xff0c;通常是指通过设计保证系统能够同时处理很多请求。即在同一个时间点&#xff0c;有很多的请求同时访问同一个接口。高并发意味着大流量&#xff0c;需要运用技术手段去抵抗这种大流量…

大数据实践之路 读后感

欢迎关注公众号&#xff1a;数据运营入表资产化服务&#xff0c;获取更多算法源码材料 2023数据资源入表白皮书&#xff0c;推荐系统源码下载-CSDN博客 浅析研发支出费用化和资本化的区别-CSDN博客 商业银行数据资产估值白皮书&#xff0c;推荐系统源码下载-CSDN博客 用友B…

工业以太网交换机的出色优势是什么?

网络交换机可以分为商用网络交换机和工业以太网交换机两种类别。就其灵活性和抗干扰性而言&#xff0c;工业交换机和商用交换机之间存在着显著差异&#xff0c;工业交换机的功能更加实用。 工业以太网和商业网络在数据链路层、网络层和协议层等方面基本上没有本质区别。工业以…

白话机器学习的数学-2-分类

1、设置问题 图片分类&#xff1a;只根据尺寸把它分类为 纵向图像和横向图像。 如果只用一条线将图中白色的点和黑色的点分开&#xff1a; 这次分类的目的就是找到这条线。 2、内积 找到一条线&#xff0c;这是否意味着我们要像学习回归时那样&#xff0c;求出一次函数的斜率…

2024年第三届服务机器人国际会议(ICoSR 2024) | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第三届服务机器人国际会议(ICoSR 2024) 会议时间&#xff1a;2024年7月26日-28日 召开地点&#xff1a;中国杭州 大会官网&#xff1a;www.iwosr.org 进入新时代&#xff0c;科技更新迭代快速发展&#xff0c;机器人不仅变得更加节能&#x…

创新型产品说明书模板的设计与实践,我悟了!

在当今这个快节奏、高效率的时代&#xff0c;产品说明书已经不再仅仅是一纸简单的使用指南。它既是产品的重要组成部分&#xff0c;也是品牌形象和用户体验的关键环节。然而&#xff0c;传统的产品说明书制作方式往往效率低下&#xff0c;管理混乱&#xff0c;难以满足市场的多…

vue3+ts打开echarts的正确方式

实例项目使用 vite5 vue3 ts&#xff0c;项目地址 vite-vue3-charts&#xff0c;预览地址 https://weizwz.com/vite-vue3-charts 准备工作 1. 注册为百度地图开发者 官网地址&#xff0c;然后在 应用管理 -> 我的应用 里&#xff0c;创建应用&#xff0c;创建好后复制 AK …

线上发布稳定性方案介绍

目录 一、方案说明 二、线上发布问题描述 2.1 无损上下线背景说明 2.1.1 服务⽆法及时下线 2.1.2 初始化慢 2.1.3 注册太早 2.1.4 发布态与运⾏态未对⻬ 三、问题解决方案 3.1 无损下线方案 3.1.1 什么是无损下线 3.1.2 传统解决方式 3.1.3 云原生场景解决方案 3.1…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi&#xff0c;依赖框架不同&#xff0c;配置也移至项目内Program.cs 一、发布到指定文件夹和IIS&#xff0c;不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览&#xff0c;访问接口路径报500.19&#xff0c;原因是所依赖…

HALCON报错#2021:System clock has been set back 解决方案

如果操作系统修改过时间&#xff0c;再更新到正常的时间后&#xff0c;打开halcon可能会报错#2021&#xff1a;System clock has been set back. 解决方案&#xff1a; 1、联网同步Windows 系统时间。 2、检查以下目录中是否有超过当前时间的文件&#xff08;删除&#xff09…

o2o生活通全开源尊享版+多城市切换+企业付款+交友IM+平台快报

搭建教程 1.把 pigo2ov282.sql 文件里面的网址 test.souho.net 全部批量替换为你的自己的 2.使用 phpmyadmin 导入 pigo2ov282.sql 到你的数据库&#xff08;直接访问/phpmyadmin 即可&#xff09; 3.修改数据库文件/conf/db.php 里的数据库连接信息&#xff08;请勿使用记事本…

最新最全智能科学与技术专业毕业设计选题精华汇总-持续更新中

文章目录 0 简介1 如何选题2 最新智能科学与技术毕设选题3 最后 0 简介 Hi&#xff0c;大家好&#xff0c;随着毕业季的临近&#xff0c;许多同学开始向学长咨询关于选题和开题的问题。在这里&#xff0c;学长分享一些关于智能科学与技术专业毕业设计选题的内容。 以下为学长…

反转链表、链表的中间结点、合并两个有序链表(leetcode 一题多解)

一、反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 思路一&#xff1a;翻转单链表指针方向 这里解释一下三个指针的作用&#xff1a; n1&#xff1…

Emu2:37B参数开创多模态生成新篇章

引言 多模态任务在人工智能领域一直是极具挑战性的「技术高地」。智源研究院最近开源发布的新一代多模态基础模型Emu2&#xff0c;在这一领域取得了突破性进展。Emu2以其庞大的37B 参数规模和强大的多模态生成能力&#xff0c;为AI的多模态理解和生成开启了新的篇章。 模型概…

Python基础进阶:9个易错知识点

你好&#xff0c;我是kelly。 kelly根据自己平时工作&#xff0c;总结9个易错知识点&#xff0c;希望对大家有用。 知识点1&#xff1a;is 和 is比较是两个变量地址是否相同&#xff0c;比较是两个变量的值&#xff08;内容&#xff09;是否相同。 示例&#xff1a; In [92…