您的位置:首页 > 编程语言 > Python开发

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

2020-01-14 19:26 387 查看

笔记与代码实现

第十六章
结合我自己的北京地区历史气温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格式
未完(好端端的数据读不出来)

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Seal_Wings 发布了44 篇原创文章 · 获赞 0 · 访问量 1101 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: