python采集天气数据 并做数据可视化 (含完整源代码)

前言

最近天气好像有了点小脾气,总是在万分晴朗得时候耍点小性子~

阴会天,下上一会的雨~提醒我们时刻记得带伞哦,不然会被雨淋或者被太阳公公晒到 😜

那么今天我就来分享一下采集天气数据 并做数据可视化的代码吧~

请添加图片描述



本篇代码提供者: 青灯教育-巳月老师

知识点:

动态数据抓包

requests发送请求

结构化+非结构化数据解析


开发环境:

python 3.8 运行代码

pycharm 2021.2 辅助敲代码

requests


如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

代码实现:

  1. 发送请求
  2. 获取数据
  3. 解析数据
  4. 保存数据

请添加图片描述

采集天气数据代码

导入模块

import requests     # 第三方模块 提前安装  发送请求 (Python里面浏览器)  爆红是因为你没有安装模块
# 如果安装了 但还是爆红是因为什么呢? 解释器在pycharm里面配置的不对
import parsel
import csv
# 翻译插件
with open('天气.csv', mode='a', encoding='utf-8', newline='') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(["日期", "最高温度", "最低温度", "天气", "风向", "城市"])
city_list = [54511, 58362, 59287, 59493]
for city in city_list:
    for year in range(2011, 2022):
        for month in range(1, 13):
            url = f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={
     city}&areaInfo%5BareaType%5D=2&date%5Byear%5D={
     year}&date%5Bmonth%5D={
     month}'

1. 发送请求

            response = requests.get(url=url)
            # <Response [200]>: 请求成功

2. 获取数据

            # json数据传输格式
            json_data = response.json()
            # 字典类型数据

3. 解析数据

            # 结构化数据解析
            html_data = json_data['data']
            selector = parsel.Selector(html_data)
            # 正则 css xpath json字典数据解析
            tr_list = selector.css('.history-table tr')
            # tr_list[1:] 从列表的第二个元素开始取
            for tr in tr_list[1:]:
                # <X>fhwaeuifhwiuf</X>
                td = tr.css('td::text').getall()
                if td[2] == '°':
                    td[2] = td[1]
                if city == 54511:
                    td.append("北京")
                elif city == 58362:
                    td.append("上海")
                elif city == 59287:
                    td.append("广州")
                elif city == 59493:
                    td.append("深圳")
                print(td)
                # 文件名 写入方式 追加写入  编码方式 utf-8  数据空行
                with open('天气.csv', mode='a', encoding='utf-8', newline='') as f:
                    csv_writer = csv.writer(f)
                    csv_writer.writerow(td)

数据分析代码

导入包

import pandas as pd
import datetime
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.commons.utils import JsCode

读入数据

data = pd.read_csv('天气.csv')
data

数据预览

data.sample(5)

data.info()

分割日期/星期

data[['日期','星期']] = data['日期'].str.split(' ',expand=True,n=1)
data

去除多余字符

data[['最高温度','最低温度']] = data[['最高温度','最低温度']].apply(lambda x: x.str.replace('°',''))
data.head()

计算下雪天气

data.loc[data['天气'].str.contains('雪'),'下雪吗']='是'
data.fillna('否',inplace=True)

分割日期时间

data['日期'] = pd.to_datetime(data['日期'])
data[['最高温度','最低温度']] = data[['最高温度','最低温度']].astype('int')

data['年份'] = data['日期'].dt.year
data['月份'] = data['日期'].dt.month
data['日'] = data['日期'].dt.day
# 预览
data.sample(5)

各城市初雪的时间

s_data = data[data['下雪吗']=='是']
s_data[(s_data['月份']>=9)].groupby('年份').first().reset_index
  • 44
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
基于Python天气预报数据爬取与可视化的研究内容主要包括以下几个方面: 1. 天气预报数据源的获取与处理。首先需要确定天气预报数据的获取方式和来源,比如通过气象局的API接口或者网站爬取。接下来需要对获取到的数据进行处理和清洗,将其转换为Python可处理的数据格式,如CSV、JSON等。 2. Python爬虫程序的设计与实现。通过Python编写爬虫程序,实现对天气预报数据的自动化爬取。需要考虑数据爬取的策略和技巧,如网页解析、反爬虫等问题。同时,需要考虑代码的可读性和可维护性,确保程序的稳定运行。 3. 天气预报数据的可视化展示。通过Python数据可视化工具,将获取到的天气预报数据以图表等形式展示出来。需要考虑展示方式的选择和设计,如线图、柱状图、热力图等。同时,需要考虑图表的美观度和表现力,让用户更直观地了解天气状况。 4. 数据分析与挖掘。通过Python数据分析工具,对天气预报数据进行分析和挖掘,探索数据之间的关系和规律。比如,分析气温变化规律、预测降雨量等等。通过数据分析,可以更好地理解和利用天气预报数据。 5. 系统测试与优化。对整个系统进行测试和优化,确保程序的稳定运行和良好的用户体验。需要考虑系统的可扩展性和灵活性,以适应不同的数据需求和使用场景。 综上所述,基于Python天气预报数据爬取与可视化的研究内容涉及到数据爬取、数据处理、数据可视化数据分析等多个方面,需要综合运用各种技术和工具,以实现对天气预报数据的自动化采集和有效利用。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值