首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何有效地填充时间序列?

如何有效地填充时间序列?
EN

Stack Overflow用户
提问于 2019-05-12 16:38:31
回答 1查看 232关注 0票数 6

我的一般问题是,我有一个数据格式,其中列对应于特性值。在dataframe中也有一个日期列。每个功能列都可能缺少NaN值。我想用一些填充逻辑填充列,例如"fill_mean“或”填充零“。

但是,我不想仅仅将填充逻辑应用于整个列,因为如果前面的值之一是NaN,我不希望这个特定的NaN的平均值被后来的平均值所污染,因为模型应该不了解这个平均值。本质上,这是一个常见的问题,就是不向您的模型泄漏关于未来的信息--特别是在试图填充我的时间序列时。

无论如何,我已经将我的问题简化为几行代码。这是我对上述一般问题的简化尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#assume ts_values is a time series where the first value in the list is the oldest value and the last value in the list is the most recent.
ts_values = [17.0, np.NaN, 12.0, np.NaN, 18.0]
nan_inds = np.argwhere(np.isnan(ts_values))
for nan_ind in nan_inds:
    nan_ind_value = nan_ind[0]
    ts_values[nan_ind_value] = np.mean(ts_values[0:nan_ind_value])

以上脚本的输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[17.0, 17.0, 12.0, 15.333333333333334, 18.0]

这正是我所期望的。

我唯一的问题是,相对于数据集中的NaNs数,它将是线性时间。在不迭代nan索引值的情况下,是否有一种在常量或日志时间内这样做的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-12 16:44:24

如果您希望将nan值替换为熊猫系列s上的滚动平均值(完整窗口),请从WeNYoBen中注意到,这不会在填充期间继续滚动均值计算。(所以你的15.3变成了12.0)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s.fillna(s.expanding(1).mean())

如果希望滚动意味着在nans被填充时进行更新,这个就地的numba解决方案可能会有所帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import numba
from numba import jit


@jit(nopython=True)
def rolling_fill(a): 
    for i, e in enumerate(a):
        if np.isnan(e):
            a[i] = np.mean(a[:i])

ts_values = np.array([17.0, np.NaN, 12.0, np.NaN, 18.0])
rolling_fill(ts_values)
print(ts_values)

这给

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[17.         17.         12.         15.33333333 18.        ]

您也许可以通过保留一个求和,而不是每次调用.mean来改进这一点。

时间复杂度

这不是logconstant时间,因为您最多必须从长度为O(n)n数组中插入缺失项--但应该进行大量优化(通过避免本机python中的迭代),而且理论上不能做得更好,但上述较低级别的实现将大大加快速度。

编辑:我一开始就误读了,以为你在问插值

你想要interpolate的系列,熊猫直接支持这一点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s = pd.Series([0, 1, np.nan, 5])
>>> s
0    0.0
1    1.0
2    NaN
3    5.0
dtype: float64
>>> s.interpolate()
0    0.0
1    1.0
2    3.0
3    5.0
dtype: float64

或者,如果您不想使用pandas,因为您的示例是一个ndarray,那么相应地使用numpy.interp

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56104615

复制
相关文章
时间序列预测和缺失值填充联合建模方法
今天给大家介绍一篇康奈尔大学和IBM研究院上周法发布的一篇时间序列相关工作,将时间序列预测任务和缺失值填充任务进行联合建模。通过对时间序列预测和缺失值填充这两个任务的整体建模和端到端训练,实现了一个模型同时解决两个任务,并提升两个任务效果的目标。
圆圆的算法笔记
2023/08/17
5990
时间序列预测和缺失值填充联合建模方法
lstm多变量时间序列预测(时间序列如何预测)
Now, we are familiar with statistical modelling on time series, but machine learning is all the rage right now, so it is essential to be familiar with some machine learning models as well. We shall start with the most popular model in time series domain − Long Short-term Memory model.
全栈程序员站长
2022/08/01
2.2K0
lstm多变量时间序列预测(时间序列如何预测)
GNN如何建模时间序列?
时间序列是用于记录动态系统测量结果的主要数据类型,并由物理传感器和在线过程(虚拟传感器)大量生成。因此,时间序列分析对于发掘可用数据中隐含的信息丰富性至关重要。随着图神经网络(GNNs)的最近进步,基于GNN的时间序列分析方法的研究有所增加。这些方法可以明确地模拟时间和变量之间的关系,这是传统的和其他基于深度神经网络的方法难以做到的。在这次综述中,我们对图神经网络进行了全面的时间序列分析(GNN4TS),包括四个基本维度:预测、分类、异常检测和插补。我们的目标是指导设计师和实践者理解,构建应用,并推进GNN4TS的研究。首先,我们提供了一个全面的任务导向的GNN4TS分类。然后,我们介绍并讨论代表性的研究工作,最后讨论GNN4TS的主流应用。关于潜在的未来研究方向的全面讨论完整了这次综述。这次研查是首次汇集了大量关于基于GNN的时间序列研究的知识,突出了图神经网络用于时间序列分析的基础、实际应用和机会。
Houye
2023/09/04
7130
GNN如何建模时间序列?
时间序列 | pandas时间序列基础
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学、经济学、生态学、神经科学、物理学等。在多个时间点观察或测量到的任何事物都可以形成一段时间序列。很多时间序列是固定频率的,也就是说,数据点是根据某种规律定期出现的(比如每15秒、每5分钟、每月出现一次)。时间序列也可以是不定期的,没有固定的时间单位或单位之间的偏移量。时间序列数据的意义取决于具体的应用场景,主要有以下几种:
数据STUDIO
2021/06/24
1.5K0
自定义序列类_自定义序列填充
Sized中实现__len__(可返回长度)魔法函数,Iterable中实现__iter__(可遍历)魔法函数,Container中实现__contains__(可使用if in方法)魔法函数
全栈程序员站长
2022/09/20
5420
自定义序列类_自定义序列填充
Mybatis-Plus时间自动填充
优秀的Mybatis-plus又来了,这次将体验创建时间,更新时间的自动填充功能,
乐心湖
2020/07/31
1.3K0
Mybatis-Plus时间自动填充
时间序列
一、获取当前时刻的时间 1.返回当前时刻的日期和时间 from datetime import datetime #返回当前时刻的日期和时间 datetime.now() #datetime.datetime(2020, 5, 16, 14, 13, 37, 179143),日期、时间一起显示 # 年 月 日 时 分 秒 微妙 可通过属性取出来每个部分 2.返回当前时刻的年、月、日 #返回当前时刻的年 datetime.now().ye
见贤思齊
2020/08/05
2K0
时间序列入门时间序列入门
时间序列(英语:time series)是一组按照时间发生先后顺序进行排列的数据点序列。通常一组时间序列的时间间隔为一恒定值(如1秒,5分钟,12小时,7天,1年),因此时间序列可以作为离散时间数据进行分析处理
致Great
2021/12/10
1.3K0
python函数——序列预处理pad_sequences()序列填充
为了实现的简便,keras只能接受长度相同的序列输入。因此如果目前序列长度参差不齐,这时需要使用pad_sequences()。该函数是将序列转化为经过填充以后的一个长度相同的新序列新序列。
莫斯
2020/09/10
3.2K0
ThinkPHP中自动填充日期时间
如果是用自己的函数那就要用callback,第二个参数默认当前模块能调用的方法;用function的话第二个参数为函数名,而这个函数可以是PHP自带的,也可以是你自己写的
PM吃瓜
2019/08/13
1.4K0
如何最有效地编写SQL
解决数据库级(SQL)工作上的问题,应该采用的是SET方法(整体的)而不是过程式的方法。下面来看看作者为什么这么说。 编写有效的SQL查询是企业软件世界中最大的难题之一。 每个公司在数据库开发项目中所面临的最根本的问题,在于开发环境中实现的性能不能在生产环境中实现。一般来说,存在性能损失是因为生产环境中的数据量要大得多。 这些问题(运行缓慢的数据库操作)可能有各种各样的原因。本文将解释如何在编写查询时进行思考,如何思考是最基本的问题,也是解决此类问题的起点。 观察发现SQL开发人员常使用过程方法编写查询。事
CSDN技术头条
2018/02/13
1K0
如何最有效地编写SQL
如何在Redis中保存时间序列数据?
我们现在做互联网产品的时候,都有这么一个需求:记录用户在网站或者App上的点击行为数据,来分析用户行为。这里的数据一般包括用户ID、行为类型(例如浏览、登录、下单等)、行为发生的时间戳:
玖柒的小窝
2021/10/25
1.5K0
如何在Redis中保存时间序列数据?
独家 | 如何用XGBoost做时间序列预测?
本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型评估,并给出了可操作的代码示例。
数据派THU
2020/09/04
4.3K0
如何有效地做算法题
这篇文章最早发在我团队的文档中。我的团队鼓励每个同学都在业余时间多做算法题,特别是新人。个人认为在编程能力的提升上比做 side project 更有用,对职业发展也是如此。当然出于兴趣做的 side project 另当别论。转到这里,希望对各位读者有用。
芋道源码
2019/05/17
7140
【时间序列】时间序列的智能异常检测方案
时间序列异常检测是学术界和工业界一直研究的热点和难点问题。比如腾讯内部开源的Metis项目,其实现思路是基于统计判决、无监督和有监督学习对时序数据进行联合检测。通过统计判决、无监督算法进行首层判决,输出疑似异常,其次进行有监督模型判决,得到最终检测结果。检测模型是经大量样本训练生成,可根据样本持续训练更新。Metis实现的时间序列异常检测学件在织云企业版本中已覆盖 20w+ 服务器,承载了 240w+ 业务指标的异常检测。经过了海量监控数据打磨,该学件在异常检测和运维监控领域具有广泛的应用性。
roganhuang
2020/07/29
22.9K2
【时间序列】时间序列的智能异常检测方案
时间序列(一)
Python代码如下: # -*- coding: utf-8 -*- """ Created on Fri Jan 13 11:20:10 2017 @author: DaiPuWei """ ''' 时间序列简单平移法:以预测12月份的销售收入为例 ''' import math def Forecast(profit,N,month): ''' 预测函数:profit为销售收入数据 N为预测周期,month为需要预测的月份 '''
AI那点小事
2020/04/20
5420
时间序列(一)
时间序列(三)
(时间序列模型中的ARMA模型由于原理对我来说理解有些困难,加之最近的北美数学建模大赛即将开始,自己为了顾全大局,多看掌握几个重要模型,所以ARMA模型的Python代码暂时不更新,等比赛过后有时间再更新!!!!)
AI那点小事
2020/04/20
6550
时间序列(三)
点击加载更多

相似问题

如何填充OrientDB时间序列?

12

填充时间序列数据?

06

Python填充时间序列

15

如何有效地采样时间序列流数据

11

如何有效地利用日内时间过滤时间序列的timeIndices?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文