《python编程从入门到实践》读书笔记与代码实现(二)——数据可视化(2)

笔记与代码实现

第十六章
结合我自己的北京地区历史气温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
%H24 小时制的小时数( 00~23 )
%I12 小时制的小时数( 01~12 )
%pam 或 pm
%M分钟数( 00~59 )
%S秒数( 00~61 )

JSON格式
未完(好端端的数据读不出来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值