第一章附赠小节:利用聚类分析简单的气象数据缺省值处理模块

好久没有更新点东西了,就把工作中灵感突发得到得小模块分享给大家吧。

需求分析

首先,气象观测数据因为有很多很多所以时不时的会有缺省值,就是说通常的数据非常的不干净,几乎每个时次同一区域不同站点总有几个或一堆缺测值,简单的求平均或者NAN=0,会破坏观测数据的分布结构,这样代表性就变小了,但是直接扔掉又会造成数据量骤减。
所以,资料的预处理很重要,这里分享一个实际使用中的简单小模块。

方法简述

核心思路是将不同的站点按照“粗一些”的网格区域分类,每类分别求取自己的平均值,然后替代掉自己类里面含有的缺省值,达到data clean的功能。
然后重复迭代更粗一丢丢的网格直到消灭所有缺省值。

代码

def lon_lat_web_cleanup(df,rect=1):
    """
    按照经纬度以及给定的网格分配距离分组求平均值,以求填补缺省值
    #design by wenqiushi 2018/5/21
    """
    
    lonW = df['longitude'].min() - rect
    lonE = df['longitude'].max() + rect
    latS = df['latitude'].min() - rect
    latN = df['latitude'].max() + rect
    lon_web = np.arange(lonW,lonE,rect)
    lat_web = np.arange(latS,latN,rect)
    
    lon_grib,lat_grib=np.meshgrid(lon_web,lat_web)
    
    kind_dict = {}
    kind_num = 0
    for key in list(zip(lon_grib.reshape(-1),lat_grib.reshape(-1))):
        kind_dict[key] = kind_num
        kind_num+=1
    
    kind_list = []
    for idx in list(df.index):
        idx_lon = df.loc[idx,'longitude']
        idx_lat = df.loc[idx,'latitude']
        
        lon_flag = lon_web[np.where(np.abs(lon_web - idx_lon)==np.abs(lon_web - idx_lon).min())][0]
        lat_flag = lat_web[np.where(np.abs(lat_web - idx_lat)==np.abs(lat_web - idx_lat).min())][0]
        kind_list.append(kind_dict[(lon_flag,lat_flag)])
    res = df.copy()
    var_df=df.iloc[:,3:]
    res.insert(0,'kind',kind_list)
    res_mean=res.groupby('kind').mean()

    rc_num=np.where(var_df.isna())
    
    for row,col in list(zip(var_df.index[rc_num[0]],var_df.columns[rc_num[1]])):
        df.loc[row,col] = res_mean.loc[res.loc[row,'kind'],col]

主要实现过程

这个小模块很简单,只有两个输入:
一个是dataframe 可以是各种观测资料的时间,站点序列,以风速为例可以长成这样:


image.png

这个数据帧里面(行:966*列:1105)缺省值总共有:


image.png

8624个!基本随机的分布于整个数据帧,那么枪打出头鸟,我们提取单列缺省最多的一列来看看分布情况吧


image.png

image.png

这一列是缺值最多的一列,一共只有828个有效的数据点!

下面简单介绍模块的执行:
先从数据帧里获取经纬度的最大最小值,根据设定的网格分辨率(度)建立网格,然后建立一个以经纬度元组位key的字典kind_dict,存放分类ID,大概长这样,这里需要注意python的字典是没有顺序可言的。

image.png

然后根据kind_dict使用groupby方法对数据帧进行分类,之后就能求取各个分类的平均值了。之后的工作就是获取数据帧缺省值对应的站号(行)及其时间(列)标记,进而得到分类号,然后索引出对应的平均值赋值给对应的缺省值。

image.png

进过一次处理后得到的结果数据帧内缺省值减少近9成!


image.png

再回头对比以下缺省值最多了那个时次处理以后的分布情况:


image.png

两者几乎没有变化说明我们的数据清理工作还是比较成功的。
之后的事情就只需要迭代用更粗一点点的分辨率去填补仍然缺省的1217个点了,针对这次的数据迭代到第五步,5度格距的时候缺省值就全部处理完毕了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 120,193评论 1 241
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 52,538评论 1 203
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 75,483评论 0 168
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 36,788评论 0 128
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 43,625评论 1 208
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 36,172评论 1 127
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 28,139评论 2 209
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 27,256评论 0 120
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 26,207评论 5 173
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 30,340评论 0 179
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 27,518评论 1 170
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 28,775评论 1 179
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 23,044评论 0 25
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 25,682评论 2 166
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 29,566评论 3 174
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 24,541评论 0 4
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 24,512评论 0 114
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 30,791评论 2 192
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 31,171评论 2 189

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,093评论 6 13
  • Python 和 Pandas 数据分析教程 原文:Data Analysis with Python and P...
    布客飞龙阅读 81,909评论 9 223
  • 文/利子 枯萎的禾苗,我以甘霜的活水滋润之;啧恚的怒火,我以忍耐的活水熄灭之;污秽的身心,我以智慧的活水洗净之。 ...
    Angel利子阅读 223评论 0 3
  • 最近看到小型的插画,也是记录这个小女孩的日常生活吧,所以很喜欢这种简略的带一点点素描的画。 现在可真热啊!多想像这...
    一只好coffee阅读 2,217评论 6 11
  • 看着这雨幕,突然又想到曾看的电影,想到Jack与Rose的相遇。其实当初Jack是上不了船的,但命运推了他一把,在...
    山慕阅读 190评论 0 2