练习 16-2 比较锡特卡和死亡谷的温度
在有关锡特卡和死亡谷的图表中,气温刻度反映了数据范围的不同。为准确地比较锡
特卡和死亡谷的气温范围,需要在 y 轴上使用相同的刻度。为此,请修改图 16-5 和图 16-6
所示图表的 y 轴设置,对锡特卡和死亡谷的气温范围进行直接比较(你也可以对任何两个
地方的气温范围进行比较)。
书上给的答案:
import csv
from datetime import datetime
from matplotlib import pyplot as plt
def get_weather_data(filename, dates, highs, lows, date_index, high_index,low_index):"""从数据文件中获取最高气温和最低气温。"""with open(filename) as f:reader = csv.reader(f)header_row = next(reader)# 从文件中获取日期、最高气温和最低气温。for row in reader:current_date = datetime.strptime(row[date_index], '%Y-%m-%d')try:high = int(row[high_index])low = int(row[low_index])except ValueError:print(f"Missing data for {current_date}")else:dates.append(current_date)highs.append(high)lows.append(low)
# 获取锡特卡的气温数据。
filename = 'sitka_weather_2018_simple.csv'
dates, highs, lows = [], [], []
get_weather_data(filename, dates, highs, lows, date_index=2, high_index=5,low_index=6)# 根据锡特卡的数据绘制图表。
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red', alpha=0.6)
ax.plot(dates, lows, c='blue', alpha=0.6)
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.15)# 获取死亡谷的数据。
filename = 'death_valley_2018_simple.csv'
dates, highs, lows = [], [], []
get_weather_data(filename, dates, highs, lows, date_index=2, high_index=4,low_index=5)# 将死亡谷的数据添加到当前图表中。
ax.plot(dates, highs, c='red', alpha=0.3)
ax.plot(dates, lows, c='blue', alpha=0.3)
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.05)# 设置图表的格式。
title = "Daily high and low temperatures - 2018"
title += "\nSitka, AK and Death Valley, CA"
plt.title(title, fontsize=24)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.ylim(10, 130)
plt.show()

这里的话其实可以让索引变为自动的,改进一下就可以变成:

要获取CSV格式里面的数据,要用索引的方式,可以是硬索引,直接把数给指定下,或者可以采用下面的自动索引方式:打开指定的CSV文件后,通过读取首行,然后把相应的标题所在索引拿出来,每行不同种类数据的位置相对固定的,和标题行是一样的,所以提取标题行的位置,就可以套用到每一行上,从而提取相应种类的数据。比如CSV里面首行的第二列是"NAME",这样知道首行的“NAME”的位置,就可以找出下面每一行“NAME”的对应数值。

import csv
from datetime import datetime
from matplotlib import pyplot as plt
def get_weather_data(filename, dates, highs, lows,):"""从数据文件中获取最高气温和最低气温。"""with open(filename) as f:reader = csv.reader(f)header_row = next(reader)date_index=header_row.index("DATE")high_index=header_row.index("TMAX")low_index=header_row.index("TMIN")#这里比原版的答案改进了一下,调用了自动索引# 从文件中获取日期、最高气温和最低气温。for row in reader:current_date = datetime.strptime(row[date_index], '%Y-%m-%d')try:high = int(row[high_index])low = int(row[low_index])except ValueError:print(f"Missing data for {current_date}")else:dates.append(current_date)highs.append(high)lows.append(low)
# 获取锡特卡的气温数据。
filename = 'sitka_weather_2018_simple.csv'
dates, highs, lows = [], [], []
get_weather_data(filename, dates, highs, lows)# 根据锡特卡的数据绘制图表。
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red', alpha=0.6)
ax.plot(dates, lows, c='blue', alpha=0.6)
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.15)# 获取死亡谷的数据。
filename = 'death_valley_2018_simple.csv'
dates, highs, lows = [], [], []
get_weather_data(filename, dates, highs, lows)# 将死亡谷的数据添加到当前图表中。
ax.plot(dates, highs, c='red', alpha=0.3)
ax.plot(dates, lows, c='blue', alpha=0.3)
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.05)# 设置图表的格式。
title = "Daily high and low temperatures - 2018"
title += "\nSitka, AK and Death Valley, CA"
plt.title(title, fontsize=24)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.ylim(10, 130)
plt.show()

《Python编程:从入门到实践》练习16-2:比较锡特卡和死亡谷的温度相关推荐

  1. 《Python编程从入门到实践》16.2.6收盘价均值,代码理解

    在学习<Python编程从入门到实践>16.2.6收盘价均值这块时,代码不是很清晰,里面有lambda法则等,可能作者不想涉及太多高级内容所以没有详细写,自己把自己的理解过程记录如下. 本 ...

  2. python数据可视化从入门到实战_《Python编程从入门到实践》json数据可视化练习详解...

    <Python编程从入门到实践>16.2中,计算收盘价均值的程序有些不易看懂,结合我自己的理解进行一些说明. 使用的数据集:join格式的数据, 数据集是由多个字典为元素组成的列表.每个字 ...

  3. python unique函数_《Python编程从入门到实践》json数据可视化练习详解

    <Python编程从入门到实践>16.2中,计算收盘价均值的程序有些不易看懂,结合我自己的理解进行一些说明. 使用的数据集:join格式的数据, 数据集是由多个字典为元素组成的列表.每个字 ...

  4. python基础学习[python编程从入门到实践读书笔记(连载五)]:数据可视化项目第16章

    文章目录 下载数据 制作全球地震散点图:JSON格式 end 几个实验结果: 每日最高气温: 地震图绘制: 下载数据 CSV文件格式 在文本文件中存储数据,一个简单方式是将数据作为一系列以逗号分隔的值 ...

  5. python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目

    文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...

  6. python编程从入门到实践 第18章Django入门 2022年最新

    说明:这篇文章只是记录自己自学本书的一个痕迹,日后来看作为一个念想.至于做为公开,是希望对一些同样跟我一样的朋友有一点点帮助,当然我本人就是小白,帮助可能也不大哈哈. 这篇文章记录了<pytho ...

  7. Python编程从入门到实践(第三、四章的列表和元祖)

    1.Python中列表用[]来表示,并用逗号分隔其中元素 2.访问列表元素,给出元素的索引值即可(索引从0开始) 3.修改,添加和删除元素 3.1修改时给出列表名和修改元素的索引,然后赋新值 3.2在 ...

  8. 《Python编程从入门到实践》袁国忠 译 P1~P200学习笔记

    <Python编程从入门到实践>袁国忠 译 P1~P200 学习笔记 <Python编程从入门到实践>袁国忠 译 P1~P200之前两天在学习时做的笔记总结,在这里也记录一下, ...

  9. python编程从入门到实践 配套资源下载地址 免费!

    <python编程从入门到实践>书中有一些需要配套资源的,比如12章需要飞船图像ship.bmp和外星人图像,16章需要从网上下载天气数据.这些资源如果从论坛下载有点麻烦,要注册和积分的. ...

  10. python开发之父亲自编写《python编程从入门到实践》中译版图书销量破百万册,完整版PDF开放下载

    为什么要学习python 主流编程语言 世界上的编程语言有600多种,但真正大家主流在使用的最多二三十种,不同的语言有自己的特点和擅长领域,随着计算机的不断发展,新语言在不断诞生,也同时有很多老旧的语 ...

最新文章

  1. Windows 2008 R2 SP1部署Lync2010标准版(1)
  2. 关于Combobox的多选和单选情况
  3. 课堂练习 5-22 团队如何做决定
  4. 跟我一起学Redis之高可用从主从复制开始
  5. crond服务及用法
  6. C语言运算符的优先级与结合性
  7. Matlab入门:界面认识
  8. 饿了么,美团外卖红包小程序欢迎了解一下(0基础搭建自己的外卖分销cps小程序)
  9. Qt数据可视化(QPieSeries饼状图)
  10. 小米手机已连接但无法访问互联网解决办法
  11. python提取二值栅格上边界和中线
  12. CTGU 2021春-MySQL数据库实验2:基本查询1-2关,共10小题全代码+信息表+通关截图!
  13. 双动道岔计算机控制系统,车站信号自动控制习题.doc
  14. 当遇到火狐浏览器“建立安全连接失败”问题,处理方法
  15. 面经 | 腾讯/阿里/京东/头条/旷视等20+企业计算机视觉算法岗面经吐血整理
  16. C++Primer PLus 第五版读书笔记
  17. 关于rangeOfString判断是否存在字符串bug
  18. html5什么网站知乎,老司机秒懂的5个资源网站,知乎超过10万人推荐,竟被我挖掘到了...
  19. 甲骨文培训第一天,预科学习
  20. 【PHP注入01】PHP语言常见可注入函数(eval、assert、preg_replace、call_user_func、$a($b)等)

热门文章

  1. dof景深matlab,Shader学习(三):DOF(景深)
  2. MessageBox--获知点击确认还是取消?
  3. 普中科技单片机AD电压数模转换。STC89C52和XPT2046 芯片
  4. 跨平台,跨浏览器兼容性问题_跨浏览器兼容性检查的完整指南
  5. win10只有c盘怎么分区_win10系统硬盘怎么分区
  6. Redhat 8修改系统语言为英文
  7. PHP生成海报/PHP合并图片/PHP图片处理
  8. 修改tomcat的临时文件夹_解决:tomcat重新部署会删除临时文件以及临时文件夹
  9. IBM笔记本电池保养细则
  10. pg PostGIS教程:几何图形(geometry)