本章首先探索在线公开数据源。然后介绍CSV和JSON格式数据的处理,并分别用Matplotlib和Plotly做可视化。

CSV文件格式

CSV(comma-separated values)格式,正如其名字所示,就是用逗号分割的值。
CSV非常适合于快速处理。
在随书示例中已包含示例数据,这些数据来自于Climate Data Online

以下程序读取CSV文件中的最高气温:

import csvfilename = 'data/sitka_weather_2018_simple.csv'
with open(filename) as f:reader = csv.reader(f)header_row = next(reader)# Get dates and high temperatures from this file.dates, highs = [], []for row in reader:high = int(row[5])highs.append(high)print(highs)

年度日最高气温绘图如下:

需要指出,数据在CSV中已经按日期排序。
然后加上每日最低温,我们看一下代码片段:

...
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red', alpha=0.5) # 日最高温
ax.plot(dates, lows, c='blue', alpha=0.5) # 日最低温
...
fig.autofmt_xdate() # 第一次使用fig变量
...

输出如下:

在两个曲线中间可以选择填充或不填充。
接下来讲的是错误处理,也就是有些值为空的情况,通过exception可以处理。
我们也可以自己下载气候数据。

映射全局数据集:JSON格式

本节将用Plotly来展示JSON格式的地震数据。数据来自United States Geological Survey。

一些地震术语:

  • magnitude: 震级
  • Richter scale:里氏震级,下载示例数据只包含M1级及以上数据
  • longitude:经度
  • latitude:纬度

以下是一条地震数据:

        {"type": "Feature","properties": {"mag": 1.2,"place": "11km NNE of North Nenana, Alaska","time": 1550358909272,"updated": 1550359211283,"tz": -540,"url": "https://earthquake.usgs.gov/earthquakes/eventpage/ak0192641ikq","detail": "https://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/ak0192641ikq.geojson","felt": null,"cdi": null,"mmi": null,"alert": null,"status": "automatic","tsunami": 0,"sig": 22,"net": "ak","code": "0192641ikq","ids": ",ak0192641ikq,","sources": ",ak,","types": ",geoserve,origin,","nst": null,"dmin": null,"rms": 0.94,"gap": null,"magType": "ml","type": "earthquake","title": "M 1.2 - 11km NNE of North Nenana, Alaska"},"geometry": {"type": "Point","coordinates": [-148.9865,64.6673,0]},"id": "ak0192641ikq"},

以下代码读取所有地震数据,features在整个文件中只出现了一次:

all_eq_dicts = all_eq_data['features']
print(len(all_eq_dicts))

读取单条地震数据的震级:

mags = []for eq_dict in all_eq_dicts:mag = eq_dict['properties']['mag']mags.append(mag)

接下来读取地震发生的位置:

lon = eq_dict['geometry']['coordinates'][0]
lat = eq_dict['geometry']['coordinates'][1]

以下是完整的探索数据的代码eq_explore_data.py

import json# Explore the structure of the data.
filename = 'data/eq_data_1_day_m1.json'
with open(filename) as f:all_eq_data = json.load(f)all_eq_dicts = all_eq_data['features']mags, lons, lats = [], [], []
for eq_dict in all_eq_dicts:mag = eq_dict['properties']['mag']lon = eq_dict['geometry']['coordinates'][0]lat = eq_dict['geometry']['coordinates'][1]mags.append(mag)lons.append(lon)lats.append(lat)print(mags[:10])
print(lons[:5])
print(lats[:5])

JSON的处理是很强大的,使用也很简单,只需搞清楚JSON的结构。
接下来做可视化。会做一些定制,如:

  • 根据震级显示点的大小
  • 根据震级显示颜色深浅

以下代码显示可用的色阶(color scale):

>>> from plotly import colors
>>> for key in colors.PLOTLY_SCALES.keys():
...     print(key)
...
Greys
YlGnBu
Greens
YlOrRd
Bluered
RdBu
Reds
Blues
Picnic
Rainbow
Portland
Jet
Hot
Blackbody
Earth
Electric
Viridis
Cividis

以下为程序输出,悬浮文本也是通过代码拼接出来的:

Plotly运行程序有警告:

This tool has been deprecated, use 'gio open' instead.

Python Crash Course读书笔记 - 第16章:DOWNLOADING DATA相关推荐

  1. Python Crash Course读书笔记 - 第19章:USER ACCOUNTS

    允许用户输入数据 目前用户数据Topic和Entry都是通过管理站点输入的,我们希望用户可以新增和编辑数据. 允许用户输入和提交数据的Web页面称为form,在Django中可使用ModelForm. ...

  2. Python Crash Course读书笔记 - 第18章:GETTING STARTED WITH DJANGO

    Django是一个web框架.可用来构建交互式网站. 设置项目 首先需要写项目说明书(spec). 然后需要创建虚拟环境(virtual environment). 虚拟环境是一个隔离的环境,可以单独 ...

  3. Python Crash Course读书笔记 - 第15章:GENERATING DATA

    数据可视化是指通过可视化的手段探索数据,和数据分析紧密关联.通过代码来探索数据集的模式. 和显示酷炫的图片无关,而是让用户之前并不知道的数据含义和模式. Python被广泛应用于遗传学,气候研究,政治 ...

  4. Python Crash Course读书笔记 - 第2章:Variables and Simple Data Types

    变量 文件hello_world.py中, .py是python文件的后缀,因此会用Python interpreter解析. $ cat hello_world.py print("Hel ...

  5. python第三章上机实践_《机器学习Python实践》读书笔记-第三章

    <机器学习Python实践>,第三章,第一个机器学习项目 以往目录:橘猫吃不胖:<机器学习Python实践>读书笔记-第一章​zhuanlan.zhihu.com 书中介绍了一 ...

  6. 开始读Python Crash Course读书笔记

    2020年1月13日晚开始读Python Crash Cours第二版.Crash Course是速成班的意思. 简要信息如下: Python Crash Course, 2nd Edition A ...

  7. 《C++ Primer Plus》读书笔记 第16章 string类和标准模板库

    第16章 string类和标准模板库 1.string类 表16.1列出了string类的几个构造函数.其中NBTS(null-terminated string)表示以空字符结束的传统C-风格字符串 ...

  8. python基础教程读书笔记——第三章 字符串

    第三章 字符串 摘要: %s , $x , find()  , join() , split() , lower() , title() , strip() 1.字符串格式化 format = &qu ...

  9. PHP Cookbook读书笔记 – 第16章互联网服务

    发送电子邮件 书中主要是以PEAR中的邮件发送类(Mail)来讲解的(关于如何在WIN系统下安装PEAR可以参考WIN下成功安装PEAR).PEAR的MAIL类可以通过3种方式来发送电子邮件: 通过P ...

最新文章

  1. 十二月份找工作好找吗_小儿推拿师工作好找吗?工资高吗?
  2. 北京金融局、通州区政府与蚂蚁金服战略合作 共防系统性金融风
  3. nyist 2 括号配对问题
  4. 玩转接口测试,那些必备的技能
  5. Android6.0指纹识别开发
  6. django基础知识之验证码:
  7. 7 centos 查看程序文件数量_MongoDB最大连接数(centos7应用程序最大打开文件数)设置失效的异常分析过程与解决方法...
  8. 软件系统演示脚本实践(草稿)
  9. php抓取微信公众号文章 封面图,教你如何一键提取微信公众号文章的封面图
  10. 怎么批量查询银行卡号是哪个银行?
  11. git出现 [rejected]master -> master (non-fast-forward)问题怎么解决
  12. 关于@Autowired属性飘红
  13. [2022 强网杯] devnull 复现
  14. Tiger DAO VC:DAO组织风险投资时代来临
  15. GIF动图拆分为多个静态图片
  16. 惊心动魄的开源项目“政变”,堪比宫斗...
  17. Fragment懒加载,上岸蚂蚁金服
  18. 三、在eclipse项目中添加Junit4
  19. c++ pair 加减运算符重载
  20. 2019/7/17 虚拟化及kvm(02)

热门文章

  1. JDBC连接数据库五步
  2. 樱花相册炫酷3D(含背景音乐)
  3. 【C++】智能指针用法详解(非常实用)
  4. 10分钟学会python写游戏脚本!Python其实很简单
  5. 关于在银河麒麟系统中QUdpSocket组播遇到多网段IP的问题
  6. innoDB四大特性
  7. html语言换行格式,html换行符br标签
  8. 2020C证(安全员)证考试及C证(安全员)实操考试视频
  9. Java 实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个蓝球中随机选择1个组成一注彩票。可以选择买多注。
  10. matlab课程数字图像处理设计题目,数字图像处理课程设计题目和要求_2013