利用matplotlib绘制折线图:CSV格式

2023-11-14

熬过初学阶段的不适和挫败感,我们其实完全可以掌握一个全新的领域。


本文为《python编程 从入门到实践》(以下简称参考书》中第16章 下载数据中的内容,利用matplotlib绘制最高及最低气温折线图。

在此整理为笔记,一为温习,二为备份,以便日后再次学习,三也为网友提供学习资料。

注:本文代码均可直接复制到python文本编辑器中,在运行环境安装完整的前提下均可直接运行。

认识CSV文件头

csv文件是一以逗号分隔数据的文件,可以用Excel、文本文档打开。在此以参考书中的气象数据为例进行介绍。

△记事本中csv文件显示形式

△Excel中csv文件显示形式

用python读取csv文件

注:文件名为weather_2014。csv文件须与python文件放置在同一文件夹。

1.新建highs_lows.py文件
读取csv文件头

import csv #导入csv模块,该模块包含于python标准库中

filename='weather_2014.csv' #文件名
with open(filename) as f: #打开文件文件并将内容储存在reader中
    reader=csv.reader(f) #读取并将内容储存在reader中
    header_row=next(reader)#next()函数获取第一行,即文件头
    print(header_row)

运行结果:

用索引显示文件头

利用索引及索引值显示文件头

import csv #导入csv模块,该模块包含于python标准库中

filename='weather_2014.csv' #文件名
with open(filename) as f: #打开文件文件并将内容储存在reader中
    reader=csv.reader(f) #读取并将内容储存在列表reader中
    header_row=next(reader)#next()函数获取第一行,即文件头
    for index,content in enumerate(header_row):#函数enumerate()获取每个元素索引及其值
        print(index,content)

运行结果:

从上图可以看出日期、最高气温、最低气温分别位于第0/1/3列。

程序

import csv #导入csv模块,该模块包含于python标准库中
from matplotlib import pyplot as plt #从matplotlib中导入pyplot并重命名为plt
from datetime import datetime #导入日期模块,用以转换字符型日期为日期型

#从文件中获取数值
filename='weather_2014.csv' #文件名
with open(filename) as f: #打开文件文件
    reader=csv.reader(f) #读取并将内容储存在列表reader中
    header_row=next(reader)#next()函数获取第一行,即文件头

    #提取气温、日期数据存储在列表中
    highs,lows,dates=[],[],[]  #将最高气温、最低气温、日期储存在列表中
    for row in reader: #遍历reader列表

        high=int(row[1]) #将字符型温度转换成数值型
        highs.append(high) #将最高气温附加到highs列表中

        low=int(row[3])#同上
        lows.append(low)

        current_date=datetime.strptime(row[0],'%Y-%m-%d')#将字符型日期转换成日期型
        dates.append(current_date)

    #绘制气温图表
    fig=plt.figure(dpi=128,figsize=(8,6))#添加绘图窗口,可绘制多条曲线
    plt.plot(dates,highs,c='red',alpha=0.6)#plot()函数,第一个参数x值,第二个y值,第三个图形颜色
    plt.plot(dates,lows,c='blue',alpha=0.6)

    #设置图形的格式
    plt.title("Daily high and low tempratures-2014\nDeath Valley,CA",fontsize=24)#图形标题
    plt.xlabel("Date",fontsize=14)#x轴标题及字号
    fig.autofmt_xdate()#调用fig.autofmt_xdate()绘制斜的日期标签,以防日期彼此重叠
    plt.ylabel("Temperature(F)",fontsize=14)
    plt.tick_params(axis='both',which='major',labelsize=8)#坐标轴格式

    #给图表区域着色
    plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)
    """
    facecolor为填充区域颜色
    alpha为填充颜色的透明度,0表示完全透明,1表示完全不透明
    """

    #显示图表
    plt.show()

结果图


上图即为用上一节代码绘制的图件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用matplotlib绘制折线图:CSV格式 的相关文章

随机推荐

  • linux-vmware tools安装与cdrom挂载

    前述 昨天想直接复制虚拟机centos系统中命令行的内容到主机的txt文档上进行保存 发现不能实现虚拟机与主机之间的直接通讯 后来查资料发现原来是由于我的虚拟机没有安装vwmare tools的缘故 一个下午查资料下来 搞定了cdrom镜像
  • [ Android 编译 ] 如果不指定LOCAL_CERTIFICATE,默认使用哪个key进行签名

    Android 编译 如果不指定LOCAL CERTIFICATE 默认使用哪个key进行签名 尊重原创 转载请注明出处 创作不易 如有帮助请点赞支持 参考 Android系统签名简介 开发系统应用时 通常情况下我们都会在 Android
  • C++详细学习笔记(一)

    首先 本次学习主要参考的书籍是C Primer Plus第六版 为了方便今后参阅 故写下该学习笔记 C 是在C语言基础上开发的一种集面向对象编程 泛型编程和过程化编程于一体的编程语言 是C语言的超集 一 预备知识 C 有三件法宝 1 继承了
  • 计算机系统(四)处理器体系结构

    现代微处理器可以称得上是人类创造的最复杂的系统之一 一块手指甲大小的硅片上 可以容纳一个完整的高性能处理器 大的高速缓存 以及用来连接到外部设备的逻辑电路 到目前为止 我们看到的计算机系统只限于机器语言程序级 我们知道处理器必须执行一系列指
  • 2021-03-07

    昨天 拳王分享了一篇 1个被严重低估的暴利项目 竟多达7种变现方式 玩转1个轻松月入过万 揭秘7种可变现方式的被严重低估的暴利项目 今天 我们分享的是 1个简单至极又赚钱到发指的项目 有人靠它年入7位数 容易可复制 今天分享的是一个极为简单
  • mysql case when多个参数结果

    查看所有学生的姓名班级 如果班级为1表示一年级 2表示二年级 3表示三年级 select s StudentName CASE WHEN s GradeId 1 THEN 一年级 WHEN s GradeId 2 THEN 二年级 WHEN
  • 【NLP】每个NLP工程师都应该知道的10 种不同的 NLP 技术

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • CCNP-冗余链路中的广播风暴、多帧复制、地址表的不稳定

    STP协议 当网络中存在备份链路时 只允许主链路激活 如果主链路因故障而断开后 备用链路才会被打开 广播风暴 在没有避免交换环路措施的情况下 每个交换机都无穷无尽的转发广播帧 广播流量破坏了正常的通信流 消耗了带宽和交换机的CPU资源 直至
  • python一行输出多个空格_python 在同一行依次输入三个值a,b,c,用空格分开,输出 b*b-4*a*c的值...

    拒绝回答一系列代码细节 自行百度学习对应函数 import re import math print Input four numbers seperated by scape enter for ending input myinputs
  • 如何优化算法提高卷积神经网络的泛化能力

    卷积网络的优化方式 方法 说明 使用更多数据 在有条件的前提下 尽可能多地获取训练数据是最理想的方法 更多的数据可以让模型得到充分的学习 也更容易提高泛化能力 使用更大批次 在相同迭代次数和学习率的条件下 每批次采用更多的数据将有助于模型更
  • ZYNQ 7000的硬件SPI控制器配置为三线制SPI

    使用zynq去做一些AD DA的操作时候有些只支持三线制的SPI那么我们如何使用PS端的控制器EMIO到PL端实现3线制呢 以上是SPI0的接口信号 我们可以把PL侧的三线制的SDIO信号 inout 通过一个IOBUF原语进行转换出in
  • 数字电路的逻辑符号

  • Mybatis框架之解决列名(表中的字段名称)和实体类中的属性名不一致

    查询数据的时候 查不到userName的信息 原因 数据库的字段名是user name 而POJO中的属性名字是userName 两端不一致 造成mybatis无法填充对应的字段信息 修改方法 在sql语句中使用别名 解决方案1 在sql语
  • 深入理解CRITICAL_SECTION

    http www cnblogs com dirichlet archive 2011 03 16 1986251 html 摘要 临界区是一种防止多个线程同时执行一个特定代码节的机制 这一主题并没有引起太多关注 因而人们未能对其深刻理解
  • Hive其他优化

    一 关联优化器 在Hive的一些复杂关联查询中 可能同时还包含有group by等能够触发shuffle的操作 有些时候shuffle操作是可以共享的 通过关联优化器选项 可以尽量减少复杂查询中的shuffle 从而提升性能 set hiv
  • GPU显存问题-解决Failed to get convolution algorithm. This is probably because cuDNN failed to initialize

    GPU显存问题 使用服务器跑深度学习代码时出现了这样的问题 Failed to get convolution algorithm This is probably because cuDNN failed to initialize so
  • Docker私有仓库搭建与界面化管理

    一 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方 我们可以在上面找到我们想要的镜像 也可以把我们自己的镜像推送上去 但是有时候我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像 这个可以通过
  • 动态定义数组

    首先 为什么需要动态定义数组呢 这是因为 很多情况下 在预编译过程阶段 数组的长度是不能预先知道的 必须在程序运行时动态的给出 但是问题是 c 要求定义数组时 必须明确给定数组的大小 要不然编译通不过 如 int Array 5 正确 in
  • android频响曲线图,EQ 频响曲线

    import android annotation SuppressLint import android content Context import android graphics Canvas import android grap
  • 利用matplotlib绘制折线图:CSV格式

    熬过初学阶段的不适和挫败感 我们其实完全可以掌握一个全新的领域 本文为 python编程 从入门到实践 以下简称参考书 中第16章 下载数据中的内容 利用matplotlib绘制最高及最低气温折线图 在此整理为笔记 一为温习 二为备份 以便