标签: missing-data

使用函数duplicated()时,返回FALSE表示重复的NA值

只是想知道为什么重复行为与NAs一样:

> duplicated(c(NA,NA,NA,1,2,2))
[1] FALSE  TRUE  TRUE FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

事实上

> NA == NA
[1] NA
Run Code Online (Sandbox Code Playgroud)

有没有办法实现重复标记NAs为假,像这样?

> duplicated(c(NA,NA,NA,1,2,2))
[1] FALSE  FALSE  FALSE FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

comparison r duplicates missing-data

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

numpy:使用operator - 包含None的数组

我有一个数字列表,我把它放入一个numpy数组:

>>> import numpy as np
>>> v=np.array([10.0, 11.0])
Run Code Online (Sandbox Code Playgroud)

然后我想从数组中的每个值中减去一个数字.它可以像numpy数组一样完成:

>>> print v - 1.0
[  9.  10.]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的数据通常包含缺失值,表示为None.对于这种数据,我收到此错误:

>>> v=np.array([10.0, 11.0, None])
>>> print v - 1.0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'
Run Code Online (Sandbox Code Playgroud)

我想为上面的例子得到的是:

 [  9.  10.  None]
Run Code Online (Sandbox Code Playgroud)

我怎样才能以简单有效的方式实现它?

python numpy missing-data

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

R中多重估算数据集的多级回归模型(Amelia,zelig,lme4)

我试图在多重估算数据上运行一个多级模型(用Amelia创建); 样本基于群集样本,群组= 24,N = 150.

library("ZeligMultilevel")
ML.model.0 <- zelig(dv~1 + tag(1|group), model="ls.mixed",
data=a.out$imputations)
summary(ML.model.0)
Run Code Online (Sandbox Code Playgroud)

此代码生成以下错误代码:

Error in object[[1]]$result$call : 
$ operator not defined for this S4 class
Run Code Online (Sandbox Code Playgroud)

如果我运行OLS回归,它可以工作:

model.0 <- zelig(dv~1, model="ls", data=a.out$imputations)
m.0 <- coef(summary(model.0)) 
print(m.0, digits = 2)

      Value Std. Error t-stat  p-value
[1,]    45       0.34    130 2.6e-285
Run Code Online (Sandbox Code Playgroud)

我很高兴提供一个有效的例子.

require(Zelig)
require(Amelia)
require(ZeligMultilevel)

data(freetrade)
length(freetrade$country) #grouping variable

#Imputation of missing data

a.out <- amelia(freetrade, m=5, ts="year", cs="country")

# Models: (1) OLS; (2) multi-level 

model.0 <- zelig(polity~1, model="ls", …
Run Code Online (Sandbox Code Playgroud)

regression r missing-data multi-level r-zelig

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

查看Python Pandas相关矩阵条目的常见观察计数的快速方法

假设我有一个pandas.DataFramedf.df表示不同个体和索引轴的列表示时间,因此(i,j)条目是对时间段i的单独j观察,并且我们可以假设所有数据都是float可能具有NaN值的类型.

就我而言,我有大约14,000列和几百行.

pandas.corr 将给我回到14,000×14,000相关矩阵,它的时间性能对我的应用程序来说很好.

但我还想知道,对于每对个体(j_1,j_2),有多少非空观察进入相关计算,因此我可以隔离数据覆盖率较差的相关单元.

我能想出的最好成绩如下:

not_null_locations = pandas.notnull(df).values.astype(int)
common_obs = pandas.DataFrame(not_null_locations.T.dot(not_null_locations),
                              columns=df.columns, index=df.columns)
Run Code Online (Sandbox Code Playgroud)

内存占用和速度开始有点问题.

有没有更快的方法来获得共同观察pandas

python numpy missing-data pandas

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

在gnuplot中,如果"set datafile missing",如何忽略"nan"和"-nan"?

gnuplot命令set datafile missing "nan"告诉gnuplot忽略nan数据文件中的数据值.

如何忽略nan-nan?我在gnuplot中尝试了以下内容,但是第一个语句的效果被下一个覆盖了.

gnuplot> set datafile missing "-nan"
gnuplot> set datafile missing "nan"
Run Code Online (Sandbox Code Playgroud)

有可能某些人grep -v nan在gnuplot命令中嵌入一​​个,甚至某种正则表达式来排除任何可以想象的非数值数据吗?

gnuplot nan infinity missing-data

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

在R中线性地输入缺失值

我有一个缺少值的数据框:

X   Y   Z
54  57  57
100 58  58
NA  NA  NA
NA  NA  NA
NA  NA  NA
60  62  56
NA  NA  NA
NA  NA  NA
69  62  62
Run Code Online (Sandbox Code Playgroud)

我想从已知值线性地估算NA值,以便数据框看起来:

X   Y    Z
54  57  57
100 58  58
90  59  57.5
80  60  57
70  61  56.5
60  62  56
63  62  58
66  62  60
69  60  62
Run Code Online (Sandbox Code Playgroud)

谢谢

r missing-data

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

NA中的聚类函数(kmeans,pam,clara).如何将群集与原始数据相关联?

我需要集群一些数据,我想kmeans,pamclara与R.

问题是我的数据位于数据框的一列中,并包含NA.

我曾经na.omit()得到我的集群.但是,我如何将它们与原始数据相关联?函数返回没有NA的整数向量,并且它们不保留有关原始位置的任何信息.

有没有一种聪明的方法将聚类与数据框中的原始观察结果联系起来?(或者在存在NA时智能地执行聚类的方法?)

谢谢

r cluster-analysis k-means missing-data na

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

通过从熊猫数据框中的非缺失值中随机选择来填充缺失数据

我有一个熊猫数据框,其中有几个缺失值。我注意到非缺失值彼此接近。因此,我想通过随机选择非缺失值来估算缺失值。

例如:

import pandas as pd
import random
import numpy as np

foo = pd.DataFrame({'A': [2, 3, np.nan, 5, np.nan], 'B':[np.nan, 4, 2, np.nan, 5]})
foo
    A   B
0   2 NaN
1   3   4
2 NaN   2   
3   5 NaN
4 NaN   5
Run Code Online (Sandbox Code Playgroud)

我想比如foo['A'][2]=2foo['A'][5]=3 我的熊猫的形状数据框是(6940,154)。我尝试这个

foo['A'] = foo['A'].fillna(random.choice(foo['A'].values.tolist()))
Run Code Online (Sandbox Code Playgroud)

但它不起作用。你能帮我实现吗?最好的祝福。

python missing-data pandas

6
推荐指数
3
解决办法
5610
查看次数

pandas.eval,带有缺少数据的布尔序列

描述

pandas.eval在一个缺少数据的布尔系列上使用.

为此,我使用索引器标记非空值,并.loc仅应用于.eval具有非缺失数据的行.

使用表达式应用逻辑非运算符~boolnot(bool)返回-1或-2.

我明白这是因为我的布尔系列由于缺少值而被转换为对象类型,但我想知道:

  • 为什么-1和-2输出?
  • .eval在具有缺失数据的布尔序列上使用的正确方法是什么?

这是一个使用pandas 0.20.3的可重现的例子.

df = pd.DataFrame({'bool': [True, False, None]})
    bool
0   True
1  False
2   None

indexer = ~pd.isnull(df['bool'])
0     True
1     True
2    False
Name: bool, dtype: bool

df.loc[indexer].eval('~bool')
0    -2
1    -1
Name: bool, dtype: object
Run Code Online (Sandbox Code Playgroud)

python boolean eval missing-data pandas

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

计算第一个和最后一个出现的数字之间的 NA

这是我的玩具数据集

df <- tribble(
  ~x, ~y, ~z,
  7,   NA, 4,
  8,   2,  NA,
  NA,  NA, NA,
  NA,  4,  6)
Run Code Online (Sandbox Code Playgroud)

我想NA为每个变量获取一个数据框,其中每个变量只在每列中第一次和最后一次出现的数字NA之间以及第一次出现的数字和最后一行之间的 s数之间。因此,对于此示例,所需的解决方案是

desired_df <- tribble(~vars, ~na_count_between_1st_last_num, ~na_count_between_1st_num_last_row,
                       "x",     0,                              2,
                       "y",     1,                              1,
                       "z",     2,                              2)
Run Code Online (Sandbox Code Playgroud)

如何获得所需的输出?

r missing-data dataframe na dplyr

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