笔记与代码实现
第十六章
结合我自己的北京地区历史气温CSV数据
#16.1 CSV文件格式
import csv
from matplotlib import pyplot as plt
filename = 'weather_Beijing_timeseries.csv' #使用本地已有文件进行实验
with open(filename) as f:
reader = csv.reader(f)
#reader处理文件中以逗号分隔的第一行数据,并将每项数据都作为一个元素存储在列表中
header_row = next(reader)
#分析CSV文件头,查看这个文件的第一行,其中包含一系列有关数据的描述
#为让文件头数据更容易理解,将列表中的每个文件头及其位置(索引)打印出来
for index, column_header in enumerate(header_row):#enumerate()获取每个元素的索引及其值
print(index, column_header)
#print(header_row)使用上面的代码以显示出更详细的文件头结果
highs = []
for row in reader:
#highs.append(row[1])#结合上面得出的索引结果,选择最高温,并直接将其作为字符串存入列表
high = int(row[2])#将字符串转换为数据便于存储
highs.append(high)
print(highs)
#利用本地已有文件结合图书进行可视化展示
# -*- coding: gbk -*-
#16.1 CSV文件格式
import csv
from matplotlib import pyplot as plt
#向图表的横轴添加日期参数
from datetime import datetime
filename = 'weather_Beijing_timeseries.csv' #使用本地已有文件进行实验
with open(filename) as f:
reader = csv.reader(f)
#reader处理文件中以逗号分隔的第一行数据,并将每项数据都作为一个元素存储在列表中
header_row = next(reader)
#分析CSV文件头,查看这个文件的第一行,其中包含一系列有关数据的描述
#为让文件头数据更容易理解,将列表中的每个文件头及其位置(索引)打印出来
for index, column_header in enumerate(header_row):#enumerate()获取每个元素的索引及其值
print(index, column_header)
#print(header_row)使用上面的代码以显示出更详细的文件头结果
dates, highs , lows = [], [], []
for row in reader:
try:#错误检查代码,以防止程序崩溃
current_date = datetime.strptime(row[0], "%Y/%m/%d")
#highs.append(row[1])#结合上面得出的索引结果,选择最高温,并直接将其作为字符串存入列表
high = int(row[1])#将字符串转换为数据便于存储
low = int(row[2])#将字符串转换为数据便于存储
except ValueError:
print(current_date, 'missing data')
else:
dates.append(current_date)
highs.append(high)
lows.append(low)
'''
在有些情况下
需要使用continue来跳过一些数据
或者使用remove()或del将已提取的数据删除
'''
#print(highs)
#根据数据绘制图形
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)
#得到每天的气温范围,facecolor指定了填充区域的颜色
#Alpha值为0表示完全透明,1(默认设置)表示完全不透明
#设置图形的格式
plt.title("Daily temperatures-Beijing2011-2019", 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()
#first_date = datetime.strptime('2014-7-1', '%Y-%m-%d')
#方法strptime(),第一个实参是所需日期的字符串。第二个实参告诉Python如何设置日期的格式
#print(first_date)
#2014-07-01 00:00:00
模块 datetime 中设置日期和时间格式的实参
实参 | 含义 |
---|---|
%A | 星期的名称,如 Monday |
%B | 月份名,如 January |
%m | 用数字表示的月份( 01~12 ) |
%d | 用数字表示月份中的一天( 01~31 ) |
%Y | 四位的年份,如 2015 |
%y | 两位的年份,如 15 |
%H | 24 小时制的小时数( 00~23 ) |
%I | 12 小时制的小时数( 01~12 ) |
%p | am 或 pm |
%M | 分钟数( 00~59 ) |
%S | 秒数( 00~61 ) |
JSON格式
未完(好端端的数据读不出来)