数据可视化之绘制气温图表

前言:

    这次做的是数据可视化里的一个小练习,绘制图表。数据是2014年死亡谷的气温,数据格式为csv.主要练习了怎样读取csv文件并对其进行数据可视化。

1.读取csv文件里的7月份每天最高温数据,并绘制2014年7月份的高温图。

import csv
from datetime import datetime
from matplotlib import pyplot as plt
filename="sitka_weather_07-2014.csv"
with open(filename) as f:
    reader=csv.reader(f)
    head_row=next(reader)
    highs=[]
    dates=[]
    for row in reader:
        highs.append(int(row[1]))
        date=datetime.strptime(row[0],'%Y-%m-%d')
        dates.append(date)
    print(highs)
#绘制最高温图形
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red')
#设置图形的格式
plt.title('Daily high temperatures,July 2014',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()

提取出的7月份每天最高温的数据为:


图形可视化为:


    在处理数据的时候有两个点是需要注意的,一个是读取的CSV文件里气温是字符串格式,需要将其转换成int型,还有一个是调用datetime模块中的striptime函数来将字符串格式的数据转换成想要的时间类型。

2.同时绘制最高温和最低温。

import csv
from matplotlib import pyplot as plt
from datetime import datetime
filename="sitka_weather_2014.csv"
with open(filename) as f:
    reader=csv.reader(f)
    head_row=next(reader)
    highs=[]
    dates=[]
    lows=[]
    errnum=0
    # for row in reader:
        # high=int(row[1])
        # low=int(row[3])
        # date=datetime.strptime(row[0],'%Y/%m/%d')
        # highs.append(high)
        # lows.append(low)
        # dates.append(date)
    for row in reader:
        try:
            current_date = datetime.strptime(row[0], "%Y/%m/%d")
            high = int(row[1])
            low = int(row[3])
        except ValueError:
            print(current_date, 'missing data')
            errnum=errnum+1
        else:
            dates.append(current_date)
            highs.append(high)
            lows.append(low)
print(errnum)
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red',alpha=0.5)
plt.plot(dates,lows,c='blue',alpha=0.5)
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)
plt.title('Daily high temperatures-2014',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()
在绘图的时候有些日期的气温是缺失的,直接绘图会报错,所以用到了try....except..来处理有问题的数据,抛出missing data错误。另我又设置了一个errnum计数变量,来统计缺失数据的个数。


猜你喜欢

转载自blog.csdn.net/weixin_42036641/article/details/80307200