Pandas 时间序列重采样和插值一起

2023-11-21

我有带时间戳的传感器数据。由于技术细节的原因,我从传感器获取数据大约间隔一分钟。数据可能如下所示:

   tstamp               val
0  2016-09-01 00:00:00  57
1  2016-09-01 00:01:00  57
2  2016-09-01 00:02:23  57
3  2016-09-01 00:03:04  57
4  2016-09-01 00:03:58  58
5  2016-09-01 00:05:00  60

现在,本质上,如果我在准确的时刻获得所有数据,我会非常高兴,但我没有。保存分布并获取每分钟数据的唯一方法是插值。例如,行索引 1 和 2 之间有 83 秒,获取精确分钟值的自然方法是在两行数据之间进行插值(在本例中为 57,但事实并非如此)到处)。

现在,我的方法是执行以下操作:

date = pd.to_datetime(df['measurement_tstamp'].iloc[0].date())
ts_d = df['measurement_tstamp'].dt.hour * 60 * 60 +\
       df['measurement_tstamp'].dt.minute * 60 +\
       df['measurement_tstamp'].dt.second
ts_r = np.arange(0, 24*60*60, 60)
data = scipy.interpolate.interp1d(x=ts_d, y=df['speed'].values)(ts_r)
req = pd.Series(data, index=pd.to_timedelta(ts_r, unit='s'))
req.index = date + req.index

但这对我来说感觉相当漫长和漫长。有一些出色的 pandas 方法可以进行重采样、舍入等。我一整天都在阅读它们,但事实证明没有什么可以按照我想要的方式进行插值。resample工作原理就像groupby并对落在一起的时间点进行平均。fillna进行插值,但不在之后resample已经通过平均改变了数据。

我是否遗漏了什么,或者我的方法是最好的吗?


为简单起见,假设我按天和传感器对数据进行分组,因此一次仅对一个传感器的 24 小时周期进行插值。


d = df.set_index('tstamp')
t = d.index
r = pd.date_range(t.min().date(), periods=24*60, freq='T')

d.reindex(t.union(r)).interpolate('index').ix[r]

enter image description here


Note, periods=24*60适用于日常数据,而不适用于问题中提供的样本。对于该样本,periods=6将工作。

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

Pandas 时间序列重采样和插值一起 的相关文章

随机推荐

  • 何时使用 MySQLdb 关闭游标

    我正在构建一个 WSGI Web 应用程序 并且有一个 MySQL 数据库 我正在使用 MySQLdb 它提供用于执行语句和获取结果的游标 获取和关闭游标的标准做法是什么 特别是 我的光标应该持续多长时间 我应该为每笔交易获取一个新的游标吗
  • XNA Alpha 混合使纹理的一部分透明

    我想做的是在 XNA 中使用 alpha 混合来使绘制的纹理的一部分透明 例如 我将屏幕清除为某种颜色 比如说蓝色 然后我画一个红色的纹理 最后 我绘制一个纹理 该纹理只是从中心完全透明到边缘完全黑色的径向渐变 我想要的是之前绘制的红色纹理
  • 如何在 iOS 上使用 Google Drive API 处理电子表格

    我正在尝试编写一个 iPhone 应用程序 将其数据库存储在 Google 电子表格中 我按照 DrEdit 的例子here它使用 Drive API 将纯文本文件读取 写入 Google Drive 我正在尝试修改示例应用程序以使用电子表
  • 编程理论:解决迷宫

    解决迷宫问题有哪些可能的方法 我有两个想法 但我认为它们不是很优雅 基地情况 我们有一个矩阵 这个矩阵中的元素以一种代表迷宫的方式排序 有一个入口 一个出口 我的第一个想法是派一个机器人穿过迷宫 跟随一侧 直到走出迷宫 我认为这是一个非常缓
  • 除非授予权限后重新启动应用程序,否则无法写入外部存储

    即使在运行时授予 WRITE EXTERNAL STORAGE 之后 应用程序也无法在 Android 6 0 上写入外部存储 我正在模拟器上进行测试 除非应用程序被终止并重新启动 AndroidManifest xml 中的片段
  • 在 Kotlin 中,当枚举类实现接口时,如何解决继承声明冲突?

    我定义了一个实现 Neo4j 的枚举类RelationshipType enum class MyRelationshipType RelationshipType 我收到以下错误 Inherited platform declaratio
  • Jenkins Pipeline emailext $class 参数用于recipientProviders

    我一直在尝试理解下面的管道常规代码 emailext subject STARTED Job env JOB NAME env BUILD NUMBER body p STARTED Job env JOB NAME env BUILD N
  • POST 多个参数到 WCF 服务

    我想了解 WCF 所以我的问题可能很愚蠢 我相信我对 GET 操作已经有了深入的了解 我现在正在从事一些 POST 操作 我的问题是 我可以使用 WebInvoke 编写接受多个参数的 WCF 服务操作吗 或者 当我发布数据时 它只会接受单
  • 获取 Collection 对象上项目的键

    环境是我推入 Collection 的成员是无名的 无法识别的 为了避免糟糕的抽象 请不要惊慌 成员实际上是其他 Collection 实例 为了能够进行快速搜索 我为每个新成员创建一个有意义的哈希名称 并将其作为 最顶层 集合的 Add
  • PHP函数生成v4 UUID

    因此 我一直在进行一些挖掘 并尝试拼凑出一个在 PHP 中生成有效 v4 UUID 的函数 这是我能到达的最接近的一次 我对十六进制 十进制 二进制 PHP 位运算符等方面的知识几乎不存在 此函数生成一个有效的 v4 UUID 直到一个区域
  • 如何高效地将三角矩阵存储在内存中?

    我想存储一个下三角矩阵在内存中 而不存储所有的零 我实现它的方法是分配空间i 1上的元素i扔 然而 我对 C 中的动态内存分配很陌生 我的第一次分配似乎出了问题 int main int i j int mat1 int dim scanf
  • PhpMyAdmin 无法在本地主机上运行

    Xampp版本 1 7 7 安装在外部硬盘上 操作系统 Windows 8 安装了 4 1 7 版本的 phpMyAdmin 并将 config inc php 从我的旧版本 phpmyadmin 复制到新版本 phpmyadmin 4 1
  • NVD3.js multiChart x 轴标签与多条线对齐,但不是与多个条形对齐

    这个问题涉及到NVD3 js multiChart x 轴标签与线对齐 但不与条形对齐 我正在使用 NVD3 jsmultiChart以显示多行 and 多个酒吧在图表中 一切工作正常 但 x 轴标签仅与线点对齐 而不与条形对齐 我想正确对
  • Spring 测试与安全:如何模拟身份验证?

    我试图弄清楚如何对我的控制器的 URL 是否得到正确保护进行单元测试 以防万一有人更改内容并意外删除安全设置 我的控制器方法如下所示 RequestMapping api v1 resource test Secured ROLE USER
  • SwiftUI 中 Stepper 的奇怪行为

    我想使用 onIncrement 和 onDecrement 在手动 非绑定 模式下使用步进视图 当我尝试实现下限和上限时 会出现奇怪的行为 例如 年龄值不低于 1 或高于 10 如果您尝试以下代码 则可以在其值已为 1 后按两次 它并没有
  • AWS ECS 私有和公共服务

    我有一个场景 我必须在AWS ECS上部署多个微服务 我想让服务能够通过每个微服务中开发的 API 相互通信 我想在 AWS ECS 上部署前端 该前端可以公开访问 并且还可以与部署在 AWS ECS 上的其他微服务进行通信 我怎样才能实现
  • Eclipse+FindBugs - 排除过滤器文件不起作用

    我使用 Windows 和 Eclipse 3 7 Classic 以及 ADT 插件进行 Android 开发 我刚刚安装了 FindBugs 它在自动生成的 R java 类中发现了一个错误 我想从 FindBugs 检查中排除此类 我
  • 预加载器不会忽略 websocket -pace js

    我在我的网站上添加了预加载器 该网站在 Rails 上使用 ruby 运行 看起来它工作得很好 但是由于 Pusher Websockets 预加载器不会结束 它一直在等待 我在页脚尝试了这个 但它不起作用 我怎么解决这个问题 我尝试了这个
  • 未解决的参考:库 - buildSrc

    我正在尝试切换到使用 Kotlin DSL 从对象 Kotlin 文件而不是 gradle 文件获取依赖项版本 当我进行 gradle 同步时 它无法解析引用 但我可以从 build gradle kts 单击文件 库 我没有对 build
  • Pandas 时间序列重采样和插值一起

    我有带时间戳的传感器数据 由于技术细节的原因 我从传感器获取数据大约间隔一分钟 数据可能如下所示 tstamp val 0 2016 09 01 00 00 00 57 1 2016 09 01 00 01 00 57 2 2016 09