1153天数据告诉你黄山云海在哪些天容易遇见

1153天数据告诉你黄山云海在哪些天容易遇见

数据来源:黄山风景区管理委员会官网 > 气象信息

原创:Ing_ideas


云海是黄山的第一奇观。huangshan-gb3d37fee4_1920

据百度百科记载,黄山一年只有51天可以看到云海,每年11月到第二年的5月是观赏环山云海的最佳时间段。抱着数据党的态度,想用真实的数据证明以上结论是否可信。


流程:

1.数据获取:黄山官网的气象预告从2018年起至今提供了条天气预报数据,包括我们所需的基本天气情况以及云海概率。

导航:黄山风景区管理委员会官网-气象信息 image-20221125161823569

image-20221125161943480

2.对获得文本数据进行提取,这里我们采用的Python中正则的方法来提取。

3.进行数据透视和绘图分析。

一、数据获取

1.request请求

根据网页结构构造url请求,一共75页。

url = 'https://hsgwh.huangshan.gov.cn/content/column/6794224?pageIndex={}'.format(i)

2.lxml结合xpath解析网页源代码

#定义字典储存数据
item = {}
#解析源代码 
content_lst = selector.xpath("//div/div[3]/div[3]//ul//a//span/text()")
#解析日期
date_lst = selector.xpath('//li//span[@class="right date"]/text()')

3正则提取文本

首先要解决正则如何匹配中文字的问题:

1.”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符;

2.利用编码函数将特定字符转换为unicode编码。

def get_unicode(str):
    str_unicode = str.encode('unicode-escape').decode()
    return print(str_unicode)
M_unicode = get_unicode('月')
D_unicode = get_unicode('日')

#以下是输出,填入匹配规则就行
#\u6708
#\u65e5

# 循环解析
for num,n in enumerate(content_lst):    
  pattern_num = re.compile(r'-?\d{1,2}') # 匹配1-2位数字 -?此符号最多可以有一次
    pattern_per = re.compile(r'-?\d{1,2}%') # 匹配1-3位概率
    pattern_tex = re.compile(r'[\u4e00-\u9fa5]') # 匹配所有汉字

    pattern_TEM = re.compile(r'\u6c14\u6e29-?\d{1,2}[\u4e00-\u9fa5]-?\d{1,2}')
    pattern_SR = re.compile(r'\d{1}\u65f6\d{1,3}\u5206') # 日出时间文本
    
    # 最低和最高温度
    tems = pattern_TEM.findall(n)
    for tem in tems:
        tem_min = pattern_num.findall(tem)[0]
        tem_max = pattern_num.findall(tem)[1]
        item['tem_min'] = tem_min
        item['tem_max'] = tem_max       
#云海概率2018有和2022用的不同表述,需要多个条件和手动判断
if len(percent) == 2:
    sunrise_time_per = percent[0]
    item['sunrise_time_per'] = sunrise_time_per
    # 云海可见概率
    sea_of_clouds_per = percent[1]
    item['sea_of_clouds_per'] = sea_of_clouds_per

elif len(percent) == 1:
    sunrise_time_per = percent[0]
    item['sunrise_time_per'] = sunrise_time_per
    if len(per_kejianyunhai) == 1 :
        item['sea_of_clouds_per'] = '80%'
    elif len(per_oujianyunhai) == 1:
        item['sea_of_clouds_per'] = '30%'
    else:
        print(n+url+'网页需核实1')

else:
    print(n+url+'网页需核实0')
    item['sunrise_time_per'] = item['sea_of_clouds_per'] = '0'

# 储存        pd.DataFrame([item]).to_csv('./weather.csv',mode='a',index=False,header=0) 

二、数据清洗

将数据去重、将日期转为datetime对象等

df.drop_duplicates(inplace=True,ignore_index=True)
read_csv(parse_dates=['datetime']) # parse_dates将某些列解析为 DataTime 对象,这比使用 to_datetime() 方便

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


三、数据分析

究竟哪些天容易见到云海(请横屏观看):

每年最可能见到黄山云海的76天

三年平均下来,共有76天云海可见概率大于等于60%,占全年20%,所以碰上黄山云海还是需要靠运气的。我们可以看到五一和十一黄金周云海概率不到60%,同时人流又多还会堵在上下山途中动不了,建议错峰出游。

他们集中在每年11-12月、1-2月、6月,其中冬季能见到雾凇与云海两大奇观,黄山的淡季门票还打折,时间是2021年12月20日至2022年1月20日,查好天气错峰看雪景也是很不错的。

image-20221125182759721

最后

感谢阅读,如果觉得文章有用,希望点赞和关注。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Renhai实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值