首页 > 编程语言 >python项目2--【数据可视化】之下载数据

python项目2--【数据可视化】之下载数据

时间:2022-11-24 17:59:14浏览次数:54  
标签:07 SITKA python AK US -- 可视化 2018 USW00025333

目录

python项目2--【数据可视化】之下载数据

本章将从网上下载数据,并对其进行可视化。网上的数据多得令人难以置信,大多未经仔细检查。如果能够对这些数据进行分析,就能发现别人没有发现的规律。

本章将访问并可视化的数据以两种常见格式存储:CSVJSON。我们将使用Python模块csv来处理以CSV格式存储的天气数据,找出两个地区在一段时间内的最高温度和最低温度。然后,使用Matplotlib根据下载的数据创建一个图标,展示两个不同地区的温度变化:阿拉斯加州锡特卡和加利福利亚死亡谷。然后,使用模块json访问以JSON格式存储的地震数据,并使用Plotly绘制一幅散点图,展示这些地震的位置和震级。

阅读本章后,将能够处理各种类型和格式的数据集,并对如何创建复杂的图表有深入的认识。要处理各种真实的数据集,必须能够访问并可视化各种类型和格式的在线数据。

一、CSV文件格式

要在文本文件中存储数据,一个简单方式是将数据作为一系列以逗号分隔的值(comma-separated values)写入文件。这样的文件称为CSV文件。例如,下面是一行CSV格式的天气数据。

"USWOOO25333", "sitka airport, AK US", "2018-01-01", "0.45", "48", "38"

这是阿拉斯加州锡特卡2018年1月1日的天气数据,其中包含当天的最高温度和最低温度,还有众多其他的数据。CSV文件对人来说阅读起来比较麻烦。但程序可轻松提取并处理其中的值。有助于加快数据分析过程。

我们将首先处理少量CSV格式的锡特卡天气数据,这些数据可在(ituring.cn/book/2784)中找到。请将文件sitka_weather_07-2018_simple.csv复制到存储本章程序的文件夹中。

文件内容如下:

"STATION","NAME","DATE","PRCP","TAVG","TMAX","TMIN"
"USW00025333","SITKA AIRPORT, AK US","2018-07-01","0.25",,"62","50"
"USW00025333","SITKA AIRPORT, AK US","2018-07-02","0.01",,"58","53"
"USW00025333","SITKA AIRPORT, AK US","2018-07-03","0.00",,"70","54"
"USW00025333","SITKA AIRPORT, AK US","2018-07-04","0.00",,"70","55"
"USW00025333","SITKA AIRPORT, AK US","2018-07-05","0.00",,"67","55"
"USW00025333","SITKA AIRPORT, AK US","2018-07-06","0.00",,"59","55"
"USW00025333","SITKA AIRPORT, AK US","2018-07-07","0.00",,"58","55"
"USW00025333","SITKA AIRPORT, AK US","2018-07-08","0.00",,"62","54"
"USW00025333","SITKA AIRPORT, AK US","2018-07-09","0.00",,"66","55"
"USW00025333","SITKA AIRPORT, AK US","2018-07-10","0.44",,"59","53"
"USW00025333","SITKA AIRPORT, AK US","2018-07-11","0.29",,"56","50"
"USW00025333","SITKA AIRPORT, AK US","2018-07-12","0.02",,"63","49"
"USW00025333","SITKA AIRPORT, AK US","2018-07-13","0.00",,"65","48"
"USW00025333","SITKA AIRPORT, AK US","2018-07-14","0.32",,"58","52"
"USW00025333","SITKA AIRPORT, AK US","2018-07-15","0.75",,"56","52"
"USW00025333","SITKA AIRPORT, AK US","2018-07-16","0.61",,"59","52"
"USW00025333","SITKA AIRPORT, AK US","2018-07-17","0.00",,"64","52"
"USW00025333","SITKA AIRPORT, AK US","2018-07-18","0.16",,"60","53"
"USW00025333","SITKA AIRPORT, AK US","2018-07-19","0.14",,"60","53"
"USW00025333","SITKA AIRPORT, AK US","2018-07-20","0.00",,"61","56"
"USW00025333","SITKA AIRPORT, AK US","2018-07-21","0.00",,"65","55"
"USW00025333","SITKA AIRPORT, AK US","2018-07-22","0.00",,"65","54"
"USW00025333","SITKA AIRPORT, AK US","2018-07-23","0.00",,"63","54"
"USW00025333","SITKA AIRPORT, AK US","2018-07-24","0.00",,"59","52"
"USW00025333","SITKA AIRPORT, AK US","2018-07-25","0.00",,"64","52"
"USW00025333","SITKA AIRPORT, AK US","2018-07-26","0.00",,"65","58"
"USW00025333","SITKA AIRPORT, AK US","2018-07-27","0.00",,"68","58"
"USW00025333","SITKA AIRPORT, AK US","2018-07-28","0.00",,"66","56"
"USW00025333","SITKA AIRPORT, AK US","2018-07-29","0.00",,"64","56"
"USW00025333","SITKA AIRPORT, AK US","2018-07-30","0.00",,"67","58"
"USW00025333","SITKA AIRPORT, AK US","2018-07-31","0.00",,"65","56"

1. 分析CSV文件头

csv模块包含在Python标准库中,可用于分析CSV文件中的数据行,让我们能够快速提取感兴趣的值。先来查看这个文件的第一行,其中的一系列文件头指出了后续各行包含的是什么样的信息:

导入模块csv后,将要使用的文件的名称赋给filename。接下来,打开这个文件,并将返回的文件对象赋给f。然后,调用csv.reader()并将前面存储的文件对象作为实参传递给它,从而创建一个与该文件相关联的阅读器对象。这个阅读器对象被赋给了reader

模块csv包含函数next(),调用它并传入阅读器对象时,它将返回文件中的下一行。在上述代码中,只调用了next()一次,因此得到的是文件的第一行,其中包含文件头。将返回的数据存储到header_row中,如你所见,header_row包含与天气相关的文件头,指出了每行都包含哪些数据。

reader处理文件中以逗号分隔的第一行数据,并将没想数据都作为一个元素存储在列表中。文件头STATION表示记录数据的气象站的编码。这个文件头的位置表明,每行的第一个值都是气象站编码。文件头NAME指出每行的第二个值都是记录数据的气象站名称。其他文件头则指出记录了哪些信息。当前,我们最关心的是日期(DATE)、最高温度(TMAX)和最低温度(TMIN)。这是一个简单的数据集,只包含降水量以及与温度相关的数据。你自己下载天气数据时,可选择涵盖众多测量值,如风速、风向以及详细的降水量数据。

2. 打印文件头及其位置

为了让文件头数据更容易理解,将列表中的每个文件头及其位置打印出来:

在循环中,对俩表调用了enumerate()来获取每个元素的索引及其值。(请注意,我们删除了代码行print(header_row),转而显示这个更详细的版本)。

输出如下,指出了每个文件头的索引:

从中可知,日期和最高温度分别存储在第三列和第六列。为研究这些数据,我们将处理sitka_weather_07-2018_simple.csv中的每行数据,并提取其中索引为2和5的值。

3. 提取并读取数据

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

创建一个名为highs的空列表,再遍历文件中余下的各行。阅读器对象从其停留的地方继续往下读取CSV文件,每次都自动返回当前所处位置的下一行。由于已经读取了文件头行,这个循环将从第二行开始——从这行开始包含的是实际数据。每次执行循环时,都将索引5(TMAX列)的数据附加到highs末尾。在文件中,这项数据是以字符串格式存储的,因此在附加到highs末尾前,使用函数int()将其转换为数值格式,以便使用。

highs现在存储的数据如下:

提取每天的最高温度并将其存储到列表中之后,就可以可视化这些数据了。

4. 绘制温度图表

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

将最高温度列表传给plot(),并传递c='red'以便将数据点绘制为红色。(这里使用红色显示最高温度,用蓝色显示最低温度。)接下来,设置了一些其他的格式,如名称和字号,这些都在之前的博客中介绍过。鉴于还没有添加日期,因此没有给x轴添加标签,但ax.set_xlabel()确实修改了字号,让默认标签更容易看清。下图显示了绘制的图表:一个简单的折线图,显示了阿拉斯加州锡特卡2018年7月的每日最高温度。

5. 编辑中

标签:07,SITKA,python,AK,US,--,可视化,2018,USW00025333
From: https://www.cnblogs.com/dingcong1201/p/16922664.html

相关文章

  • 校招补一个什么样的项目比较好?
    校招一年比一年卷,千军万马过独木桥的情况下该怎样充实自己的项目经历?有两件事要搞明白!一、什么是【好】项目?好项目在简历上要能一眼看出亮点和提问点。并且要能够把提问......
  • 事件_常见事件演示与案例5_表格全选
    事件_常见事件演示 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>常见事件</title><script>/*常见的......
  • apt-get install 报错:E: Could not open lock file /var/lib/dpkg/lock-frontend - op
    直接在服务器敲:apt-getinstall xxxx遇到报错:E:Couldnotopenlockfile/var/lib/dpkg/lock-frontend-open(13:Permissiondenied)E:Unabletoacquirethe......
  • 欺诈团伙遇上关联网络,邪不压正
    你可能永远都想不到骗子有多狡猾、多专业。最近,小象看到这样一个案例:近日,小王接到了一个自称“京东客服”的电话,说她网购的银行卡有一些网贷需要注销。因为个人信息与她......
  • 基于docker搭建Jenkins+git+python+allure
    一、创建jenkins容器1、拉取jenkins镜像dockerpulljenkins/jenkins:latest    2、创建本地目录,后续挂载jenkins的工作目录mkdir/home/jenkins_home3、......
  • StringTable
    1.StringTable特性  2.StringTable位置   (多个jvm参数用空格分割)  3.StringTable垃圾回收 4.StringTable性能调优1.通过设置桶个数-XX:StringTabl......
  • SQL查询用NoLock
    大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的是查询是不锁定表,从而达到提高查询速度的目的。什么是并发访问:同一时间有多个用户访问......
  • 小程序 XQTypeScriptFramework 使用
    说明XQTypeScriptFramework隶属于XQFramework下JS基础性框架部分XQFramework励志将开发将常用开发语言基础性框架统一汇总,为全站开发使用到的基础语法进行统一,拜......
  • 修改rabbitMQ3.8默认端口号
    1、创建配置文件(最好就放这个目录,本人就遇到放其他目录不能加载配置文件,搞了几个小时才搞定)cd /etc/rabbitmqvimrabbitmq.conf 2、配置文件内容如下:(默认的数据管理......
  • 案例3_自动跳转首页和DOM_概述
    案例3_自动跳转首页:分析:1.显示页面效果<p>2.倒计时读秒效果实现2.1定义一个方法,获取span标签,修改span标签体内容,时间--2.2定义一个定时器,1秒执行一次该方法3.在方法......