用Python将死亡谷温度可视化!!!

前面学习了用matplotlib来绘制折线图和散点图,以及用Pygal来绘制直方图。学以致用!现在利用前面学的知识将死亡谷的一年的温度可视化出来,看看为啥叫死亡谷!!!

1. 数据准备

本文用到的数据是来自《Python编程从入门到实践》配套资源中的death_valley_2014.csv文件。该文件是一个csv文件,什么叫csv文件呢?即就是用逗号将数据分隔开,然后写入文件,当然也有用其他符号来分隔的,不过比较常见的是用逗号来分隔。

数据获取方式:
一:从ituring.cn/book/1861 下载《Python编程从入门到实践》的配套资源,然后从中获取
二:私我,白嫖!

2. 数据可视化

2.1 读取文件并查看有关数据
先来读取文件,以及看看文件里有哪些数据,如下

#3.死亡谷温度可视化
import  csv

filename = "D:\python\python基础\数据可视化\数据可视化_02\death_valley_2014.csv"

#获取文件数据
with open(filename) as f:
    reader = csv.reader(f)
    first_row = next(reader)

for index, column in enumerate(first_row):
    print(index, column)


这里处理csv文件的用的是csv库,当然也还有其他,比如pandas库。接下来给filename传递的是death_valley_2014.csv文件的绝对路径,当然你也可以传相对路径,然后调用csv.reader()函数来构建一个阅读器并赋值给reader,最后用next()函数来获取文件的第一行。打印的时候用了enumerate()函数,即就是枚举,它返回一个值和其对应的索引位置的可迭代对象,结果如下
在这里插入图片描述
可以看到时间,最高温度和最低温度对应的索引分别为0,1,3

2.2 提取日期,最高温度和最低温度

代码如下

import  csv
from datetime import datetime

filename = "D:\python\python基础\数据可视化\数据可视化_02\death_valley_2014.csv"

#获取文件数据
with open(filename) as f:
    reader = csv.reader(f)
    first_row = next(reader)
    
    #提取日期,最高温度和最低温度
    dates, highs, lows = [], [], []
    for row in reader:
        try:
            date = datetime.strptime(row[0], '%Y-%m-%d')
            high = int(row[1])
            low = int(row[3])
        except ValueError:
            print(date, 'missing data')
        else:
            dates.append(date)
            highs.append(high)
            lows.append(low)
            

print(dates)

这里之所以要用try…except…else来处理代码,就是防止数据错误使程序终止。这里用到了datetime模块的strptime()函数,作用是提前格式为’%Y-%m-%d’的日期。为了后面方便画图,这里把字符串格式的highs和lows转成了int型,可以分别打印看看效果
在这里插入图片描述
在这里插入图片描述
可以看到果然有数据错误:2014-02-16 00:00:00 missing data,我们去death_valley_2014.csv找到时间为2014-02-16的那行看看,会发现那行的数据是缺失的,如下
在这里插入图片描述
2.3 可视化温度数据
数据都准备好了,接下来就是绘图了,如下

#可视化温度数据
from matplotlib import pyplot as plt

fig = plt.figure(dpi=100, figsize=(8, 5))
plt.plot(dates, highs, c='red', alpha=0.5)
plt.plot(dates, lows, c='blue', alpha=0.5)

#填充highs,lows之间的区域,颜色为yellow,透明度为0.1
plt.fill_between(dates, highs, lows, facecolor='yellow', alpha=0.1)

#设置y轴范围以及使日期倾斜,避免重复
plt.ylim(10, 120)
fig.autofmt_xdate()

#设置坐标轴
plt.title("Temperature of 2014 ", fontsize=15)
plt.xlabel('', fontsize=13)
plt.ylabel("Temperature (F)", fontsize=13)
plt.tick_params(axis='both', labelsize=15)

plt.show()

其中plt.fill_between()函数的作用是填充highs和lows之间的区域,facecolor参数控制颜色,alpha参数控制颜色的透明度,alpha值范围为:0到1,值越小越透明。为了防止x轴的刻度重叠,使用fig.autofmt_xdate()函数来使刻度倾斜,以及使用plt.ylim()来控制y轴的范围。有关其他参数的作用在我上两篇里有说,需要的话可以参考。

最终实现效果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44690947/article/details/106796933