温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用Python来分析中秋佳节的天气

发布时间:2021-10-28 18:14:44 来源:亿速云 阅读:133 作者:柒染 栏目:编程语言

本篇文章给大家分享的是有关怎么用Python来分析中秋佳节的天气,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

中秋佳节将近,不知道各位小伙伴儿有没有想好去哪里玩呢。不过说实在的,每到节假日,到处都是人山人海,那句“我动也不能动”,我还能唱出来哈!

但是又说回来,假期出游,除了人的因素外,天气的因素是不是也要考虑下呢,今天,我们就用Python爬虫带大家来看看,中秋小长假,哪些地方适宜出游。

获取数据

数据的获取,就从中国天气网站上直接抓取,网络上的一些 API,有的信息不是很全,只能获取最近3天的数据,有的又需要付费,还不如自己抓来的痛快。

网站也没有做什么限制,我们抓数据的时候,只需要控制好访问频率,不要影响人家的正常运行就可以。

同时还需要准备四个数据文件

  • 省会城市列表,provincial_capital

  • 全国城市 id 信息表,china-city-list.csv

  • 著名景点名称列表,attractions

  • 全国景点 id 信息表,china-scenic-list.txt

抓取的过程不再详细说明了,直接给出完整代码

# coding = utf-8
"""
@author: zhou
@time:2019/9/5 14:36
@File: main.py
"""
import requests
from bs4 import BeautifulSoup
import time
import os
def get_data(name, city, code):
 print("正在下载城市%s的数据" % city)
 url = 'http://www.weather.com.cn/weather15d/%s.shtml' % code[2:]
 res = requests.get(url).content.decode()
 content = BeautifulSoup(res, "html.parser")
 weather_list = content.find('ul', attrs={'class': 't clearfix'}).find_all('li')
 items = map(parse_item, weather_list)
 save_to_csv(name, city, items)
 time.sleep(1)
def parse_item(item):
 time = item.find('span', attrs={'class': 'time'}).text
 wea = item.find('span', attrs={'class': 'wea'}).text
 tem = item.find('span', attrs={'class': 'tem'}).text
 wind = item.find('span', attrs={'class': 'wind'}).text
 wind_level = item.find('span', attrs={'class': 'wind1'}).text
 result = {
 "time": time,
 "wea": wea,
 "tem": tem,
 "wind": wind,
 "wind_level": wind_level
 }
 return result
def save_to_csv(name, city, data):
 if not os.path.exists('%s_data.csv' % name):
 with open('%s_data.csv' % name, 'a+', encoding='utf-8') as f:
 f.write('city,time,wea,tem,wind,wind_level\n')
 for d in data:
 try:
 row = '{},{},{},{},{},{}'.format(city,
 d['time'],
 d['wea'],
 d['tem'],
 d['wind'],
 d['wind_level'])
 f.write(row)
 f.write('\n')
 except:
 continue
 else:
 with open('%s_data.csv' % name, 'a+', encoding='utf-8') as f:
 for d in data:
 try:
 row = '{},{},{},{},{},{}'.format(city,
 d['time'],
 d['wea'],
 d['tem'],
 d['wind'],
 d['wind_level'])
 f.write(row)
 f.write('\n')
 except:
 continue
if __name__ == '__main__':
 import pandas as pd
 provincial = pd.read_csv('provincial_capital')
 china_city_code = pd.read_csv('china-city-list.csv')
 china_scenic_code = pd.read_csv('china-scenic-list.txt', sep='\t')
 china_scenic_code.columns = ['ID', 'name', 'area', 'provincial']
 attraction = pd.read_csv('attractions')
 provincial_data = pd.DataFrame()
 attraction_data = pd.DataFrame()
 # 省会抓取
 for i in provincial['city'].values.tolist():
 for j in china_city_code['City_CN'].values.tolist():
 if j == i:
 provincial_data = pd.concat([china_city_code[china_city_code['City_CN'] == j], provincial_data])
 for city in provincial_data['City_CN'].values.tolist():
 city_id = provincial_data[provincial_data['City_CN'] == city]['City_ID'].values.tolist()[0]
 get_data('weather', city, city_id)
 # 景点抓取
 for a in attraction['attractions'].values.tolist():
 for c in china_scenic_code['name'].values.tolist():
 if c == a:
 attraction_data = pd.concat([china_scenic_code[china_scenic_code['name'] == c], attraction_data])
 for attrac in attraction_data['name'].values.tolist():
 city_id = attraction_data[attraction_data['name'] == attrac]['ID'].values.tolist()[0]
 get_data('attraction', attrac, city_id)

省会天气分析

我们首先来看看省会天气,毕竟省会城市是每个省份的中心,也是旅游的重点城市。

降水和温度

对于降水的概率,我采取的是如果预报是有雨,则设置降水概率为80,如果是预报是晴,则降水概率为20.

weather_dict = {
 "snow": 100,
 "rain": 80,
 "cloud": 50,
 "overcast": 60,
 "sun": 20
}

在中秋节这一天,各个省会城市的降水和温度

怎么用Python来分析中秋佳节的天气

能够看出,大部分城市在这一天都是天公不作美的,降水的概率都非常的大。而温度的话,大概率降水的城市,温度都不是很高,早晚出行,可能还会很凉哦。温度最高的应该就是南昌了,还能达到30°C,一个艳阳高照的日子,是不是去看看革命圣地?

接下来我们再通过一个双轴图来更加直观的查看下降水和温度的情况

怎么用Python来分析中秋佳节的天气

看来在进入9月之后,全国普遍的温度都在慢慢回落了,温度适宜出行,但是就是会伴随着绵绵的细雨呀。

再来看下几大城市在中秋前后一周的天气情况

北京

怎么用Python来分析中秋佳节的天气

北京的气温还是比较平稳的,没有太大的波动,可能早晚一件薄外套就能hold的住,不过这几天,应该都会是阴蒙蒙的,不会有太好的阳光。

上海

怎么用Python来分析中秋佳节的天气

上海的降水概率要比北京大一些,不过温度倒是相差不多。

杭州

怎么用Python来分析中秋佳节的天气

杭州的平均温度还是要高一些,降水的概率也较高,毕竟典型的东南沿海城市嘛,雨天的西湖,你期待不?

成都

怎么用Python来分析中秋佳节的天气

成都基本天天下雨了,那还出门看大熊猫嘛,这是个问题啊!

著名景区天气

下面我们再来看看一些著名景区的天气情况,我大好河山,景区太多了,只能简单列举一些最著名的地方来看看了。

降水情况

怎么用Python来分析中秋佳节的天气

在我选取的这些景区当中,大部分都是会有降水的,不过也会有阳光明媚的地方。

比如说黄山和八达岭长城,预计会是晴天,去爬爬长城和黄山,是不错的选择。

而美丽的九寨沟和西湖等,虽说会下雨,但是在雨天漫步,也不失为一种情趣吧。

降水和温度

我们再来看看各地的温度情况

怎么用Python来分析中秋佳节的天气

不知道为啥承德的温度会那么低,感觉去避暑已经不太合适了,而长白山已经只有7°C了,慌不慌?

降水与温度分布

最后,我们再来看看,中秋节当天,降水和气温的分布情况

降水

怎么用Python来分析中秋佳节的天气

进入9月,东南沿海降水明显增多,京津地区也是阴雨连绵,这是一场秋雨一场寒的节奏吗!

气温

怎么用Python来分析中秋佳节的天气

东南半壁,温度还是比较适宜的,现在的天气下,不冷不热,正是出游好温度。

亲爱的伙伴,你中秋是在哪呢?有多少是跟我一样在家躺尸的!

以上就是怎么用Python来分析中秋佳节的天气,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI