首页 > 编程语言 >python从入门到实践第16章 下载数据1

python从入门到实践第16章 下载数据1

时间:2023-04-02 11:22:10浏览次数:33  
标签:plt 入门 16 python datetime reader ax csv row

第一步 获取csv格式文件

需要python爬虫的相关知识

 

第二步  先打印第一行观察标签

import csv
filename = 'data/sitka_weather_2014.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
    print(header_row)

['AKST', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']

分析可知所需数据在每行的 【0】,【1】,【3】处

代码解释:

csv格式:一系列数据用逗号隔开保存在一个表格里

csv.reader:读取文件内容

next():读取当前行的下一行,因为是第一次调用,因此结果为csv文件的第一行

第三步:提取数据

此处以提取'Max TemperatureF'为例

import csv
filename = 'data/sitka_weather_2014.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)


    highs = []
    for row in reader:
        high = int(row[1])
        highs.append(high)

print(highs)

第四步:添加datetime模块并绘制图表

import csv


from datetime import datetime

import matplotlib.pyplot as plt


filename = 'data/sitka_weather_2014.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)


    dates,highs = [],[]
    for row in reader:
        current_datetime = datetime.strptime(row[0],'%Y-%m-%d')
        dates.append(current_datetime)
        high = int(row[1])
        highs.append(high)

# 绘制图形

plt.style.use('seaborn-v0_8')
fig,ax = plt.subplots()
ax.plot(dates,highs,c='red')

ax.set_title("2018年7月每日最高温度",fontsize=24)
ax.set_xlabel('',fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("温度(f)",fontsize=16)
ax.tick_params(axis = 'both',which = 'major',labelsize = 16)
plt.rcParams["font.sans-serif"]=["SimHei"]
# 设置matplotlib库字体族为非衬线字体
plt.rcParams["font.family"]="sans-serif"




plt.show()

  

 

2个大坑注意一下:

style格式中的

seaborn已经不能用了需要改为

seaborn-v0_8

如果图表标签上有中文的话,需要在ply.show()前加上

plt.rcParams["font.sans-serif"]=["SimHei"] # 设置matplotlib库字体族为非衬线字体 plt.rcParams["font.family"]="sans-serif"

代码解释:striptime:将时间数据按照指定格式规范化

 

第五步:高低气温可视化

 

import csv


from datetime import datetime

import matplotlib.pyplot as plt


filename = 'data/sitka_weather_2014.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)


    dates,highs,lows = [],[],[]
    for row in reader:
        current_datetime = datetime.strptime(row[0],'%Y-%m-%d')
        dates.append(current_datetime)
        high = int(row[1])
        highs.append(high)
        low = int(row[3])
        lows.append(low)

# 绘制图形

plt.style.use('seaborn-v0_8')
fig,ax = plt.subplots()
ax.plot(dates,highs,c='red',alpha=0.5)
ax.plot(dates,lows,c='blue',alpha=0.5)
ax.fill_between(dates,highs,lows,facecolor='blue',alpha = 0.1)

ax.set_title("2014年每日最高和最低温度",fontsize=24)
ax.set_xlabel('',fontsize=16)
fig.autofmt_xdate()
ax.set_ylabel("温度(f)",fontsize=16)
ax.tick_params(axis = 'both',which = 'major',labelsize = 16)
plt.rcParams["font.sans-serif"]=["SimHei"]
# 设置matplotlib库字体族为非衬线字体
plt.rcParams["font.family"]="sans-serif"




plt.show()

 

 

 

 代码解释;

ax.plot()可选参数alpha的含义是透明度。值取0到1.    0代表完全透明,1代表完全不透明

ax.fill_between()表示在2个y值间隙填充

标签:plt,入门,16,python,datetime,reader,ax,csv,row
From: https://www.cnblogs.com/hbdxlzy/p/17280061.html

相关文章

  • Python遍历时删除元素问题(附深拷贝与浅拷贝介绍)
    问题有时候,我们希望用Python遍历一个列表(或其他可迭代对象),如果其中有我们不需要的元素就把它删除并继续遍历。如以下代码段,我们本希望打印1、3,可最后却只打印了1。a=[1,2,3]foriina:ifi==2:a.remove(i)else:print(i)分析其实,之所以......
  • Go语言入门2(流程控制,string)
    流程控制选择结构(分支语句)​ 因为switch只能匹配固定值,推荐使用if-else做条件筛选if-else判断packagemainimport"fmt"funcmain(){ vartmpAint fmt.Scanln(&tmpA) iftmpA>=90{ fmt.Println("tmpA>=90") }elseiftmpA<90&&tmpA>......
  • Tomcat 入门实战(4)--Tomcat 集群 Session 复制
    本文主要介绍在Tomcat集群中如何进行Session复制,文中所使用到的软件版本:Centos7.9.2009、Java1.8.0_321、Tomcat8.5.87。1、快速配置取消conf/server.xml文件中的以下注释来启用集群:<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>使用上述配......
  • 一名C++程序员的Rust入门初体验
    作者最近尝试写了一些Rust代码,本文主要讲述了对Rust的看法和Rust与C++的一些区别。背景S2在推进团队代码规范时,先后学习了盘古编程规范,CPPcoreguidelines,进而了解到clang-tidy,以及GoogleChrome在安全方面的探索。C++是一个威力非常强大的语言,但是能力越大,责任越大,它......
  • 洛谷 P9009 [入门赛 #9] 牵连的世界 (Hard Version) 题解
    P9009[入门赛#9],真9。这是一道hack题,即你需要自造符合题意的数据使题中所给程序无法AC。Task01看数据范围知一切,显然有\(-2\times10^9\lea_i\le2\times10^9\),因此\(a_i\)可能为负数。注意C/C++中的取模%(mod)运算实质上是为取余运算(rem)对于整型数a,b来说......
  • python面向对象进阶
    面向对象进阶类型判断issubclasstypeisinstance反射反射的四个函数importlib类的其他成员__str____repr____format____del____dict__和__slots____item__系列__init____new____call____doc____iter__和__next____ente......
  • [oeasy]python0123_中文字符_文字编码_gb2312_激光照排技术_王选
    中文编码GB2312回忆上次内容上次回顾了日韩各有编码格式日本有假名五十音一字节可以勉强放下 有日本汉字字符数量超过20000+  韩国有谚文数量超过500一个字节放不下 有朝鲜汉字字符数量超过20000+......
  • Python异常 ValueError的问题详解
    导读这篇文章主要介绍了Python异常ValueError的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教Python异常ValueErrorValueError:invalidliteralforint()withbase10:'*'试图将一个与数字无关的类型转化为整数,会抛出该异常。......
  • 爬虫简单python小程序
    importrequestsfrombs4importBeautifulSoupbase_url='your_base_url_here'#根据网站的实际URL模式修改此函数defget_page_url(page_number):returnf'{base_url}?page={page_number}'#根据网站的HTML结构,您可能需要修改以下选择器以获取游戏标题defget_g......
  • c++ primer chapter 16.4
    /*#include<iostream>#include<string>#include<vector>#include<list>usingnamespacestd;template<typenameI,typenameT>Ifind(Ib,Ie,constT&v){while(b!=e&&*b!=v){b++;returnb;}}i......