python-数据可视化-下载数据-CSV文件格式

数据以两种常见格式存储:CSVJSON

CSV文件格式

comma-separated values

import csv
filename = 'sitka_weather_07-2018_simple.csv'
with open(filename) as f:reader = csv.reader(f)header_row = next(reader)print(header_row)
# ['USW00025333', 'SITKA AIRPORT, AK US', '2018-01-01', '0.45', '', '48', '38']for index, column_header in enumerate(header_row):# 打印文件位置和文件头print(index, column_header)

0 USW00025333
1 SITKA AIRPORT, AK US
2 2018-01-01
3 0.45
4
5 48
6 38

csv.reader():将前面存储的文件对象作为实参传递给它,创建一个与该文件相关联的阅读器对象

next()返回文件中的下一行
第一次调用该函数,返回第一行,依次增加

enumerate()函数可以将一个可迭代对象转换为一个枚举对象,返回的枚举对象包含每个元素的索引和对应的元素值

enumerate(iterable, start=0)
  • iterable:必需,表示要枚举的可迭代对象
  • start:可选,表示元素索引的起始值

[‘STATION’, ‘NAME’, ‘DATE’, ‘PRCP’, ‘TAVG’, ‘TMAX’, ‘TMIN’]

STATION 记录数据的气象站的编码
NAME 气象站的名称
TMAX 最高温度 TMIN 最低温度

获取某一列的值

filename = 'sitka_weather_07-2021_simple.csv'
with open(filename) as f:reader = csv.reader(f)header_row = next(reader)	# 该文件第一行是"STATION","NAME","DATE","TAVG","TMAX","TMIN",没有数字温度,使用next跳过改行# 从文件中获取最高温度highs = []for row in reader:high = int(row[5])	# 文件里的数据都是以字符串格式储存的highs.append(high)
print(highs)
# [53, 52, 54, 55, 55, 54, 53, 53, 53, 51, 51, 54, 52, 51, 50, 54, 56, 57, 55, 56, 54, 55, 56, 54, 52, 49, 57, 52, 52, 60, 48]

绘制温度图表

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='msyh.ttc', size=14) # 假设选择msyh字体,大小为14# 根据最高温度绘制图形。
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(highs, c='red')# 设置图形的格式。
ax.set_title("2018年7月每日最高温度", fontsize=24,fontproperties=font)
ax.set_xlabel('', fontsize=16)
ax.set_ylabel("温度 (F)", fontsize=16,fontproperties=font)
ax.tick_params(axis='both', which='major', labelsize=16)
plt.show()

labelsizexy轴上的数字的大小
在这里插入图片描述

模块datetime 将字符串转为日期

from datetime import datetime
first_date = datetime.strptime('2018-07-01', '%Y-%m-%d')
print(first_date)	# 2018-07-01 00:00:00
# first_date	# datetime.datetime(2018, 7, 1, 0, 0)
实参含义
%A星期几,如Monday
%B月份名,如January
%m用数表示的月份(01~12)
%d用数表示的月份中的一天(01~31)
%Y四位的年份,如2019
%y两位的年份,如19
%H24小时制的小时数(00~23)
%I12小时制的小时数(01~12)
%pam或pm
%M分钟数(00~59)
%S秒数(00~61)

在图表中添加日期

import csv
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='msyh.ttc', size=14)filename = 'sitka_weather_07-2021_simple.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[2], '%Y-%m-%d')high = int(row[5])dates.append(current_date)highs.append(high)# 根据最高温度绘制图形
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red')# 设置图形的格式
ax.set_title("2021年7月每日最高温度", fontsize=24,fontproperties=font)
ax.set_xlabel('', fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("温度 (F)", fontsize=16,fontproperties=font)
ax.tick_params(axis='both', which='major', labelsize=16)
# which可以接收三个值: 'major', 'minor', 'both'plt.show()

fig.autofmt_xdate():绘制倾斜的日期标签

ax.tick_params()是用来设置坐标轴刻度线和刻度标签的属性的函数
axis='both’表示要设置x轴和y轴的刻度线和刻度标签的属性
which='major’表示要设置的是主刻度线和刻度标签的属性,即显示刻度值的那些刻度线和刻度标签

在这里插入图片描述

涵盖更长的时间

filename = 'sitka_weather_2021_simple.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[2], '%Y-%m-%d')high = int(row[4])low = int(row[5])dates.append(current_date)highs.append(high)lows.append(low)# 根据最高温度和最低温度绘制图形
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red')
ax.plot(dates, lows, c='blue')# 设置图形的格式
ax.set_title("2021年每日最高温度", fontsize=24,fontproperties=font)
ax.set_xlabel('', fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("温度 (F)", fontsize=16,fontproperties=font)
ax.tick_params(axis='both', which='major', labelsize=16)plt.show()

在这里插入图片描述

给图表区域着色

方法fill_between()

# 根据最高温度绘制图形
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red', alpha=1)
ax.plot(dates, lows, c='blue', alpha=0.5)
ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)

在这里插入图片描述

错误检查

数据缺失
try-except-else 代码块
continue跳过数据
remove() 或del 删除数据

在这里插入图片描述

filename = 'death_valley_2021_simple.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[2], '%Y-%m-%d')try:high = int(row[4])low = int(row[5])except ValueError:print(f"Missing data for {current_date}")else:dates.append(current_date)highs.append(high)lows.append(low)# 根据最高温度和最低温度绘制图形
plt.style.use('seaborn')
fig, ax = plt.subplots(figsize=(15, 9))
ax.plot(dates, highs, c='red', alpha=1)
ax.plot(dates, lows, c='blue', alpha=0.5)
ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)# 设置图形的格式
title = "2018年每日最高温度和最低温度\n美国加利福尼亚州死亡谷"
ax.set_title(title, fontsize=20,fontproperties=font)
ax.set_xlabel('', fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("温度 (F)", fontsize=16,fontproperties=font)
ax.tick_params(axis='both', which='major', labelsize=16)plt.show()

在这里插入图片描述

调整图表大小

figsize 单位为英寸

fig, ax = plt.subplots(figsize=(8, 5))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/89895.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MPI之持久化通信句柄与非持久化通信句柄

MPI_Isend & MPI_Send 创建临时通信句柄 在前面的文章中举了例子,我们使用MPI_Isend接口发送数据时,有个传出参数request,该参数是创建的通信句柄, 实际上该句柄是一个临时句柄,即只用于一次性发送数据的场景&…

【操作系统】聊聊局部性原理是如何提升性能的

对于目前数据主导的系统,大多数都是Java/Go 技术栈MySQL,但是随着时间的推移,数据库数据的数据量过多,并且会频繁访问热点数据,为了提升系统的性能,一般都是加入缓存中间件、Redis。 局部性原理 我们知道…

保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台

这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。 环境准备 一、XSS基础 1、反射型XSS 攻击介绍 原理 攻击者通过向目标网站提交包含恶意脚本的请求,然后将该恶意脚本注入到响应页面中,使其他用户在查看…

如何使用工具将批量查询的物流信息导出到表格

现如今,物流行业发展迅速,人们对于物流信息的查询需求也越来越高。为了满足用户的需求,我们推荐一款便捷高效的物流信息查询工具——"固乔快递查询助手"软件。 首先,用户需要下载并安装"固乔快递查询助手"软件…

MySQL 日期格式 DATETIME 和 TIMESTAMP

MySQL日期格式介绍 存储日期的方式mysql中存储日期的格式datetimetimestampDatetime和Timestamp的比较相同点:不同点: 数值型时间戳(INT)DATETIME vs TIMESTAMP vs INT,怎么选? 存储日期的方式 字符串Date…

jsp+servlet+mysql阳光网吧管理系统

项目介绍: 本系统使用jspservletmysql开发的阳光网吧管理系统,纯手工敲打,系统管理员和用户角色,功能如下: 管理员:修改个人信息、修改密码;机房类型管理;机房管理;机位…

uniapp实现:点击拨打电话,弹出电话号码列表,可以选择其中一个进行拨打

一、实现效果: 二、代码实现: 在uni-app中,使用uni.showActionSheet方法实现点击拨打电话的功能,并弹出相关的电话列表供用户选择。 当用户选择了其中一个电话后,会触发success回调函数,并通过res.tapInde…

实现带头双向循环链表

🌈带头双向循环链表 描述:一个节点内包含两个指针,一个指向上一个节点,另一个指向下一个节点。哨兵位指向的下一个节点为头节点,哨兵位的上一个指向尾节点。 结构优势:高效率找尾节点;高效率插入…

【LeetCode-面试经典150题-day14】

目录 19.删除链表的倒数第N个结点 82.删除排序链表中的重复元素Ⅱ 61. 旋转链表 86.分隔链表 146.LRU缓存 19.删除链表的倒数第N个结点 题意: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 【输入样例】head [1,2,3,4,5…

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹,出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单…

论文阅读_扩散模型_LDM

英文名称: High-Resolution Image Synthesis with Latent Diffusion Models 中文名称: 使用潜空间扩散模型合成高分辨率图像 地址: https://ieeexplore.ieee.org/document/9878449/ 代码: https://github.com/CompVis/latent-diffusion 作者:Robin Rombach 日期: 20…

基于ADAU1452 DSP ANC和AEC算法的实现

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?加我微信hezkz17, 本群提供音频技术答疑服务,+群附加赠送,DSP音频项目核心开发资料, 1 使用Sigma中的NLMS算法模块 对应C源代码: