python天气数据可视化分析

这篇具有很好参考价值的文章主要介绍了python天气数据可视化分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

网:tianqihoubao

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

python天气可视化,python,python,pandas,数据分析

 

需要用的库

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['风向'] = fengxiang

    return _data

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

python天气可视化,python,python,pandas,数据分析

 调用 

提取深圳近三个月的数据,并用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')

表格展示

导出的表格数据如下 

python天气可视化,python,python,pandas,数据分析

 数据处理

# 画图
# 设置字体
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['最低气温']

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

python天气可视化,python,python,pandas,数据分析

 画图

直接看注释吧

# 设置可视化图形规格
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天气可视化,python,python,pandas,数据分析

 python天气可视化,python,python,pandas,数据分析文章来源地址https://www.toymoban.com/news/detail-516712.html

完整代码 

import requests
from bs4 import  BeautifulSoup
import pandas
import pandas as pd
from matplotlib import pyplot as plt


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标签下的所有内容

    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['风向'] = fengxiang

    return _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天气数据可视化分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】实现爬虫(完整版),爬取天气数据并进行可视化分析

    ✌️✌️✌️大家好呀,你们的作业侠又轰轰轰的出现了,这次给大家带来的是python爬虫,实现的是爬取某城市的天气信息并使用matplotlib进行图形化分析✌️✌️✌️ 要源码可私聊我。 大家的关注就是我作业侠源源不断的动力,大家喜欢的话,期待三连呀😊😊😊 往期源码

    2024年02月05日
    浏览(45)
  • 基于python天气数据的预测分析及可视化系统 毕业设计开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月04日
    浏览(56)
  • 毕业设计:python全国天气气象数据爬取分析可视化系统+大屏+大数据(源码+文档)

    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专

    2024年02月02日
    浏览(49)
  • Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化

    简介 Python 的 pandas 包用于数据操作和分析,旨在让您以直观的方式处理带标签或关联数据。 pandas 包提供了电子表格功能,但由于您正在使用 Python,因此它比传统的图形电子表格程序要快得多且更高效。 在本教程中,我们将介绍如何设置一个大型数据集, pandas 的 groupby() 和

    2024年02月19日
    浏览(47)
  • 毕设 - 天气数据分析与可视化 天气预测 lstm

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月06日
    浏览(48)
  • 大数据分析基于Hadoop全国天气可视化分析系统

    收藏关注不迷路,源码文章末   全国天气可视化分析系统主要功能模块包括系统首页、轮播图、公告消息、资源管理(天气资讯、资讯分类)系统用户(管理员、普通用户)模块管理(天气信息、降水数据),采取面对对象的开发模式进行软件的开发和硬体的架设,能很好

    2024年01月22日
    浏览(52)
  • 大数据毕业设计python+spark天气预测 天气可视化 天气大数据 空气质量检测 空气质量分析 气象大数据 气象分析 大数据毕设 计算机毕业设计 机器学习 深度学习 人工智能 知识图谱

    论文题目 选题依据 天气预测是指综合使用现代科学技术对某一地区未来一段时间的温度、湿度、风力、风向、天气状况等进行预测。在当今社会,天气预测对人们的生产生活有着举足轻重的影响,与日常出行、农业生产、自然灾害预防等多个领域息息相关,是现代社会正常运转

    2024年04月26日
    浏览(57)
  • 大数据设计基于Hadoop全国天气可视化分析系统

      全国天气可视化分析系统主要功能模块包括系统首页、轮播图、公告消息、资源管理(天气资讯、资讯分类)系统用户(管理员、普通用户)模块管理(天气信息、降水数据),采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善

    2024年04月14日
    浏览(54)
  • 基于python的网络爬虫爬取天气数据及可视化分析(Matplotlib、sk-learn等,包括ppt,视频)

    基于python的网络爬虫爬取天气数据及可视化分析 可以看看演示视频。 基于Python爬取天气数据信息与可视化分析 本论文旨在利用Python编程语言实现天气数据信息的爬取和可视化分析。天气数据对于人们的生活和各个领域都有着重要的影响,因此准确获取和有效分析天气数据对

    2024年02月03日
    浏览(45)
  • 爬虫入门指南(8): 编写天气数据爬虫程序,实现可视化分析

    天气变化是生活中一个重要的因素,了解天气状况可以帮助我们合理安排活动和做出决策。本文介绍了如何使用Python编写一个简单的天气数据爬虫程序,通过爬取指定网站上的天气数据,并使用Matplotlib库对数据进行可视化分析。通过这个例子,我们不仅可以学习Python的相关库

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包