python爬取天气数据并做可视化分析

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

  1. 数据采集逻辑

python爬取天气数据并做可视化分析
  1. 数据schema

历史天气数据schema

{

‘当日信息’:'2023-01-01 星期日',

'最高气温': 8℃'',

'最低气温': '5℃',

‘天气’: '多云',

'风向信息':'北风 3级'

}

  1. 数据爬取

1.导入库

import numpy as np
import pandas as pd
import requests
from bs4 import BeautifulSoup
from matplotlib import pyplot as plt
from pandas import Series, DataFrame

2.对程序进行伪装

headers = {
    'Host': 'lishi.tianqi.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.63'
}

3.抓取天气数据

url = 'https://lishi.tianqi.com/shanghai/202301.html'  # 上海 2023年1月天气
res = requests.get(url, headers=headers)

res.encodind = 'utf-8'
html = BeautifulSoup(res.text, 'html.parser')
data_all = []
tian_three = html.find("div", {"class": "tian_three"})
lishi = tian_three.find_all("li")
for i in lishi:
    lishi_div = i.find_all("div")
    data = []
    for j in lishi_div:
        data.append(j.text)
    data_all.append(data)
print(data_all)

4.数据存储

在数据存储前,对数据进行处理,便于后期的数据分析。将上面的“当天信息”字段拆分为“日期”和“星期”两个字段,“风向信息”也是如此。最后,将数据保存为csv文件中。

weather = pd.DataFrame(data_all)
weather.columns = ["当日信息", "最高气温", "最低气温", "天气", "风向信息"]
weather_shape = weather.shape
print(weather)
weather['当日信息'].apply(str)
result = DataFrame(weather['当日信息'].apply(lambda x: Series(str(x).split(' '))))
result = result.loc[:, 0:1]
result.columns = ['日期', '星期']
weather['风向信息'].apply(str)
result1 = DataFrame(weather['风向信息'].apply(lambda x: Series(str(x).split(' '))))
result1 = result1.loc[:, 0:1]
result1.columns = ['风向', '级数']
weather = weather.drop(columns='当日信息')
weather = weather.drop(columns='风向信息')
weather.insert(loc=0, column='日期', value=result['日期'])
weather.insert(loc=1, column='星期', value=result['星期'])
weather.insert(loc=5, column='风向', value=result1['风向'])
weather.insert(loc=6, column='级数', value=result1['级数'])
weather.to_csv("上海23年1月天气.csv", encoding="utf_8")

5.数据分析

注:数据分析用的是北京2023年1月的天气数据,如下图:

python爬取天气数据并做可视化分析

1.2023北京1月天气情况

# 数据处理
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


weather['最高气温'] = weather['最高气温'].map(lambda x: int(x.replace('℃', '')))
weather['最低气温'] = weather['最低气温'].map(lambda x: int(x.replace('℃', '')))

dates = weather['日期']
highs = weather['最高气温']
lows = weather['最低气温']

# 画图

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('2023北京1月天气情况', fontsize=24)
plt.xlabel('', fontsize=6)
fig.autofmt_xdate()
plt.ylabel('气温', fontsize=12)
plt.tick_params(axis='both', which='major', labelsize=10)
# 修改刻度
plt.xticks(dates[::5])
# 显示
plt.show()
python爬取天气数据并做可视化分析

2.北京23年1月天气候分布饼图

2023年一月份有31天,循环遍历时注意循环次数。

# 天气可视化饼图
weather = list(weather['天气'])
dic_wea = {}
for i in range(0, 31):
    if weather[i] in dic_wea.keys():
        dic_wea[weather[i]] += 1
    else:
        dic_wea[weather[i]] = 1
print(dic_wea)
explode = [0.01] * len(dic_wea.keys())
color = ['lightskyblue', 'silver', 'yellow', 'salmon', 'grey', 'lime', 'gold', 'red', 'green', 'pink']
plt.pie(dic_wea.values(), explode=explode, labels=dic_wea.keys(), autopct='%1.1f%%', colors=color)
plt.title('北京23年1月天气候分布饼图')
plt.show()
python爬取天气数据并做可视化分析

3.风级图

自定义change_wind函数,将风向信息转换为数值,并计算出各风向的风速平均值。文章来源地址https://www.toymoban.com/news/detail-439434.html

def change_wind(wind):
    """改变风向"""
    for i in range(0, 31):
        if wind[i] == "北风":
            wind[i] = 90
        elif wind[i] == "南风":
            wind[i] = 270
        elif wind[i] == "西风":
            wind[i] = 180
        elif wind[i] == "东风":
            wind[i] = 360
        elif wind[i] == "东北风":
            wind[i] = 45
        elif wind[i] == "西北风":
            wind[i] = 135
        elif wind[i] == "西南风":
            wind[i] = 225
        elif wind[i] == "东南风":
            wind[i] = 315
    return wind


# 风向雷达图
wind = list(weather['风向'])
weather['级数'] = weather['级数'].map(lambda x: int(x.replace('级', '')))
# weather['级数']=pd.to_numeric(weather['级数'])
wind_speed = list(weather['级数'])
wind = change_wind(wind)


degs = np.arange(45, 361, 45)
temp = []
for deg in degs:
    speed = []
    # 获取 wind_deg 在指定范围的风速平均值数据
    for i in range(0, 31):
        if wind[i] == deg:
            speed.append(wind_speed[i])
    if len(speed) == 0:
        temp.append(0)
    else:
        temp.append(sum(speed) / len(speed))
print(temp)
N = 8
theta = np.arange(0. + np.pi / 8, 2 * np.pi + np.pi / 8, 2 * np.pi / 8)
# 数据极径
radii = np.array(temp)
# 绘制极区图坐标系
plt.axes(polar=True)
# 定义每个扇区的RGB值(R,G,B),x越大,对应的颜色越接近蓝色
colors = [(1 - x / max(temp), 1 - x / max(temp), 0.6) for x in radii]
plt.bar(theta, radii, width=(2 * np.pi / N), bottom=0.0, color=colors)
plt.title('风级图', x=0.2, fontsize=20)
plt.show()
python爬取天气数据并做可视化分析

到了这里,关于python爬取天气数据并做可视化分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python爬虫爬取电影数据并做可视化

    1、发送请求,解析html里面的数据 2、保存到csv文件 3、数据处理 4、数据可视化 需要用到的库: 注意:后续用到分词库jieba以及词频统计库nltk    解释器: python  3.10.5 编辑器:VsCode -jupyter-notebook 使用ipynb文件的扩展名 vscode会提示安装jupyter插件 效果: 注意:使用jieba分词,

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

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

    2024年02月03日
    浏览(46)
  • Python爬取城市天气数据,并作数据可视化

    1.爬取广惠河深2022-2024年的天气数据  爬取的数据如下图所示     2.读取csv文件 3.去除多余字符 4.分割星期和日期 5.筛选出城市数据子集。其中包含了四个城市在不同天气下的天数统计结果。    6.将原有的天气类型按照划分 7.对城市的天气数据按照新天气列分组后,

    2024年02月10日
    浏览(42)
  • 简单的用Python采集招聘数据内容,并做可视化分析!

    哈喽大家好,现在刚毕业,很多小伙伴因为找不到工作或者找了很多也不喜欢,再有懒一点的,太热了根本不想出门到处找。 所以今天给大家分享使用Python批量采集招聘数据,进行可视化分析,轻松找到心仪工作! 话不多说,我们直接开始~ 准备工作 软件工具 Python 3.8 Pych

    2024年02月15日
    浏览(67)
  • 【Python爬虫+数据分析】采集电商平台数据信息,并做可视化演示

    随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、

    2024年02月08日
    浏览(54)
  • 简单的用Python采集猎聘招聘数据内容,并做可视化分析!

    现在刚毕业,很多小伙伴因为找不到工作或者找了很多也不喜欢,再有懒一点的,太热了根本不想出门到处找。 所以今天给大家分享如何在家就能找到心仪工作 使用Python批量采集招聘数据,进行可视化分析,轻松找到心仪工作! 话不多说,我们直接开始~ 软件工具 Python 3.

    2024年02月17日
    浏览(35)
  • 【Python爬虫+数据分析】采集电商平台数据信息,并做可视化演示(带视频案例)

    随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。 接下来就让我来教你 如何使用Python编写爬虫程序,抓取电商平台的

    2024年02月11日
    浏览(60)
  • python天气数据可视化分析

    网:tianqihoubao 对深圳近几月的天气进行分析可视化    get函数 用于get网页数据并进行分析讲需要的天气数据进行导出  数据都在tr便签里所以只提取tr标签里的数据  调用  提取深圳近三个月的数据,并用pandas库中的concat将三个get完的数据进行整合 表格展示 导出的表格数据

    2024年02月11日
    浏览(42)
  • Python采集天气数据,做可视化分析【附源码】

    动态数据抓包 requests发送请求 结构化+非结构化数据解析 python 3.8 运行代码 pycharm 2021.2 辅助敲代码 requests 如果安装python第三方模块: win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests)回车 在pycharm中点击Terminal(终端) 输入安装命令 发送请求 获取数据 解析

    2024年02月09日
    浏览(38)
  • 【python】python课设 天气预测数据分析及可视化(完整源码)

    1. 前言 本文介绍了天气预测数据分析及可视化的实现过程使用joblib导入模型和自定义模块GetModel获取模型,输出模型的MAE。使用pyecharts库进行天气数据的可视化,展示南京当日天气数据的表格。总体来说,该文叙述通过调用自定义模块和第三方库,获取天气数据、进行模型预

    2024年02月04日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包