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

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


本文为《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()

结果图


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

你可能感兴趣的:(数据分析,matplotlib,python)