引言

网:tianqihoubao

对深圳近几月的天气进行分析可视化

需要用的库

pandas:用于数据挖掘,数据分析requests:用来get网页数据建立连接bs4:用来分析html数据进行格式化matplotlib:用于绘制可视化图形,类似 MATLAB 的绘图工具,是个很厉害的库

过程

get函数

用于get网页数据并进行分析讲需要的天气数据进行导出

def get_data(weather_url):rseponse = requests.get(weather_url)html = rseponse.content.decode('gbk')soup = BeautifulSoup(html, 'html.parser')tr_lsit = soup.find_all('tr')# 为啥是tr见下图# 寻找tr标签下的所有内容print(tr_lsit)dates, conditions, temp, fengxiang = [], [], [], []for data in tr_lsit[1:]:sub_data = data.text.split()# ['2022年09月30日', '雷阵雨', '/雷阵雨', '27℃', '/', '32℃', '东风', '1-2级', '/东风', '1-2级']dates.append(sub_data[0])conditions.append(''.join(sub_data[1:3]))temp.append(''.join(sub_data[3:6]))fengxiang.append(''.join(sub_data[6:9]))# join函数连接字符串# 数据保存_data = pandas.DataFrame()_data['日期'] = dates_data['天气情况'] = conditions_data['气温'] = temp_data['风向'] = fengxiangreturn _data

数据都在tr便签里所以只提取tr标签里的数据

调用

提取深圳近三个月的数据,并用pandas库中的concat将三个get完的数据进行整合

# 定义成函数形式进行封装
data_month_1 = get_data('http://www.tianqihoubao.com/lishi/shenzhen/month/202209.html')
data_month_2 = get_data('http://www.tianqihoubao.com/lishi/shenzhen/month/202210.html')
data_month_3 = get_data('http://www.tianqihoubao.com/lishi/shenzhen/month/202211.html')# 使用drop参数来避免将旧索引添加为列:
data = pandas.concat([data_month_1, data_month_2, data_month_3]).reset_index(drop=True)
# 导出csv表格
data.to_csv('shenzhen.csv', index=False, encoding='utf-8')
# 读表
data1 = pd.read_csv('shenzhen.csv')

表格展示

导出的表格数据如下

数据处理

# 画图
# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号的乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 读表
datalsit = pandas.read_csv('shenzhen.csv',encoding='utf-8')# 数据处理
# 利用split分裂字符串‘/’取出最高最低气温
datalsit['最低气温'] = datalsit['气温'].str.split('/',expand=True)[0]
datalsit['最高气温'] = datalsit['气温'].str.split('/',expand=True)[1]
# 取出温度中的℃符号
datalsit['最低气温'] = datalsit['最低气温'].map(lambda x:int(x.replace('℃','')))
datalsit['最高气温'] = datalsit['最高气温'].map(lambda x:int(x.replace('℃','')))dates = datalsit['日期']
highs = datalsit['最高气温']
lows =  datalsit['最低气温']

此时清洗完的数据是纯数字了

画图

直接看注释吧

# 设置可视化图形规格
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.2)# 图表格式
# 设置图标的图形格式
plt.title('2022深圳市9-12月天气情况',fontsize=24)
plt.xlabel('日期',fontsize=12)
# # x轴标签倾斜  默认30度 可通过rotation=30改变
fig.autofmt_xdate()
plt.ylabel('气温',fontsize=12)
# 刻度线样式设置
plt.tick_params(axis='both',which='major',labelsize=10)
# 修改刻度 数据每10组显示1个
plt.xticks(dates[::10])# 绘制风向扇形图
# 提取出风向的各类型占比  数据清洗
fengxiang=data1['风向'].value_counts()
fengxiang = fengxiang[fengxiang.values > 3]
plt.figure(figsize=(15,5))
# 保住饼图是圆 不是默认椭圆
plt.axes(aspect = 'equal')
plt.pie(x =fengxiang.values,labels = fengxiang.index,autopct = "%.2f%%",radius = 1)
plt.title('风向占比')# 显示
plt.show()

结果

完整代码

import requests
from bs4 import  BeautifulSoup
import pandas
import pandas as pd
from matplotlib import pyplot as pltdef get_data(weather_url):rseponse = requests.get(weather_url)html = rseponse.content.decode('gbk')soup = BeautifulSoup(html, 'html.parser')tr_lsit = soup.find_all('tr')# 寻找tr标签下的所有内容print(tr_lsit)dates, conditions, temp, fengxiang = [], [], [], []for data in tr_lsit[1:]:sub_data = data.text.split()# ['2022年09月30日', '雷阵雨', '/雷阵雨', '27℃', '/', '32℃', '东风', '1-2级', '/东风', '1-2级']dates.append(sub_data[0])conditions.append(''.join(sub_data[1:3]))temp.append(''.join(sub_data[3:6]))fengxiang.append(''.join(sub_data[6:9]))# join函数连接字符串# 数据保存_data = pandas.DataFrame()_data['日期'] = dates_data['天气情况'] = conditions_data['气温'] = temp_data['风向'] = fengxiangreturn _data# print(_data)# _data.to_csv('anqing.csv',index=False,encoding='gbk')# 获取数据并保存csv格式,进行下面的数据分析# 定义成函数形式进行封装
data_month_1 = get_data('http://www.tianqihoubao.com/lishi/shenzhen/month/202209.html')
data_month_2 = get_data('http://www.tianqihoubao.com/lishi/shenzhen/month/202210.html')
data_month_3 = get_data('http://www.tianqihoubao.com/lishi/shenzhen/month/202211.html')# 使用drop参数来避免将旧索引添加为列:
data = pandas.concat([data_month_1, data_month_2, data_month_3]).reset_index(drop=True)
# 导出csv表格
data.to_csv('shenzhen.csv', index=False, encoding='utf-8')
# 读表
data1 = pd.read_csv('shenzhen.csv')# 画图
# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号的乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 读表
datalsit = pandas.read_csv('shenzhen.csv',encoding='utf-8')# 数据处理
# 利用split分裂字符串‘/’取出最高最低气温
datalsit['最低气温'] = datalsit['气温'].str.split('/',expand=True)[0]
datalsit['最高气温'] = datalsit['气温'].str.split('/',expand=True)[1]
# 取出温度中的℃符号
datalsit['最低气温'] = datalsit['最低气温'].map(lambda x:int(x.replace('℃','')))
datalsit['最高气温'] = datalsit['最高气温'].map(lambda x:int(x.replace('℃','')))dates = datalsit['日期']
highs = datalsit['最高气温']
lows =  datalsit['最低气温']# 画图
# 设置可视化图形规格
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.2)# 图表格式
# 设置图标的图形格式
plt.title('2022深圳市9-12月天气情况',fontsize=24)
plt.xlabel('日期',fontsize=12)
# x轴标签倾斜  默认30度 可通过rotation=30改变
fig.autofmt_xdate()
plt.ylabel('气温',fontsize=12)
# 刻度线样式设置
plt.tick_params(axis='both',which='major',labelsize=10)
# 修改刻度 数据每10组显示1个
plt.xticks(dates[::10])# 绘制风向扇形图
# 提取出风向的各类型占比  数据清洗
fengxiang=data1['风向'].value_counts()
fengxiang = fengxiang[fengxiang.values > 3]
plt.figure(figsize=(15,5))
# 保住饼图是圆 不是默认椭圆
plt.axes(aspect = 'equal')
plt.pie(x =fengxiang.values,labels = fengxiang.index,autopct = "%.2f%%",radius = 1)
plt.title('风向占比')# 显示
plt.show()

python天气数据可视化分析相关推荐

  1. python大数据可视化分析淘宝商品,开专卖店不行啊

    python大数据可视化分析淘宝商品,开专卖店不行啊 现如今大数据分析异常火爆,如何正确分析数据,并且抓住数据特点,获得不为人知的秘密?今天沉默带你用python爬虫,爬取淘宝网站进行淘宝商品大数据分 ...

  2. Python图书数据可视化分析

    20220615 导师发布第一个任务---图书数据可视化分析 课件下载链接: https://pan.baidu.com/s/1RjRyk8ZTbxI1z5W7MZLTdQ?pwd=m6eq 提取码: ...

  3. 基于Python的网络爬虫爬取天气数据可视化分析

    目录 摘 要 1 一. 设计目的 2 二. 设计任务内容 3 三. 常用爬虫框架比较 3 四.网络爬虫程序总体设计 3 四. 网络爬虫程序详细设计 4 4.1设计环境和目标分析 4 4.2爬虫运行流程 ...

  4. Python数据可视化分析

    数据可视化 --通过Python实现 数据可视化,是关于数据视觉表现形式的科学技术研究.其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量. 一. ...

  5. 采用python爬虫爬取数据然后采用echarts数据可视化分析

    前言:采用python爬虫爬取天气数据然后采用echarts数据可视化画图分析未来天气变化趋势 从获取数据到可视化的流程 (熟悉爬虫爬取数据然后数据可视化这个过程) 一.python爬取未来8-15天 ...

  6. python导出数据顿号做分隔符_Python语言和matplotlib库做数据可视化分析

    这是我的第51篇原创文章,关于数据可视化分析. 阅读完本文,你可以知道: 1 Python语言的可视化库-matplotlib? 2 使用matplotlib实现常用的可视化? 0前言 数据记者和信息 ...

  7. python爬虫数据可视化软件_python爬虫及数据可视化分析

    1.前言 本篇文章主要介绍python爬虫及对爬取的数据进行可视化分析,本次介绍所用的网站是(https://www.duanwenxue.com/jingdian/zheli/) 2.数据爬取 2. ...

  8. Python爬虫以及数据可视化分析!

    简单几步,通过Python对B站番剧排行数据进行爬取,并进行可视化分析 源码文件可以参考Github上传的项目:https://github.com/Lemon-Sheep/Py/tree/maste ...

  9. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

最新文章

  1. 【干货】Github标星1.2K,Visual Transformer 最全最新资源,包含期刊、顶会论文
  2. 零基础入门学习Python(14)-格式化字符串
  3. 团队作业1(陈爽、夏江华、李瑞超、甘彩娈、吕乐乐)
  4. android studio 控件提示大写
  5. android 索引怎么使用情况,android 數據庫查詢中使用索引-大幅提高數據庫操作速度...
  6. RocketMQ(四)—— 单机与集群安装
  7. linux下限制ip访问
  8. 今天加班做了昨天晚上要写的页面,用到了一些之前用过但还不熟悉需要上网搜索才能用的知识点:...
  9. 在linux下设置开机自动启动程序的方法
  10. 2.3 WSN的MAC协议
  11. 在美团,我从暑期实习到转正
  12. 改led背光有光斑_为什么把车灯改成LED,效果还不如卤素?
  13. 门禁管理系统(Swing/Dos)
  14. 赛效:wps下载手机版怎么操作的?
  15. Buffer的基本用法
  16. android 记录路线轨迹_Android定位并记录轨迹项目源码
  17. 安卓wifi调试助手(单片机wifi上位机)
  18. 去 OPPO 面试,被问麻了
  19. 服务器端口使用过多导致的严重问题 redis 无法正常启动,SQL server 出现 TCP 1433 无法建立侦听
  20. Office常用资源链接

热门文章

  1. 中国大数据公司市场价值排行榜发布
  2. Jetson 系列——Ubuntu重启网卡的三种方法
  3. 盘点中国的暴利行业:你属于哪个行业?
  4. 灰色暴利产业链之洗稿行业
  5. 2017云栖大会参会体验
  6. PlotNeuralNet绘制卷积神经网络结构图
  7. 直线联想思维、逆向联想思维、交叉联想思维,设计师一定要具备这几个思维
  8. 漂亮的字体组合的秘密
  9. linux jsp 编译报错,JSP简要介绍
  10. modbus通讯失败_STM32 MODBUS通讯失败