038—pandas 重采样线性插补

前言

在数据处理时,由于采集数据量有限,或者采集数据粒度过小,经常需要对数据重采样。在本例中,我们将实现一个类型超分辨率的操作。

思路:

  • 首先将原始数据长度扩展为 3 倍,可以使用 loc[] 方法对索引扩展来生成,同时去掉尾部多余的数据。
  • 再将每行数据扩展出的数据挖去(设置为空),这个操作我们在案例 使用 explode() 后不复制其他列 中有过讲解。
  • 最后使用 DataFrame 的 interpolate() 插补方法会默认按线性逻辑进行填充。

使用步骤

读入数据

代码如下(示例):

import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [10, 20, 50, 40, 80,],'B': [2, 8, 10, 6, 4, ],})df
# 这个数据共有 5 行,现在我们需要扩展它,在前相邻两个数据之间由一个扩展为 3 个。如 0 和 1 之间再增加两个数据,最终数据为 13 行。
# 新增加的数据行,按整体按线性插补的算法补充。

在这里插入图片描述

# 将索引重复三次:
df.index.repeat(3)

在这里插入图片描述

# 将得到的索引传入 loc[] 得到扩展数据:
df.loc[df.index.repeat(3)]

在这里插入图片描述

# 去掉尾部多余的数据:
(df.loc[df.index.repeat(3)].iloc[:-3+1] # 删除最后三个(可为变量),再保留1个,方便以后封装
)

在这里插入图片描述

# 再接我们之前案例的方法将扩展出来的数据设置为空:
def func(d: pd.DataFrame):d.iloc[1:, :] = Nonereturn d(df.loc[df.index.repeat(3)].iloc[:-3+1].groupby(level=0).apply(func)
)

在这里插入图片描述

# 最后再用 interpolate() 插补数据,整体代码如下:
def func(d: pd.DataFrame):d.iloc[1:, :] = Nonereturn d # 将第一行及其之后的行设置为None(df.loc[df.index.repeat(3)]  # 将df的每个索引值重复3次.iloc[:-3+1] # 取除了最后3行的所有行.groupby(level=0) # 按照索引值进行分组.apply(func) # 对每个分组应用函数func.interpolate() # 对缺失值进行插补
)

在这里插入图片描述

# 其他方法:
# 我们还可以尝试用分组方法合并进去空 DataFrame,然后再做插补。
none_df = pd.DataFrame([[None]*len(df.columns)], # 将空DataFrame与原DataFrame合并columns=df.columns,  dtype=float,)
none_df

在这里插入图片描述

(df.groupby(level=0, group_keys=False)  # 按照索引值进行分组 .apply(lambda x: pd.concat([x, *[none_df]*2])) # 将空DataFrame与原DataFrame合并.interpolate() # 对缺失值进行插补.iloc[:-2]  # 取除了最后2行的所有行 
)

在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV4.9.0开源计算机视觉库安装教程

返回:OpenCV系列文章目录(持续更新中......) 引言:OpenCV系列文章中的安装部分今天全部完成了,为了读者更方便阅读,大家可以按下列索引前往,成文较为仓促有错漏在所难免,欢迎大家指正…

【C#】使用C#窗体应用开启/停止Apache、MySQL服务

目录 一、前言 二、效果图 三、配置文件 四、代码 五、一键启动/停止所有服务 一、前言 使用C#窗体应用开启Apache、MySQL服务,不仅仅是Apache、MySQL,其他服务也可以使用同样的方法操作,包括开启自己写的脚本服务。 二、效果图 两种状…

JavaSE—IO流之字符流

📌 字符流中的常用类及基本方法: 输入字符流 Reader输出字符流 Writer ○ Reader 的基本方法: • 读取一个字符并以整数的形式返回, 如果返回-1已到输入流的末尾。 int read() throws IOException • 读取一系列字符并存储到一个数组buff…

BufferedInputStream解读

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java之IO流啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯&am…

安卓Java面试题 206- 210

206. 简述如何统计Activity的工作时间 ?如何统计Activity启动所用的时间? 可以通过分析Log得到(这个就是DDMS的那个Log)。 当我们点击触摸时会了类似以下的Log A: 03-06 03:36:47.865: VERBOSE/InputDevice(2486): ID[0]=0(0) Dn (0=>1) 03-06 03:36:47.865: INFO/Powe…

继承和多态(2)(多态部分)

提前讲的重要知识点 一个类在没有父类的情况下默认有一个父类为Object类。 而当在有父类情况下,如果你那父类没有父类,则其父类的父类默认为object类,所以即使一个类有父类,其内部还是有object类。 object类都是隐藏起来的&…

[蓝桥杯 2023 省 A] 填空问题--幸运数

[蓝桥杯 2023 省 A] 填空问题 题目描述 A. 幸运数 小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 2314 2314 是一个幸运数字,因为它有 4 4 4 个数位,并…

LangGraph 入门与实战

原文:LangGraph 入门与实战 - 知乎 大家好,我是雨飞。LangGraph 是在 LangChain 基础上的一个库,是 LangChain 的 LangChain Expression Language (LCEL)的扩展。能够利用有向无环图的方式,去协调多个LLM或…

【周总结】

周总结 完成项目混合版时区改造 完成相关jira问题的修改 完成老版本APP数据保存接口的兼容,手动赋值时区 2024/03/24 天气阴 一点不冷 1.Its time to go、Spring is coming! 2. Its a nice day that staying with friends in a peaceful …

CentOS DHCP服务器部署指南

title: DHCP 服务器部署以及配置 search: 2024-03-21 tags: “#DHCP 服务器部署以及配置” CentOS DHCP 服务器部署指南 背景 :因上了 Linux 的实验课程,在课程中,老师要求我们自己搭建 DHCP 服务器构建局域网,在构建的时候问题百…

2024年云服务器ECS价格表出炉——腾讯云

腾讯云服务器多少钱一年?61元一年起。2024年最新腾讯云服务器优惠价格表,腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

用Python做一个植物大战僵尸

植物大战僵尸是一个相对复杂的游戏,涉及到图形界面、动画、游戏逻辑等多个方面。用Python实现一个完整的植物大战僵尸游戏是一个大工程,但我们可以简化一些内容,做一个基础版本。 以下是一个简化版的植物大战僵尸游戏的Python实现思路&#…

成功案例|全基因组测序+GWAS联合分析揭示不同种族帕金森病的遗传同质性和异质性

发表期刊:npj Parkinson’s Disease 影响因子:8.7 测序方式:WGS 研究对象:人 1 研究背景 帕金森病(PD)是一种常见的与年龄相关的神经退行性疾病,其特征是运动迟缓、姿势不稳定、僵硬和静息…

Redis中的过期键删除策略

过期键删除策略 概述 数据库键的过期时间都保存在过期字典中,并且知道根据过期时间去判断一个键是否过期,剩下的问题是:如果一个键过期了,那么它什么时候会被删除呢? 这个问题有三种可能的答案,它们分别代表了三种不同的删除策…

【linux】进程的地址空间

1.代码看现象引入 #include<stdio.h>#include<unistd.h>#include<string.h> #include<stdlib.h>int val100;int main (){ printf("i am father,pid:%d,ppid:%d,val:%d&#xff0c;&val:%p\n",getpid(),getppid(),val,&val);size_t…

vue2 和 vue3 配置路由有什么区别

vue2 和 vue3 配置路由有什么区别 初始化路由器实例&#xff1a;注入到应用中&#xff1a;动态路由参数和捕获所有路由&#xff1a;编程式导航 API&#xff1a;异步加载组件&#xff1a; vue2 如何 使用路由 第一步&#xff1a;安装 vue-router第二步&#xff1a;创建路由组件第…

【k8s】kubeasz 3.6.3 + virtualbox 搭建本地虚拟机openeuler 22.03 三节点集群 离线方案

kubeasz项目源码地址 GitHub - easzlab/kubeasz: 使用Ansible脚本安装K8S集群&#xff0c;介绍组件交互原理&#xff0c;方便直接&#xff0c;不受国内网络环境影响 拉取代码&#xff0c;并切换到最近发布的分支 git clone https://github.com/easzlab/kubeasz cd kubeasz gi…

<Linux> 模拟实现文件流 - 简易版

目录 1. FILE 结构设计 2、函数使用及分析 3、文件打开 fopen 4. 缓冲区刷新fflush 5. 数据写入fwrite 6. 文件关闭 fclose 7. 测试 8. 小结 1. FILE 结构设计 在设计 FILE 结构体前&#xff0c;首先要清楚 FILE 中有自己的缓冲区及冲刷方式 缓冲区的大小和刷新方式因…

JVM监控工具

JVM监控工具 文章目录 JVM监控工具jpsjmapjmap -histo 进程idjmap -heap 进程id (查看堆信息)jmap -dump:formatb,filefilename.hprof 进程id (将堆当前时刻快照信息dump到文件中) JSTACKjstack 查看死锁信息jstack找出占用cpu最高的线程堆栈信息 jinfo查看jvm参数查看java系统…

Perfetto Trace抓取

1. Perfetto简介 Perfetto 是一个用于 Android 系统的性能跟踪工具&#xff0c;可以帮助开发者分析系统性能和调试问题。 Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目。 在低于Android R的版本上…