2020.5.26
数据可视化
16.1.3提取并读取数据-16.1.10错误检查
sitka_highs.py
import csv
from datetime import datetime
import matplotlib.pyplot as plt
filename = 'data/death_valley_2018_simple.csv'#赋文件名给filename
with open(filename) as f:#打开文件并将返回文件对象改名为f
reader = csv.reader(f)#调用csv.reader()读取csv文件的每一行,以字符串列表返回
header_row =next(reader)#next()读取第一行
#从文件读取日期和最高温度和最低温度
dates,highs,lows =[],[],[]#存储从文件中提取的日期和最高温度,最低温度
for row in reader:#遍历csv文件每一行
current_date = datetime.strptime(row[2],'%Y-%M-%d')#将包含数据日期信息(row[0])转换为datetime对象,并将其添加到列表dates末尾
try:#尝试从中提取日期,最高温度,最低温度,
high = int(row[5])
low = int(row[6])#从每行第7列(row[6])提取最低温度
except ValueError:#如果三项数据少任一项,,触发ValueError异常
print(f"Missing data for {current_date}")
else:
dates.append(current_date)
highs.append(high)#将文件头索引5处添加到highs的末尾,int()转化为数值是为了方便使用
lows.append(low)
#根据最高温度和最低温度绘制图形
from pylab import *
plt.style.use('seaborn')
# 设定中文字体,保证中文显示正常
plt.rcParams['font.sans-serif']='simhei'
fig,ax = plt.subplots()
ax.plot(dates,highs,c = 'red',alpha=0.5)#highs:最高温度表转给plot(),c=:数据改为红色,alpha:颜色透明度(0-1)
ax.plot(dates,lows,c = 'blue',alpha=0.5)
fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)#fill_between:用颜色填充覆盖,(覆盖的区域,覆盖的下限,覆盖的上限,覆盖区域的颜色,透明度)
#设置图形的格式。
ax.set_title("2018年每日最高温度\n 美国加利福尼亚州死亡谷",fontsize = 24)#图表标题和字体大小
ax.set_title(title,fontsize=20)
ax.set_xlabel('',fontsize = 16)
fig.autofmt_xdate()#绘制倾斜的日期标签,以免重叠
ax.set_ylabel('温度(F)',fontsize = 16)
ax.tick_params(axis='both',which='major',labelsize='16')#axis:选择不对轴操作,which:选择对主坐标轴进行操作
plt.show()