python编程:从入门到实践第十六章习题解答-比较锡卡特和死亡谷的气温

首先我们应该定义这个问题,比较的是两地的最高和最低气温

涉及内容:两个csv文件

涉及数据:日期、最高气温、最低气温各两个,也就是需要输出6组数据

我刚开始一直纠结于如何从处理一个csv文件,到能处理多个,这时第一想到的是把csv文件做成一个list,然后用for循环读取,但是最终呈现到图上只有第一个文件的数据图表信息

然后我想多个文件输出的数据属性也一样,那么应该可以用函数或者类,这时一个问题就是我不太明白什么时候该用函数,什么时候该用类,具体区别是什么,但是我想着用函数拆分这6个数据我试了下不行,那用类可以,分成三个函数即可,显然刚才想用一个函数处理是行不通的。但是用类发现代码太复杂,也比较多,想着可以用pandas,这个处理csv会更简单一些,代码如下:

import matplotlib.pyplot as plt

from datetime import datetime

import pandas as pd

filename_list=['death_valley_2018_simple.csv','sitka_weather_2018_simple.csv']

data1=pd.read_csv(filename_list[0])

data1=data1.fillna(method='ffill')

dates1=pd.to_datetime(data1['DATE'])

highs1=data1['TMAX']

lows1=data1['TMIN']

data2=pd.read_csv(filename_list[1])

data2=data2.fillna(method='ffill')

dates2=pd.to_datetime(data2['DATE'])

highs2=data2['TMAX']

lows2=data2['TMIN']

#print(dates1)   

#根据数据绘制图形

fig=plt.figure(dpi=128,figsize=(10,6))

plt.plot(dates1,highs1,c='red',alpha=0.5)

plt.plot(dates1,lows1,c='blue',alpha=0.5)

plt.plot(dates2,highs2,c='red',alpha=0.5)

plt.plot(dates2,lows2,c='blue',alpha=0.5)

plt.fill_between(dates1,highs1,lows1,facecolor='blue',alpha=0.1)

plt.fill_between(dates2,highs2,lows2,facecolor='blue',alpha=0.1)

#设置图形格式

plt.title('Daily high and low temperatures, 2018\nDeath Valley,CA&Sitka',fontsize=24)

plt.xlabel('',fontsize=16)

fig.autofmt_xdate()

plt.ylabel('Temperature(F)',fontsize=16)

plt.tick_params(axis='both',which='major',labelsize=16)

plt.show()


需注意内容:csv的时间内容需要转换成时间戳,pandas是自带一个转换时间戳的函数的,我还自己瞎折腾了一番

注意缺失值处理

你可能感兴趣的:(python编程:从入门到实践第十六章习题解答-比较锡卡特和死亡谷的气温)