IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 练习题15-10,csv文件--10.3学习日记 -> 正文阅读

[Python知识库]练习题15-10,csv文件--10.3学习日记

大家好!这里是记录一个非专业的小白学习python的路径,完全是零基础自学。由于作者刚刚大学毕业所学专业找到的工作不太喜欢,工作空闲时间长,在职学习python语言,想借助这个平台记录一下自己学习的路径,文章有什么错误也希望大佬们积极指出,万分感谢!希望同大家一起学习,一起进步,谢谢。内容基于书籍python编程:从入门到实践????作者:Eric?Matthes?[美]
?

一、复习昨日之学习

昨天主要学习的内容是复习第十五章的内容,下面已练习15-10作为这一章节的结束。

练习15-10:尝试使用 matplotlib 通过可视化来模拟掷骰子 的情况,并尝试使用 Pygal 通过可视化来模拟随机漫步的情况。

掷骰子:

#coding=gbk
#die.py 文件名为die
from random import randint
from random import choice
import matplotlib.pyplot as plt
import pygal



class Die():
	#表示一个骰子的类
	def __init__(self,num_sides=6):
		#骰子数默认为6
		self.num_sides = num_sides
	def roll(self):
		#返回一个位于1和骰子面数之间的值
		return randint(1,self.num_sides)

#创建两个个D6的骰子实例
die_1=Die()
die_2=Die()
results= [] #将掷骰子结果存储到列表中
for roll_num in range(1000):#掷1000次
	result = die_1.roll()+die_2.roll()
	results.append(result)



#分析结果
frequencies =[]
max_result=die_1.num_sides*2
for value in range(2,max_result+1):#遍历1-36
	frequency = results.count(value)#计数results列表中出现value次数
	frequencies.append(frequency)
x=list(set(results))

plt.bar(x,frequencies)
plt.xticks(x)#设置x坐标的值
plt.xlabel("Reault")
plt.ylabel("Frequency of result")
plt.show()

运行效果:

?随机漫步:

#coding=gbk
from random_walk import RandomWalk #引进RandomWalk 类

import pygal

rw =RandomWalk(5000)
rw.fill_walk()

chart =pygal.XY(stroke = False)#不连线
chart.title="RandomWalk"
xy_list=[]
for (x,y) in zip(rw.x_values,rw.y_values):
	xy_list.append((x,y))
chart.add('data',xy_list)
chart.render_to_file("RandomWalk.svg")

效果图:

?二、今日新学习

第十六章下载数据

1.从网上下载数据,基于本书是有配套源代码的所以下载本书配套文件打开源代码文件16章中下面代码所有用到的文件都在其中。如果没有找到本书的配套文件可以关注作者私聊可以发送给您。

2.首先引csv库,用open() 的方式打开文件并阅读它,获得其中想要的文件数据所在的列以及索引,由于scv文件是由一系列字符串组成个字符串中间用逗号隔开。所以需要将获取的数据数字化。

#coding=gbk


#highs_lows.py
import csv #引入库


#从文件中获取最高气温
filename = 'sitka_weather_07-2018_simple.csv'
with open(filename) as f:
	reader = csv.reader(f) #创建相关联的阅读器
	header_row = next(reader)
#	for index, column_header in enumerate(header_row):#获取每个元素的索引和值
#		print(index,column_header)#得到日期和最高气温的索引为2和5
	
	
	highs = []
	for row in reader:
		high = int(row[5])#将获取的字符串变为整数(数字化)
		highs.append(high)
	print(highs)

运行结果:[62, 58, 70, 70, 67, 59, 58, 62, 66, 59, 56, 63, 65, 58, 56, 59, 64, 60, 60, 61, 65, 65, 63, 59, 64, 65, 68, 66, 64, 67, 65]

同理获取时间数据也是一样的原理,可以使用datetime库中的strptime()函数,使用原理见下段代码。

?3.绘制气温图表,引进matplotlab 库使用plot()函数,matplotlab绘图的使用方法详情可以关注作者并翻阅9.30号的学习日记。前面获取了最高温度和时间,可以在获取最低温度的数据将它们绘制在同一个图中,为了方便观看最低与最高的区间将它们之间填充起来。在获取数据过程中,有可能从网上下载过来的文件不完整,导致一部分数据丢失而造成程序运行值错误,可以使用测试文件的方式来避免错误,其完整源代码如下:

#coding=gbk


#highs_lows.py
import csv #引入库
from matplotlib import pyplot as plt 
from datetime import datetime #引进datetime库


#从文件中获取日期、最高气温和最低气温
filename = 'sitka_weather_07-2018_simple.csv'
with open(filename) as f:
	reader = csv.reader(f) #创建相关联的阅读器
	header_row = next(reader)
	for index, column_header in enumerate(header_row):#获取每个元素的索引和值
		print(index,column_header)#得到日期和最高气温的索引为2和5,6为最低气温
	
	
	dates,highs,lows = [],[],[]
	for row in reader:
		try:#避免数据有误
			current_date = datetime.strptime(row[2],'%Y-%m-%d')#将日期字符串转变为数字
			dates.append(current_date)
			high = int(row[5])#将获取的字符串变为整数(数字化)
			highs.append(high)
		except ValueError:
			print(current_date,'missing date')
			
		else:
			low = int(row[6])
			lows.append(low)
	print(highs,lows)
			
#根据数据绘制图像
fig = plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red',alpha=0.5)#指定颜色透明度为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 and temperatures temperatures, July 2018",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()

运行结果及效果:

?

?如果想了解更多知识点请关注作者,并多多点赞支持,您的观看点赞是对我最大回礼,最大的动力,谢谢。

?

?

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 12:48:17  更:2021-10-04 12:49:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:43:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码