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

简介: 关于“Python”的核心知识点整理大全46

49283d32d4f0fcef13374dd7343b1866_7f016f9070b14a18afd1a62db1df0916.png

16.1.3 提取并读取数据

知道需要哪些列中的数据后,我们来读取一些数据。首先读取每天的最高气温:

highs_lows.py

import csv
# 从文件中获取最高气温
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
 reader = csv.reader(f)
 header_row = next(reader)
1 highs = []
2 for row in reader:
3 highs.append(row[1])
 print(highs)

我们创建了一个名为highs的空列表(见1),再遍历文件中余下的各行(见2)。阅读器对象 从其停留的地方继续往下读取CSV文件,每次都自动返回当前所处位置的下一行。由于我们已经 读取了文件头行,这个循环将从第二行开始——从这行开始包含的是实际数据。每次执行该循环 时,我们都将索引1处(第2列)的数据附加到highs末尾(见3)。 下面显示了highs现在存储的数据:

['64', '71', '64', '59', '69', '62', '61', '55', '57', '61', '57', '59', '57',
 '61', '64', '61', '59', '63', '60', '57', '69', '63', '62', '59', '57', '57',
 '61', '59', '61', '61', '66']

我们提取了每天的最高气温,并将它们作为字符串整洁地存储在一个列表中。 下面使用int()将这些字符串转换为数字,让matplotlib能够读取它们:

highs_lows.py

--snip--
 highs = []
 for row in reader:
1 high = int(row[1])
 highs.append(high)
 print(highs)

在1处,我们将表示气温的字符串转换成了数字,再将其附加到列表末尾。这样,最终的列 表将包含以数字表示的每日最高气温:

[64, 71, 64, 59, 69, 62, 61, 55, 57, 61, 57, 59, 57, 61, 64, 61, 59, 63, 60, 57,
 69, 63, 62, 59, 57, 57, 61, 59, 61, 61, 66]

下面来对这些数据进行可视化。

16.1.4 绘制气温图表

为可视化这些气温数据,我们首先使用matplotlib创建一个显示每日最高气温的简单图形,如 下所示:

highs_lows.py

import csv
from matplotlib import pyplot as plt
# 从文件中获取最高气温
--snip--
# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize=(10, 6))
1 plt.plot(highs, c='red')
# 设置图形的格式
2 plt.title("Daily high temperatures, July 2014", fontsize=24)
3 plt.xlabel('', fontsize=16)
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.show()

我们将最高气温列表传给plot()(见1),并传递c='red'以便将数据点绘制为红色(红色显 示最高气温,蓝色显示最低气温)。接下来,我们设置了一些其他的格式,如字体大小和标签(见 2),这些都在第15章介绍过。鉴于我们还没有添加日期,因此没有给x轴添加标签,但plt.xlabel() 确实修改了字体大小,让默认标签更容易看清。图16-1显示了绘制的图表:一个简单的折线图, 显示了阿拉斯加锡特卡2014年7月每天的最高气温。

aedcabad3eea6f6d813e6bce2cec05d4_433a93597e7344558f8f9cb311ea9d1b.png

16.1.5 模块 datetime

下面在图表中添加日期,使其更有用。在天气数据文件中,第一个日期在第二行:

2014-7-1,64,56,50,53,51,48,96,83,58,30.19,--snip--

读取该数据时,获得的是一个字符串,因为我们需要想办法将字符串'2014-7-1'转换为一个 表示相应日期的对象。为创建一个表示2014年7月1日的对象,可使用模块datetime中的方法 strptime()。我们在终端会话中看看strptime()的工作原理:

>>> from datetime import datetime
>>> first_date = datetime.strptime('2014-7-1', '%Y-%m-%d')
>>> print(first_date)
2014-07-01 00:00:00

我们首先导入了模块datetime中的datetime类,然后调用方法strptime(),并将包含所需日 期的字符串作为第一个实参。第二个实参告诉Python如何设置日期的格式。在这个示例中,'%Y-' 让Python将字符串中第一个连字符前面的部分视为四位的年份;'%m-'让Python将第二个连字符前 面的部分视为表示月份的数字;而'%d'让Python将字符串的最后一部分视为月份中的一天 (1~31)。 方法strptime()可接受各种实参,并根据它们来决定如何解读日期。表16-1列出了其中一些 这样的实参。

de43658de542ed4a90b1536e5c3a6e82_976672e0efb847049785747f2e76fb16.png

16.1.6 在图表中添加日期

知道如何处理CSV文件中的日期后,就可对气温图形进行改进了,即提取日期和最高气温, 并将它们传递给plot(),如下所示:

highs_lows.py

import csv
from datetime import datetime
from matplotlib import pyplot as plt
# 从文件中获取日期和最高气温
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
 reader = csv.reader(f)
 header_row = next(reader)
1 dates, highs = [], []
for row in reader:
2 current_date = datetime.strptime(row[0], "%Y-%m-%d")
 dates.append(current_date) 
 high = int(row[1])
 highs.append(high)
# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize=(10, 6))
3 plt.plot(dates, highs, c='red')
# 设置图形的格式
plt.title("Daily high temperatures, July 2014", fontsize=24)
plt.xlabel('', fontsize=16)
4 fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.show()

我们创建了两个空列表,用于存储从文件中提取的日期和最高气温(见1)。然后,我们将 包含日期信息的数据(row[0])转换为datetime对象(见2),并将其附加到列表dates末尾。在 3处,我们将日期和最高气温值传递给plot()。在处,我们调用了fig.autofmt_xdate()来绘制 斜的日期标签,以免它们彼此重叠。图16-2显示了改进后的图表。

6984d74e4b62f62e4aebbc212ad94a4f_b15ce27e7c00439484b364c33b152ed3.png

16.1.7 涵盖更长的时间

设置好图表后,我们来添加更多的数据,以成一幅更复杂的锡特卡天气图。请将文件 sitka_weather_2014.csv复制到存储本章程序的文件夹中,该文件包含Weather Underground提供的 整年的锡特卡天气数据。

现在可以创建覆盖整年的天气图了:

highs_lows.py

--snip--
# 从文件中获取日期和最高气温
1 filename = 'sitka_weather_2014.csv'
with open(filename) as f:
--snip--
# 设置图形的格式
2 plt.title("Daily high temperatures - 2014", fontsize=24)
plt.xlabel('', fontsize=16)
--snip--

我们修改了文件名,以使用新的数据文件sitka_weather_2014.csv(见1);我们还修改了图表 的标题,以反映其内容的变化(见2)。图16-3显示了生成的图形。

e227f44462b734827c1de4e5c723855b_8052a0029a9e42e5b9f6fcfa0c00784d.png

16.1.8 再绘制一个数据系列

图16-3所示的改进后的图表显示了大量意义深远的数据,但我们可以在其中再添加最低气温 数据,使其更有用。为此,需要从数据文件中提取最低气温,并将它们添加到图表中,如下所示:

highs_lows.py

--snip--
# 从文件中获取日期、最高气温和最低气温
filename = 'sitka_weather_2014.csv'
with open(filename) as f:
 reader = csv.reader(f)
 header_row = next(reader)
1 dates, highs, lows = [], [], []
for row in reader:
 current_date = datetime.strptime(row[0], "%Y-%m-%d")
 dates.append(current_date)
 high = int(row[1])
 highs.append(high)
2 low = int(row[3])
 lows.append(low)
# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize=(10, 6))
3 plt.plot(dates, highs, c='red')
 plt.plot(dates, lows, c='blue')
# 设置图形的格式
4 plt.title("Daily high and low temperatures - 2014", fontsize=24)
--snip

在1处,我们添加了空列表lows,用于存储最低气温。接下来,我们从每行的第4列(row[3]) 提取每天的最低气温,并存储它们(见2)。在3处,我们添加了一个对plot()的调用,以使用蓝 色绘制最低气温。最后,我们修改了标题(见4)。图16-4显示了这样绘制出来的图表。

b8070ec702b3cee57d2eb1588c8931fe_5a352d0d91c54cefad84d45f4fe396d4.png

16.1.9 给图表区域着色

添加两个数据系列后,我们就可以了解每天的气温范围了。下面来给这个图表做最后的修饰, 通过着色来呈现每天的气温范围。为此,我们将使用方法fill_between(),它接受一个x值系列和 两个y值系列,并填充两个y值系列之间的空间:

highs_lows.py

--snip--
# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize=(10, 6))
1 plt.plot(dates, highs, c='red', alpha=0.5)
plt.plot(dates, lows, c='blue', alpha=0.5)
2 plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
--snip--

1处的实参alpha指定颜色的透明度。Alpha值为0表示完全透明,1(默认设置)表示完全不 透明。通过将alpha设置为0.5,可让红色和蓝色折线的颜色看起来更浅。

在2处,我们向fill_between()传递了一个x值系列:列表dates,还传递了两个y值系列:highs 和lows。实参facecolor指定了填充区域的颜色,我们还将alpha设置成了较小的值0.1,让填充区 域将两个数据系列连接起来的同时不分散观察者的注意力。图16-5显示了最高气温和最低气温之 间的区域被填充的图表。

3fc913090d7acd226685d9b05bb824f1_90d4f022790147d3bde0fceb2e9efa46.png

通过着色,让两个数据集之间的区域显而易见。

目录
相关文章
|
4月前
|
测试技术 API Python
【10月更文挑战第1天】python知识点100篇系列(13)-几种方法让你的电脑一直在工作
【10月更文挑战第1天】 本文介绍了如何通过Python自动操作鼠标或键盘使电脑保持活跃状态,避免自动息屏。提供了三种方法:1) 使用PyAutoGUI,通过安装pip工具并执行`pip install pyautogui`安装,利用`moveRel()`方法定时移动鼠标;2) 使用Pymouse,通过`pip install pyuserinput`安装,采用`move()`方法移动鼠标绝对位置;3) 使用PyKeyboard,同样需安装pyuserinput,模拟键盘操作。文中推荐使用PyAutoGUI,因其功能丰富且文档详尽。
|
6月前
|
Python
python知识点
【8月更文挑战第27天】python知识点
3409 2
WK
|
6月前
|
存储 机器学习/深度学习 JSON
Python入门知识点
Python入门覆盖历史、设计理念、变量、数据类型、控制结构等。了解Python的发展,掌握动态类型的灵活性,熟悉整数、浮点数、字符串等数据类型。学会if/else、for/while循环构建逻辑流程,使用def定义函数,lambda快速创建匿名函数。通过类实现面向对象编程,利用模块和包组织代码。掌握try-except处理异常,open()进行文件操作。利用标准库和第三方库增强功能,理解集合、字典、列表推导式的应用,深入魔法方法、递归、装饰器等高级特性,以及上下文管理器和字符串、列表、元组的操作技巧。
WK
47 0
|
3月前
|
缓存 Java 索引
[Python]知识点
本文主要介绍了Python的一些高级知识点和使用细节,包括pip的使用、内置函数、列表、元组、字典、集合、变量、Lambda表达式、面向对象编程、异常处理、模块及标准库等。文章适合有一定Python基础的读者,重点在于深入理解和掌握Python的高级特性。文中还提供了大量示例代码,帮助读者更好地理解和应用这些知识点。
53 1
[Python]知识点
|
4月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
126 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
4月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
4月前
|
调度 Python
python知识点100篇系列(20)-python协程与异步编程asyncio
【10月更文挑战第8天】协程(Coroutine)是一种用户态内的上下文切换技术,通过单线程实现代码块间的切换执行。Python中实现协程的方法包括yield、asyncio模块及async/await关键字。其中,async/await结合asyncio模块可更便捷地编写和管理协程,支持异步IO操作,提高程序并发性能。协程函数、协程对象、Task对象等是其核心概念。
|
4月前
|
Python Windows
python知识点100篇系列(24)- 简单强大的日志记录器loguru
【10月更文挑战第11天】Loguru 是一个功能强大的日志记录库,支持日志滚动、压缩、定时删除、高亮和告警等功能。安装简单,使用方便,可通过 `pip install loguru` 快速安装。支持将日志输出到终端或文件,并提供丰富的配置选项,如按时间或大小滚动日志、压缩日志文件等。还支持与邮件通知模块结合,实现邮件告警功能。
python知识点100篇系列(24)- 简单强大的日志记录器loguru
|
4月前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
4月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。

热门文章

最新文章