美文网首页
python编程:从入门到实践第十六章习题解答-比较锡卡特和死亡

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

作者: 895470d30238 | 来源:发表于2019-08-16 15:49 被阅读0次

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

    涉及内容:两个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编程:从入门到实践第十六章习题解答-比较锡卡特和死亡

          本文链接:https://www.haomeiwen.com/subject/tycqsctx.html