标签: missing-data

MATLAB:使用插值替换缺失值(NaN)

我有单元格数组,每个单元格包含一个值序列作为行向量.序列包含一些由表示的缺失值NaN.

我想用某种插值方法替换所有的NaN,我怎样才能在MATLAB中做到这一点?我也对如何处理这些缺失值的其他建议持开放态度.

请考虑此示例数据来说明问题:

seq = {randn(1,10); randn(1,7); randn(1,8)};
for i=1:numel(seq)
    %# simulate some missing values
    ind = rand( size(seq{i}) ) < 0.2;
    seq{i}(ind) = nan;
end
Run Code Online (Sandbox Code Playgroud)

结果序列:

seq{1}
ans =
     -0.50782     -0.32058          NaN      -3.0292     -0.45701       1.2424          NaN      0.93373          NaN    -0.029006
seq{2}
ans =
      0.18245      -1.5651    -0.084539       1.6039     0.098348     0.041374     -0.73417
seq{3}
ans =
          NaN          NaN      0.42639     -0.37281     -0.23645       2.0237      -2.2584       2.2294
Run Code Online (Sandbox Code Playgroud)

编辑:

根据回复,我认为存在一个混乱:显然我不使用随机数据,上面显示的代码只是数据结构的一个例子.

实际数据是某种形式的处理信号.问题是在分析过程中,如果序列包含缺失值,我的解决方案将会失败,因此需要进行过滤/插值(我已经考虑过使用每个序列的平均值来填充空白,但我希望有更强大的功能)

matlab interpolation nan missing-data

7
推荐指数
2
解决办法
3万
查看次数

丢弃R中的单个属性

在R中,该na.omit()函数可用于丢弃包含NA值的data.frame中的条目.作为副作用,如果确实丢弃了行,则该函数向结果添加属性"省略",该结果包含被丢弃的row.names的向量.

我想丢弃这个'省略'属性,因为我不需要它.最好的方法是什么?

r missing-data

7
推荐指数
1
解决办法
2051
查看次数

Predict.glm不会预测响应中的缺失值

出于某种原因,当我指定glms(并且lm也是如此)时,R不会预测数据的缺失值.这是一个例子:

y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = glm(y~x, family=binomial(link="logit"))
p = predict(m,na.action=na.pass)
length(p)

y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = lm(y~x)
p = predict(m)
length(p)
Run Code Online (Sandbox Code Playgroud)

p的长度应该是100,但是它的50.奇怪的是,我在同一个脚本中有其他预测可以预测丢失的数据.

编辑:事实证明,那些其他预测是非常错误的 - 我正在做imputed.value = rnorm(N,mean.from.predict,var.of.prediction.interval).这回收了来自lm预测或glm预测函数的均值和sd向量length(predict)<N,这与我所寻求的完全不同.

所以我的问题是我的示例代码什么阻止glm和lm预测缺失值?

谢谢!

r prediction missing-data lm glm

7
推荐指数
2
解决办法
1万
查看次数

识别序列中的缺失值/执行两个列表之间的不对称差异

使用R,我想有效地识别序列中缺少哪些值.我已经写下了我如何做的下面的例子.肯定有更好的办法.有人可以帮忙吗?

data.list=c(1,2,4,5,7,8,9)

full.list=seq(from = 1, to = 10, by =1)

output <- c()
for(i in 1:length(full.list)){
    holder1 <- as.numeric(any(data.list == i))
    output[i] <- holder1
}

which(output == 0)
Run Code Online (Sandbox Code Playgroud)

r missing-data

7
推荐指数
1
解决办法
3313
查看次数

根据列中的其他值填写NA值

我有一个data.table,有大量的缺失值.我想通过在data.table中的可用值中添加或减去值来填充这些值.特别要考虑这些数据:

> test = data.table(id=c("A","A","A","A","A","B","B","B","B","B"), x=c(NA,NA,0,NA,NA,NA,NA,0,NA,NA))
> test
    id  x
 1:  A NA
 2:  A NA
 3:  A  0
 4:  A NA
 5:  A NA
 6:  B NA
 7:  B NA
 8:  B  0
 9:  B NA
10:  B NA
Run Code Online (Sandbox Code Playgroud)

我需要一个操作,将其转换为:

    id  x
1:  A -2
2:  A -1
3:  A  0
4:  A  1
5:  A  2
6:  B -2
7:  B -1
8:  B  0
9:  B  1
10: B  2
Run Code Online (Sandbox Code Playgroud)

基本上是na.locf的一个版本,它增加最后一个值而不是重复它.

r time-series missing-data data.table

7
推荐指数
1
解决办法
189
查看次数

使用数据框中缺少的值创建ts时间系列

我有一个数据框,其中包含每月数据的时间序列,其中包含一些缺失值.

dates <- seq(
  as.Date("2010-01-01"), as.Date("2017-12-01"), "1 month"
)
n_dates <- length(dates)
dates <- dates[runif(n_dates) < 0.5]
time_data <- data.frame(
  date = dates,
  value = rnorm(length(dates))
)
##          date      value
## 1  2010-02-01  1.3625419
## 2  2010-06-01  0.1512481
## etc.
Run Code Online (Sandbox Code Playgroud)

为了能够利用时间序列预测功能,例如forecast,我想将其转换为ts对象.

这样做的愚蠢方法是在整个时间段内创建一组常规的月度日期,然后将联接返回到原始数据.

library(dplyr)
first_date <- min(time_data$date)
last_date <- max(time_data$date)
full_dates <- data.frame(
  date = seq(first_date, last_date, "1 month")
)
extended_time_data <- left_join(full_dates, time_data, by = "date")
##          date      value
## 1  2010-02-01  1.3625419
## 2  2010-03-01 …
Run Code Online (Sandbox Code Playgroud)

r time-series missing-data

7
推荐指数
2
解决办法
851
查看次数

sklearn.impute.IterativeImputer 的实现

考虑data下面包含一些 nan :

Column-1    Column-2    Column-3    Column-4    Column-5
0   NaN 15.0    63.0    8.0 40.0
1   60.0    51.0    NaN 54.0    31.0
2   15.0    17.0    55.0    80.0    NaN
3   54.0    43.0    70.0    16.0    73.0
4   94.0    31.0    94.0    29.0    53.0
5   99.0    52.0    77.0    91.0    58.0
6   84.0    19.0    36.0    NaN 97.0
7   41.0    91.0    62.0    67.0    68.0
8   44.0    38.0    27.0    53.0    37.0
9   58.0    NaN 63.0    57.0    28.0
10  66.0    68.0    89.0    36.0    47.0
11  7.0 81.0    5.0 …
Run Code Online (Sandbox Code Playgroud)

python missing-data dataframe scikit-learn imputation

7
推荐指数
2
解决办法
5824
查看次数

Pandas .map 字典默认缺失值

pandas.Series.map 的Pandas 文档 说:

“当arg是字典时,Series中不在字典中的值(作为键)将转换为NaN。但是,如果字典是定义missing的dict子类(即提供默认值的方法),则此默认值使用而不是 NaN。”

你实际上是如何做到的?我无法让它工作..

class MyDict(collections.UserDict):
    
  def __missing__(self):
    return "_Unknown"

d = MyDict({k: v for k, v in my_list})

df.col1.map(d)

Run Code Online (Sandbox Code Playgroud)

python dictionary missing-data pandas

7
推荐指数
1
解决办法
3497
查看次数

处理 Pandas read_csv 中的缺失数据

在将 CSV 数据导入到 Pandas DataFrame 时,我还没有找到令人满意的解决方案来解决丢失数据的问题。

我有数据集,我事先不知道列或数据类型是什么。我希望大熊猫在推断如何读取数据方面做得更好。

我还没有发现任何na_values=...真正有帮助的组合。

考虑以下 csv 文件:

no_holes.csv

letter,number
a,1
b,2
c,3
d,4
Run Code Online (Sandbox Code Playgroud)

with_holes.csv

letter,number
a,1
,2
b, 
,4
Run Code Online (Sandbox Code Playgroud)

empty_column.csv

letters,numbers
,1
,2
,3
,4
Run Code Online (Sandbox Code Playgroud)

with_NA.csv

letter,number
a,1
b,NA
NA,3
d,4
Run Code Online (Sandbox Code Playgroud)

这是我将它们读入 DataFrame 时发生的情况(下面的代码):

**no holes**
  letter  number
0      a       1
1      b       2
2      c       3
3      d       4
letter    object
number     int64
dtype: object

**with holes**
  letter number
0      a      1
1    NaN      2
2      b       
3    NaN      4
letter …
Run Code Online (Sandbox Code Playgroud)

python nan missing-data pandas na

6
推荐指数
1
解决办法
6883
查看次数

在 Pandas 数据框中用 NaN 替换字符串值 - Python

我必须更换价值吗?使用 NaN 以便您可以调用 .isnull () 方法。我找到了几种解决方案,但总是返回一些错误。认为:

data = pd.DataFrame([[1,?,5],[?,?,4],[?,32.1,1]])
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

pd.data.replace('?', np.nan)
Run Code Online (Sandbox Code Playgroud)

我有:

     0     1  2
0  1.0   NaN  5
1  NaN   NaN  4
2  NaN  32.1  1    
Run Code Online (Sandbox Code Playgroud)

但 data.isnull() 返回:

       0      1      2
0  False  False  False
1  False  False  False
2  False  False  False
Run Code Online (Sandbox Code Playgroud)

为什么?

missing-data dataframe pandas

6
推荐指数
2
解决办法
2万
查看次数