python实现基于分钟数据来计算小时风速、风向的数据

本文主要讲述气象数据集处理,将分钟数据转化为小时数据。小时风向取一小时内频度最高方位为主风向,风速取该主风向方位上所有分钟风速数据的均值,并按此思路进行了代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       今天处理了一个气象数据集,我们得到的数据集是分钟数据形式,需要转化为小时数据形式,我们都知道小时的风速风向其实并不是二者分钟数据的均值,因为不可能一小时内所有的风向都是同一方位上的,只能说某一方位上一小时内的频度最高,也即该方位为该小时内的主风向,至于风速的计算,则是取一小时内该主风向方位上的所有分钟风速数据的均值。

     有了上面的计算思路之后就可以直接进行实现了,具体实现如下:

#!usr/bin/env python
# encoding:utf-8
from __future__ import division

"""
__Author__:沂水寒城
功能: 基于分钟数据来计算风向和风速数据

计算思想:
以单个小时内特定方位频度最高的风向作为主风向,以该方位风向的所有分钟风速数据的均值作为小时的风速值
"""




def windSpeedDirection(data_list):
    '''
    基于分钟数据来获取风向和风速数据
    data_list中每一个子列表元素形式为:
    T,temperate,pressure,humidity,speed,direction
    '''
    data_dict = {}  #以小时为键构建字典,将同一小时的所有分钟数据放到一个列表里面
    for i in range(1,len(data_list)):
        T,temperate,pressure,humidity,speed,direction=data_list[i]
        hour=T.split(':')[0].strip()+':00:00'
        if hour in data_dict:
            data_dict[hour].append(data_list[i])
        else:
            data_dict[hour]=[data_list[i]]
    #遍历处理每一个小时的风速风向数据
    result={}
    for one_hour in data_dict:
        print 'one_hour: ',one_hour
        one_data=data_dict[one_hour]
        res_list=sorted(one_data,key=lambda i:i[0])  #依据时间升序排序
        wd_list=[float(res_list[i][-1]) for i in range(len(res_list))]
        ws_list=[float(res_list[i][-2]) for i in range(len(res_list))]
        fwj_list=[degree2WindDirection(degree=one) for one in wd_list]
        fre_dict={}
        for one in fwj_list:
            if one in fre_dict:
                fre_dict[one]+=1
            else:
                fre_dict[one]=1
        fre_list=sorted(fre_dict.items(),key=lambda e:e[1],reverse=True)
        final_wd=fre_list[0][0]
        final_ws_list=[]
        for i in range(len(wd_list)):
            if degree2WindDirection(degree=wd_list[i])==final_wd:
                final_ws_list.append(ws_list[i])
        print final_ws_list
        ws=sum(final_ws_list)/len(final_ws_list)
        wd=windDirection2Degree(direction=final_wd)
        result[one_hour]=[ws,wd]
    return result


if __name__=='__main__':
    windSpeedDirection(data_list)

        整体的实现思路也是很简单的,相应的注释都已经放在代码里面了,就不再多进行解释了。

        美好又充实的周末,迎接来了两位兄弟,又送走了两位兄弟,时间是如此的匆匆,可能现在的年纪并非是我们应该停下脚步去回忆的时候吧,那么就去努力奋斗吧,加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Together_CZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值