【问题标题】:How to introduce missing values in time series data如何在时间序列数据中引入缺失值
【发布时间】:2021-02-28 17:38:25
【问题描述】:

我是 python 新手,也是这个网站的新手。我和我的同事正在研究时间序列数据集。我们希望在数据集中引入一些缺失值,然后使用一些技术来填充缺失值,看看这些技术在数据插补任务中的表现如何。我们目前面临的挑战是如何以连续的方式而不是随机的方式将缺失值引入数据集。例如,我们想用 NaN 替换一段时间内的数据,例如连续 3 天。如果有人能指出我们如何完成这项工作的正确方向,我将不胜感激。我们正在使用 python。

Here is my sample data

【问题讨论】:

  • 为了让我的问题更清楚,这里是我目前正在处理的数据样本的链接。 documentcloud.adobe.com/link/… 。我希望能够连续用 NaN 替换值,即连续 3 小时的值应该用 NAN 替换

标签: python dataframe time time-series nan


【解决方案1】:

请参阅下面的set_missing_data 函数:

import numpy as np
np.set_printoptions(precision=3, linewidth=1000)

def set_missing_data(data, missing_locations, missing_length):
    for i in missing_locations:
        data[i:i+missing_length] = np.nan


np.random.seed(0)
n_data_points = np.random.randint(40, 50)
data = np.random.normal(size=[n_data_points])
n_missing = np.random.randint(3, 6)
missing_length = 3
missing_locations = np.random.choice(
    n_data_points - missing_length,
    size=n_missing,
    replace=False
)
print(data)
set_missing_data(data, missing_locations, missing_length)
print(data)

控制台输出:

[ 0.118  0.114  0.37   1.041 -1.517 -0.866 -0.055 -0.107  1.365 -0.098 -2.426 -0.453 -0.471  0.973 -1.278  1.437 -0.078  1.09   0.097  1.419  1.168  0.947  1.085  2.382 -0.406  0.266 -1.356 -0.114 -0.844  0.706 -0.399 -0.827 -0.416 -0.525  0.813 -0.229  2.162 -0.957  0.067  0.206 -0.457 -1.06   0.615  1.43  -0.212]
[ 0.118    nan    nan    nan -1.517 -0.866 -0.055 -0.107    nan    nan    nan -0.453 -0.471  0.973 -1.278  1.437 -0.078  1.09   0.097    nan    nan    nan  1.085  2.382 -0.406  0.266 -1.356 -0.114 -0.844  0.706 -0.399 -0.827 -0.416 -0.525  0.813 -0.229  2.162 -0.957  0.067  0.206 -0.457 -1.06   0.615  1.43  -0.212]

【讨论】:

  • 嗨,杰克,非常感谢您的帮助。我正在尝试包含我的示例数据集,以帮助您准确理解我的意思。
  • 嗨,Jake,我的数据样本可以在这里找到:documentcloud.adobe.com/link/…
  • 您的 Python 程序中的数据格式是什么?一个numpy数组? CSV 文件?纯文本文件?还是您只有 PDF 格式的数据?
  • 数据在 csv 文件中
【解决方案2】:

有一种填充NaN的方法

dataframe['name_of_column'].fillna('value')

【讨论】:

  • 非常感谢 Alona 回答我的问题。我很欣赏这一点。在这种情况下,我并没有尝试填充缺失值,而是尝试将一些缺失值引入我的时间序列数据集。例如,我的数据集包含 4 个月每小时记录的数据,我希望用 NAN 值替换连续 3 天。我怎样才能做到这一点
  • 亲爱的@lilfavour,您必须编辑您的主要帖子并添加您的数据示例。然后我们就能给你建议。还有你试图解决问题的代码和平。欢迎使用 Stackoverflow。
  • 好的,我会这样做的。谢谢
猜你喜欢
  • 2016-11-21
  • 2020-04-12
  • 2019-09-11
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多