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))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高等职业学校物联网实训室建设方案

一、概述 1.1专业背景 物联网(Internet of Things)被称为继计算机、互联网之后世界信息产业第三次浪潮,它并非一个全新的技术领域,而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升,是随着传感网、通…

解决博客不能解析PHP直接下载源码问题

背景: 在网站设置反向代理后,网站突然不能正常访问,而是会直接下载访问文件的PHP源码 解决办法: 由于在搞完反向代理之后,PHP版本变成了纯静态,所以网站不能正常解析;只需要把PHP版本恢复正常…

SQL注入漏洞复现(CVE-2017-8917)

文章目录 搭建环境启动环境漏洞复现报错注入使用sqlmap 前提条件: 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub Docker Compose是 docker 提供的一个命令行工具&…

springboot docker

在Spring Boot中使用Docker可以帮助你将应用程序与其依赖的容器化,并简化部署和管理过程。 当你在Spring Boot中使用Docker时,你的代码不需要特殊的更改。你可以按照通常的方式编写Spring Boot应用程序。 java示例代码,展示了如何编写一个基…

直播预告!生鲜与零售商品识别系统产业实践与部署详解

生鲜零售作为民生消费的重要一环,在促进行业新消费升级的进程中有着至关重要的作用。在超市等无人零售场景中,目前结算方式主要有以下几种: 但是以上几种方法存在如下缺点: 条形码方式:对于成品包装的商品较为成熟&a…

WPF_布局基础

布局容器 Grid 定义由列和行组成的灵活的网格区域。 行 <Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions> 列 <Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDe…

指针与空间按钮的交互

文章目录 原理案例&#xff1a;“直线指针”和“点击按钮”的交互1、效果2、步骤 原理 指针不能直接和空间按钮交互&#xff0c;得借助一个中间层——分发器——它分发指针的进入、退出、选择事件&#xff0c;空间按钮自动监听这些事件 案例&#xff1a;“直线指针”和“点击…

HTTPS安全通信和SSL Pinning

随着互联网的迅速发展&#xff0c;网络通信安全问题日益凸显。在这一背景下&#xff0c;HTTPS作为一种加密通信协议得到了广泛应用&#xff0c;以保障用户的数据隐私和信息安全。本文将介绍HTTPS的基本原理、发展历程&#xff0c;以及与之相关的中间人攻击和防护方法。 1. HTT…

1.RTKLIB环境配置和调试

1.源码下载 下载链接&#xff1a;rtklib 注&#xff1a;2.4.2 p13为稳定版本&#xff08;标识p代表稳定版本&#xff09;&#xff0c;2.4.3 b34为最新实验版本&#xff08;标识b&#xff09;。点击2.4.3 b34 的Source Programs and Data 链接下载源码。 2.环境配置 **集成…

深度剖析java类和对象

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 在Java中&#xff0c;一切皆对象。 目录 一、类的定义和使用1.1类的定义格式1.2定义学生类 二、类的实例化三、this引…

《Flink学习笔记》——第九章 多流转换

无论是基本的简单转换和聚合&#xff0c;还是基于窗口的计算&#xff0c;我们都是针对一条流上的数据进行处理的。而在实际应用中&#xff0c;可能需要将不同来源的数据连接合并在一起处理&#xff0c;也有可能需要将一条流拆分开&#xff0c;所以经常会有对多条流进行处理的场…

基于Jenkins构建生产CICD环境(第三篇)

目录 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像 4、构建一个Maven项目 基于Jenkins自动化部署PHP环境 基于rsync部署 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 在192.168.2.123 机器上&#x…

SQLI-labs-第三关

目录 知识点&#xff1a;单括号)字符get注入 1、判断注入点&#xff1a; 2、判断当前表的字段数 3、判断回显位置 4、爆库名 5、爆表名 6、爆字段名&#xff0c;以users表为例 7、爆值 知识点&#xff1a;单括号)字符get注入 思路&#xff1a; 1、判断注入点&#xff1…

HTML学习笔记02

HTML笔记02 页面结构分析 元素名描述header标题头部区域的内容&#xff08;用于页面或页面中的一块区域&#xff09;footer标记脚部区域的内容&#xff08;用于整个页面或页面的一块区域&#xff09;sectionWeb页面中的一块独立区域article独立的文章内容aside相关内容或应用…

测试理论与方法----测试流程的第四个步骤:执行测试,提出缺陷

8、执行测试—–>提交缺陷报告 测试流程&#xff1a;执行测试—–>提交缺陷报告 1、缺陷的概述&#xff08;回顾&#xff09; 结果角度&#xff1a;实际结果和预期结果不一致 需求角度&#xff1a;所有不满足需求或超出需求的&#xff0c;都是缺陷 2、缺陷的相关属性…

Glide分析和总结

1. Glide概述 Glide是一款图片处理的框架&#xff0c;从框架设计的角度出发&#xff0c;最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象&#xff0c;里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBu…

【Java基础增强】Stream流

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得…

ELK原理和介绍

为什么用到ELK&#xff1a; 一般我们需要进行日志分析场景&#xff1a;直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中&#xff0c;此方法效率低下&#xff0c;面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化…

CTFhub-文件上传-无验证

怎样判断一个网站是 php asp jsp 网站 首先&#xff0c;上传用哥斯拉生成 .php 文件 然后&#xff0c;用蚁剑测试连接 找到 flag_1043521020.php 文件&#xff0c;进去&#xff0c;即可发现 flag ctfhub{ee09842c786c113fb76c5542}

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…