下载数据

article/2025/9/27 2:47:19

下载数据

如今的社会的信息已经不能用氢弹大爆炸来形容了,信息的海量,多的难以置信,且大多未经过仔细检查,所以就需要对信息进行分析。
接下来我们将可视化两种常见格式存储的数据:CSV和JSON。
将使用Python模块csv来处理以CSV格式存储的天气数据,找出两个不同地区在一段时间内的最高温度和最低温度,然后生成一张图表。
还会使用json来访问以JSON格式存储的交易收盘价数据,并使用Pygal绘制图形以探索价格变化的周期性。

CSV文件格式

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

2014-1-5,61,44,26,187,-1,56,30.34,30.15,,,,10,4,,0.00,0,,195

其中包含当天的最高气温和最低气温,还有众多其他数据。该类型的文件阅读起来比较麻烦,但是可以使用程序读取和分析出来,方便人们阅读。

分析CSV文件头

csv模块包含在python标准库中,可用于分析CSV文件中的数据行。

#highs_lows.py
import csvfilename='sitka_weather_07-2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)print(header_row)

在这里插入图片描述

打印文件头及其位置

#highs_lows.py
import csvfilename='sitka_weather_07-2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)for index, column_header in enumerate(header_row):print(header_row)

在这里插入图片描述

提取并读取数据

#highs_lows.py
import csv#从文件中获取最高温度
filename='sitka_weather_07-2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)highs=[]for row in reader:highs.append(row[1])print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)

在这里插入图片描述

import csv#从文件中获取最高温度
filename='sitka_weather_07-2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)highs=[]for row in reader:high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)

在这里插入图片描述

绘制气温图表

#highs_lows.py
import csv
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)highs=[]for row in reader:high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(highs,c='red')#设置图形的格式
plt.title("Daily high temperatures,July 2014",fontsize=24)
plt.xlabel('',fontsize=16)
plt.ylabel("Temperature (F)",fontsize=16)
plt.tick_params(axis='both',which='major',labelsize=16)plt.show()

在这里插入图片描述

模块datetime

在这里插入图片描述
在读取上面数据时,获得的是一个字符串,为了把字符串中的日期转换为相应日期的对象,可使用模块datetime中的方法strptime().下面看怎么用的
在这里插入图片描述

实参含义
%A星期的名称,如Monday
%B月份名,如January
%m用数字表示的月份(01~12)
%d用数字表示月份中的一天(01~31)
%Y四位的年份,如2015
%y两位的年份,如15
%H24小时制的小时数(00~23)
%I12小时制的小时数(01~12)
%pam或pm
%M分钟数(00~59)
%S秒数(00~61)

在图表中添加日期

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

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)dates,highs=[],[]  #创建两个空列表,用于存储从文件中提取的日期和最高温度for row in reader:current_date=datetime.strptime(row[0],"%Y-%m-%d") #row[0]包含日期信息的数据转换为datetime对象dates.append(current_date)#并将其附加到列表dates的末尾high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red')#设置图形的格式
plt.title("Daily high temperatures,July 2014",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.show()

在这里插入图片描述

涵盖更长的时间

import csv
from datetime import datetime
from matplotlib import pyplot as plt#从文件中获取最高温度
#从文件中获取日期和最高温度
filename='sitka_weather_2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)dates,highs=[],[]  #创建两个空列表,用于存储从文件中提取的日期和最高温度for row in reader:current_date=datetime.strptime(row[0],"%Y-%m-%d") #row[0]包含日期信息的数据转换为datetime对象dates.append(current_date)#并将其附加到列表dates的末尾high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red')#设置图形的格式
plt.title("Daily high temperatures-2014",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.show()

在这里插入图片描述

在绘制一个数据系列

import csv
from datetime import datetime
from matplotlib import pyplot as plt#从文件中获取最高温度
#从文件中获取日期和最高温度和最低气温
filename='sitka_weather_2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)dates,highs,lows=[],[],[]  #创建两个空列表,用于存储从文件中提取的日期和最高温度for row in reader:current_date=datetime.strptime(row[0],"%Y-%m-%d") #row[0]包含日期信息的数据转换为datetime对象dates.append(current_date)#并将其附加到列表dates的末尾high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)low=int(row[3])lows.append(low)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red')
plt.plot(dates,lows,c='blue')#设置图形的格式
plt.title("Daily high and low temperatures-2014",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.show()

在这里插入图片描述

给图表区域着色

使用方法fill_between(),它接受一个x值系列和两个y值系列,并填充两个y值系列之间的空间

import csv
from datetime import datetime
from matplotlib import pyplot as plt#从文件中获取最高温度
#从文件中获取日期和最高温度和最低气温
filename='sitka_weather_2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)dates,highs,lows=[],[],[]  #创建两个空列表,用于存储从文件中提取的日期和最高温度for row in reader:current_date=datetime.strptime(row[0],"%Y-%m-%d") #row[0]包含日期信息的数据转换为datetime对象dates.append(current_date)#并将其附加到列表dates的末尾high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)low=int(row[3])lows.append(low)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red',alpha=0.5) #alpha指定颜色的透明度,为0表示完全透明,1表示完全不透明
plt.plot(dates,lows,c='blue',alpha=0.5)
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)#设置图形的格式
plt.title("Daily high and low temperatures-2014",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.show()

在这里插入图片描述

错误检查

任何时候在编写代码和处理数据时,有可能不会达到非常完美的状态,有可能发生在读取数据时,读取不到数据,这样的话就需要,对代码进行异常处理
比如在读取文件death_valley_2014.csv文件时,找不到最高气温,就会产生traceback。
在这里插入图片描述

import csv
from datetime import datetime
from matplotlib import pyplot as plt#从文件中获取最高温度
#从文件中获取日期和最高温度和最低气温
filename='death_valley_2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)dates,highs,lows=[],[],[]  #创建两个空列表,用于存储从文件中提取的日期和最高温度for row in reader:current_date=datetime.strptime(row[0],"%Y-%m-%d") #row[0]包含日期信息的数据转换为datetime对象dates.append(current_date)#并将其附加到列表dates的末尾high=int(row[1]) #将这些字符串转换为数字,然后方便,atplotlib读取它们highs.append(high)low=int(row[3])lows.append(low)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red',alpha=0.5) #alpha指定颜色的透明度,为0表示完全透明,1表示完全不透明
plt.plot(dates,lows,c='blue',alpha=0.5)
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)#设置图形的格式
plt.title("Daily high and low temperatures-2014",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.show()

在这里插入图片描述
那接下来我们就对异常进行处理

import csv
from datetime import datetime
from matplotlib import pyplot as plt#从文件中获取最高温度
#从文件中获取日期和最高温度和最低气温
filename='death_valley_2014.csv'
with open(filename) as f:reader=csv.reader(f)header_row=next(reader)dates,highs,lows=[],[],[]  #创建两个空列表,用于存储从文件中提取的日期和最高温度for row in reader:try:current_date = datetime.strptime(row[0],"%Y-%m-%d")  #row[0]包含日期信息的数据转换为datetime对象high = int(row[1])  #将这些字符串转换为数字,然后方便,atplotlib读取它们low = int(row[3])except ValueError:print(current_date,'missing data')else:dates.append(current_date)#并将其附加到列表dates的末尾highs.append(high)lows.append(low)print(highs)#for index, column_header in enumerate(header_row):#   print(header_row)#根据数据绘制图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red',alpha=0.5) #alpha指定颜色的透明度,为0表示完全透明,1表示完全不透明
plt.plot(dates,lows,c='blue',alpha=0.5)
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)#设置图形的格式
title="Daily high and low temperatures-2014\nDeath 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.show()

在这里插入图片描述

注:在编写异常处理的代码时,出现了一个小插曲,因为提供的原始excel表格数据,里面有部分的日期是XXXX表示的,我就把这些XXXX的日期改为了具体的日期,然后就不得了了,在编译运行的时候,总是报错,说current_date没有定义,就在网上搜啊,说很多方法都不相符,然后呢,就想到了自己动手改过数据文件的格式然后呢,就把excel数据文件的格式恢复成原始状态后,就好了!

原始的数据文件:
在这里插入图片描述
修改后的数据文件:
在这里插入图片描述
然后编译运行出现的错误:
在这里插入图片描述
前面已经定义了,然后呢,在后面就出错了。
可能是修改数据文件的软件和数据文件原始使用的软件不相符和导致的。


http://chatgpt.dhexx.cn/article/tvM5LeXQ.shtml

相关文章

常见目标跟踪数据集下载链接整理(更新中)

搜罗一下,感觉没人把常见的目标跟踪数据集下载链接汇总整理的,这里就整理一下,因为有些网址很难打开,这里也是想方便之后大家获取,来看看吧!我就从大佬图中来找几个吧!因为不是全接触过&#xf…

数据集下载

1、直接下载pytorch官方现成的数据集: #数据集下载,训练集 trainset torchvision.datasets.name(root./data,trainTrue,downloadTrue,transformtransformer) #数据集导入 trainloader torch.utils.data.DataLoader(trainset,batch_size36,shuffleTrue,num_worker…

NHANES数据库数据下载

今天跟大家分享一下如何用R包nhanesA下载NHANES数据 以一个简单的研究目的为例:使用NHANES数据库中的数据构建一个舒张压的预测模型。 根据该研究目的,整理纳入分析的周期和变量: ①研究周期:2013-2014年; ②因变量…

常用数据下载网站汇总

AI最重要的几大要素:数据、算法、算力。其中最基础也是很重要的一个内容就是数据,一个数据的好坏往往决定了你的模型的性能、效果、泛化能力。但是准备、完善、标注数据的过程往往是耗时耗力,所以如何知道更多的经典数据集,能够快…

SRA数据下载方法总结

SRA数据常用的下载方法 研究生了,对以往的知识进行一个复习和总结吧。 SRA数据库存储了现在主要高通量测序平台的原始测序数据和和比对信息,包括了SRA、EBI、DDBJ、JGI等数据库的信息。(这里分享一个小的知识点,现在可以不只依赖…

maxcompute-入门-数据下载

maxcompute数据下载的三种方式 maxcoumpute下载数据有三种方式: 1、直接通过dataworks云端下载,但是这个只能下载小于1万行的数据; 2、通过odpscmd客户端下载,有两种方式:分区下载只能下一天数据;或者先运行…

IBM Websphere MQ 基础4:Channel通道与MQ间消息传输

概念 WebSphere MQ uses two different types of channels: A message channel, which is a unidirectional communications link between two queue managers. WebSphere MQ uses message channels to transfer messages between the queue managers. To send messages in b…

MQ - 如何保证消息不丢失?处理重复消息?消息堆积处理?

什么是消息队列 在百度百科中,消息队列是这么解释的:“消息队列”是在消息的传输过程中保存消息的容器。 消息队列全称为英文 Message Queue 简称(MQ)是一种应用程序对应用程序的通信方法。MQ 是消费-生产者模型的一个典型的代表…

IBM MQ通道常用知识列举(一)

MQ的几个基本组件: 1. 什么是通道 通道是分布式队列管理器在IBM MQ MQI 客户端和IBM MQ服务器之间或两个IBM MQ服务器之间使用的逻辑通信链路。通道用于将消息从一个队列管理器移动到另一个队列管理器。 2, 启动通道 对发送方、服务器和请求方通道使用 MQSC 命令…

微服务 消息中间件MQ

微服务 消息中间件MQ 1. MQ的定义2. MQ的作用3. MQ的特点4. MQ消费方式5. 常用MQ对比分析 1. MQ的定义 MQ就是消息中间件。面向消息的中间件(message-oriented middleware)MOM能够很好的解决以上问题。是指利用高效可靠的消息传递机制与平台无关的数据交…

MQ消息队列

MQ MQ全称Message Queue(消息队列), 实在消息传输过程中保存消息的容器。多用于分布式系统之间进行通信两种 通信方式: MQ优势 消息到达MQ后直接给出响应,然后服务去消费相应的消息,用户体验极好 应用解耦:提高系…

IBMMQ linux版命令创建队列管理器、队列、通道、window连接(六)

1. 队列、通道介绍 1.1 本地队列 本地队列又分为普通本地队列和传输队列,普通本地队列是应用程序通过API对其进行读写操作的队列;传输队列可以理解为存储-转发队列,比如:我们将某个消 息交给MQ系统发送到远程主机,而此…

IBM MQ 通道

一,定义 通道是分布式队列管理器在IBM MQ MQI 客户端和IBM MQ服务器之间或两个IBM MQ服务器之间使用的逻辑通信链接。 通道是提供从一个队列管理器到另一个队列管理器的通信路径的对象。通道在分布式队列中用于将消息从一个队列管理器移动到另一个队列管理器&#x…

MQ135

这里写自定义目录标题 以MQ135为例 原文链接 首先声明,公式不是官方给定的,而且有很多的局限性。 这篇文章是个人对MQ系列传感器电压与浓度转换的公式进行一个探索。 以MQ135为例 在氨气曲线上采点,得 x(ppm)[10,2…

MQ简介以及架构图

一、什么是MQ Message Query(MQ),消息队列中间件,很多初学者认为,MQ通过消息的发送和接受来实现程序的异步和解耦,mq主要用于异步操作,这个不是mq的真正目的,只不过是mq的应用&…

IBMMQ java远程访问(四)

当应用程序和MQ不在同一台主机上的时候,我们将要通过通道去访问; 1.创建队列管理器时勾选创建服务器链接通道; 2.创建一个本地队列 命名为Q1 3.创建通道 右击通道->新建->服务器链接通道 命名为SERVERQM2 4.代码示例调用 package com.i…

MQ理论介绍与主流MQ对比

1、什么是MQ? MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然…

什么是MQ

MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进 行通信。 分布式系统之间进行通信: 远程调用:各系统间直接通过远程调用的方式; 借助第三方完成系统…

MQ的概念和RabbitMQ知识点(无代码)

目录 1. MQ的基本概念 1.1 MQ概述 1.2 MQ的优势 1. 应用解耦 2. 异步提速 3. 削峰填谷 1.3 MQ的劣势以及可能引发的问题 1.4 常见的MQ产品 2. RabbitMQ的知识点 2.1 RabbitMQ的工作模式 1. 简单模式 2. 工作队列模式 Work Queue 3. 发布订阅模式 Publish/subscri…

MQ简介

一、何为MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通…