Python-Dataframe使用已知数据填补空值

2023-11-10

作为大气遥感的一员,研究的对象主要是排放栅格图像,因此本文主要针对栅格图像来对其NaN空值进行有选择的填补。

在处理数据时遇到一个问题:当一个栅格图像只有很小一部分存在有用值。可能10000多个栅格区域只有300个有有效值,此背景下给一个假设:如果300个有效值能够表征此区域的特征,那么就想用这300个有用值来随机填补其他其余10000多个的空值,得到我该如何用python进行实现呢。

查了很多,提及的内容均是使用单一值(1或者0或者符号)或者特定值(前值或后值)进行一个简单的填补,但是没有了数据范围的可靠性和随机填补的随机性,这些内容对于复杂一些的数据处理都是没有意义的,因此想在此分析自己的想法思路,能为地理测绘或相关学科的人带来帮助也就再好不过了。

将栅格图像值转为dataframe的过程我就不作阐释了,仅仅是一系列的数据格式转换,我想到的办法是构建两个dataframe,data1与data2,假设data1和data2的栅格数据范围都是156(lon)*96(lat)=14976个栅格值变成dataframe也就是14976行,data1是其有效值(去除NAN),data2则是所有14976个值(包括NAN和有效值)。

#------------读取数据并展平为列表(分为两类:去除NAN值和没有去除NAN值)------------#
a1 = np.array(a1_3D_xr[m]).flatten() #读取每个月的系数并展平为列表
a1_1 = a1[np.logical_not(np.isnan(a1))].tolist() #删除NAN值,为构建data1做准备
a1_2 = a1.tolist() #未去除NAN值,为构建data2做准备
        
#--将展平的列表制作为两个dataframe: data1(删除NAN值的A1部分),data2(有值和无值部分A=A1+A2--#
data1 = {'a1': a1_1}
df1 = pd.DataFrame(dict([(k, pd.Series(v)) for k, v in data1.items()]))
df1.index.name = 'Grid'

data2 = {'a1': a1_2}
df2 = pd.DataFrame(dict([(k, pd.Series(v)) for k, v in data2.items()]))
df2.index.name = 'Grid'

print(df1)
print(df2)

输出结果:df1和df2

得到了df1和df2,用df1来填补df2,可以看到在df1中有331个有效值,也就是说df2也有331行值是有效的,因此我在df1中随机选择14976个值(注意是14976,而不是14976-331=14645个值),一开始我天真的以为filna函数会对df2的NAN值自动进行填补,其实并不是,而是按照顺序,从0开始一直下去,有值的跳过,没值的填补,因此这边还是使用14976个值才会对df2所有空值起到填补作用,并且也不会影响df2的原有值。

#-------A有96*156=14976的栅格值,因此对A1进行14976次随机选择填补除A1以外的所有值----------#
df_i = df1.sample(n=14976,replace=True,axis=0) #在df1中随机选取14976个值
df_i = df_i.reset_index(drop=True)  #注意对选取的值要进行重新排列,方便按照索引一一对应填入df2
df_i.index.name = 'Grid'
df2['a1'] = df2['a1'].fillna(df_i['a1']) #填入df2
print(df2)

 输出结果:填补完成的df2

 最后对df2进行reshape和格式转换就可以得到栅格数据进行下一步数据分析等等实验步骤了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python-Dataframe使用已知数据填补空值 的相关文章

随机推荐

  • 计算机最最基础的原理

    这是一篇知乎的文章详细的介绍了电子计算机运算器加减的原理及存储的原理 作者 张大昭 链接 https www zhihu com question 20112194 answer 84394468 来源 知乎 著作权归作者所有 商业转载请联
  • Heroku登录失败

    Heoku 在国内 注册和登录是个大问题 不知道原来怎么注册上了 如今需要登录删除 app 就是删除不了 今天努力找了个vpn 无奈还是登录不成功 https id heroku com login 在群里问了下有人能上 就知道肯定设置的有
  • Android Update Engine 分析(二十)为什么差分包比全量包小,但升级时间却更长?

    本文为洛奇看世界 guyongqiangx 原创 转载请注明出处 原文链接 https blog csdn net guyongqiangx article details 132343017 0 导读 时不时有同学在 OTA 讨论群和 V
  • 华为OD机试真题-机房布局/栈解法【2023.Q1】

    小明正在规划一个大型数据中心机房 需要满足的条件是 确保在每个机柜边上至少要有一个电箱 已知 机房排成1排 我们用M表示机柜 I表示间隔 请你返回这整排机房 至少需要多少个电箱 如果无解请返回 1 输入描述 第一行输入一个字符串 由 M 和
  • SqliLabs Less21-22

    第二十一关 基于单引号和括号 64位编码的密码注入 1 判断注入点 有了20关的经验 输入爆破账户 admin密码 admin后抓包 发现admin输入为YWRtaW4 3D 根据提示用64位数据解码得到YWRtaW4 用url编码 为 3
  • 新老域名更替时的页面跳转

    不少站长都有换域名的经历 新买的www xxx com的域名和老域名都已经绑定在空间上了 但老域名总是不敢轻易拿掉 更换的话 跟老域名相关的所有链接都将失效 出现404的页面非常不友好 用户也将找不到原来的内容 其实用JS跳转功能可以帮站长
  • 机器学习零基础?手把手教你用TensorFlow搭建图像识别系统

    转 http www leiphone com news 201701 Y4uyEktkkwb5YhJM html http www leiphone com news 201701 2tH3DgLmsGhnDd8D html 导语 这是W
  • 基于nb-iot和arduino的气象站(一)

    基于nb iot和arduino的气象站 一 温湿度和紫外线传感器 上一篇已经介绍了项目的大概情况 这一篇先讲温湿度传感器和紫外线传感器的使用 一 温湿度传感器 我使用的温度传感器为DHT21 DHT21数字温湿度传感器是一款含有已校准数字
  • [Java基础系列第5弹]Java多线程:一篇让你轻松掌握并发编程的指南

    多线程是一种编程技术 它可以让一个程序同时执行多个任务 从而提高程序的性能和效率 但是 使用Java多线程也不是一件容易的事情 它涉及到很多复杂的概念和问题 如线程安全 同步 锁 原子类 并发集合 生产者消费者模式 线程池模式 Future
  • 企业级Vue路由角色权限应该怎么做?

    角色权限 角色权限 简单来说就是登录的用户能看到系统的哪些页面 不能看到系统的哪些页面 一般是后台管理系统才会涉及到如此复杂的角色权限 对于 vue 技术栈 实现角色权限一般有两种方式 第一种是利用 beforeEach 全局前置守卫 第二
  • Unity的初次接触(一)

    Unity界面介绍 首先当我们安装完成Unity后 会呈现出这样的界面 第一步是点击右上角的New按钮 创建新的项目 然后你会看到这个界面 从左到右 从上到下依次是 项目名称 选择模板 项目保存的路径 添加资源包 创建这个项目的组织 启动u
  • idea中Vue的v-on报错

    虽说并不影响代码的执行结果 但是作为强迫症的你们肯定很不爽 解决方法 直接添加 只针对v on 其他还需添加 xmlns v on http www w3 org 1999 xhtml Settings gt Inspections gt
  • React 环境搭建以及创建项目工程(二)

    创建工程 首先创建一个工程 npx create react app weibo cd移动到当前创建的文件下 cd weibo 安装 React 路由 npm install react router react router dom 5
  • 微信小程序实现保存图片到本地

    wxml代码
  • PySyft中model.get()方法解释

    最近在看联邦学习相关内容 上手了PySyft框架 该框架相当于是在Pytorch深度学习框架上扩展的第三方API 对我经常使用Pytorch深度学习框架的人来说再合适不过 然后在网上找各种帖子学习了一点基础的东西 其中有一篇比较经典的帖子是
  • 算法(1)---八大排序算法

    一 选择排序 定义 从待排序的数据中 按指定的规则选出某一个元素 再依规定交换位置后达到排序的目的 核心思想 从全部序列中选取最小的 与第0个元素交换 然后从第1个元素往后找出最小的 与第一个元素交换 再从第2个元素往后选取最小的 与第二个
  • oracle 查询表空间所有表、及表所有的表空间

    查询表空间所有表 select table name from all tables where TABLESPACE NAME 表空间 表空间名字一定要大写 查询表所在的表空间 select from user tables where
  • Iframe postMessage 日志

    postMessage catcher 之前工作需要接入不同 iframe 需要使用 postMessage 来进行通信 本地开发还好可以方便打印相互通信的数据 就是线上有些麻烦 不好直接观察发送和接收的数据是怎么样的 所以写了个 chro
  • 设置Linux服务器登录密码过期时长

    设置Linux服务器登录密码过期时长 登录服务器时 提示登录密码过期 必须修改密码重新登录 You are required to change your password immediately password aged You mus
  • Python-Dataframe使用已知数据填补空值

    作为大气遥感的一员 研究的对象主要是排放栅格图像 因此本文主要针对栅格图像来对其NaN空值进行有选择的填补 在处理数据时遇到一个问题 当一个栅格图像只有很小一部分存在有用值 可能10000多个栅格区域只有300个有有效值 此背景下给一个假设