标签: imputation

如何在R数据帧中用零替换NA值?

我有一个数据框,有些列有NA值.

如何NA用零替换这些值?

r missing-data dataframe na imputation

673
推荐指数
18
解决办法
112万
查看次数

熊猫:在每组中按平均值填充缺失值

这应该是直截了当的,但我发现的最接近的是这篇文章: 熊猫:填写组内的缺失值,我仍然无法解决我的问题....

假设我有以下数据帧

df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3], 'name': ['A','A', 'B','B','B','B', 'C','C','C']})

  name  value
0    A      1
1    A    NaN
2    B    NaN
3    B      2
4    B      3
5    B      1
6    C      3
7    C    NaN
8    C      3
Run Code Online (Sandbox Code Playgroud)

并且我想在每个"名称"组中填写"NaN",其中包含平均值

      name  value
0    A      1
1    A      1
2    B      2
3    B      2
4    B      3
5    B      1
6    C      3
7    C      3
8    C      3
Run Code Online (Sandbox Code Playgroud)

我不确定去哪里: …

python pandas imputation fillna pandas-groupby

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

在scikit-learn中计算分类缺失值

我有一些文本类型的pandas数据.这些文本列中包含一些NaN值.我想要做的就是通过sklearn.preprocessing.Imputer(以最常见的值取代NaN )来归咎于那些NaN .问题在于实施.假设有一个包含30列的Pandas数据帧df,其中10列具有分类性质.一旦我跑:

from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(df) 
Run Code Online (Sandbox Code Playgroud)

Python生成一个error: 'could not convert string to float: 'run1'',其中'run1'是来自第一列的普通(非缺失)值,带有分类数据.

任何帮助都会非常受欢迎

python pandas scikit-learn imputation

52
推荐指数
4
解决办法
5万
查看次数

用列均值替换缺失值

我不知道如何循环每列以用列均值替换NA值.当我尝试使用以下代码替换一列时,它运行良好.

Column1[is.na(Column1)] <- round(mean(Column1, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)

循环列的代码不起作用:

for(i in 1:ncol(data)){
    data[i][is.na(data[i])] <- round(mean(data[i], na.rm = TRUE))
}
Run Code Online (Sandbox Code Playgroud)

值不会被替换.有人可以帮我这个吗?

r missing-data imputation

40
推荐指数
9
解决办法
11万
查看次数

在R中的选定列中将所有NA替换为FALSE

我有类似的问题这一个,但我的数据集是有点大:50列与1列UID等栏目,无论是携带TRUE还是NA,我想改变一切NAFALSE,但我不希望使用显式循环.

可以plyr做到的伎俩?谢谢.

更新#1

感谢您的快速回复,但如果我的数据集如下所示:

df <- data.frame(
  id = c(rep(1:19),NA),
  x1 = sample(c(NA,TRUE), 20, replace = TRUE),
  x2 = sample(c(NA,TRUE), 20, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)

我只想要X1X2被处理,如何做到这一点?

r missing-data dataframe na imputation

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

如何用相邻值替换数据帧中的NA(缺失值)

862 2006-05-19 6.241603 5.774208     
863 2006-05-20 NA       NA      
864 2006-05-21 NA       NA      
865 2006-05-22 6.383929 5.906426      
866 2006-05-23 6.782068 6.268758      
867 2006-05-24 6.534616 6.013767      
868 2006-05-25 6.370312 5.856366      
869 2006-05-26 6.225175 5.781617      
870 2006-05-27 NA       NA     
Run Code Online (Sandbox Code Playgroud)

我有一个数据框x像上面的一些NA,我想用相邻的非NA值填充,如2006-05-20它将是平均19和22

问题是怎么回事?

r missing-data locf imputation

17
推荐指数
1
解决办法
7067
查看次数

使用scikit-learn的Imputer模块预测缺失值

我正在编写一个非常基本的程序来使用scikit-learn的Imputer类来预测数据集中的缺失值.

我创建了一个NumPy数组,用strategy ='mean'创建了一个Imputer对象,并在NumPy数组上执行了fit_transform().

当我在执行fit_transform()之后打印数组时,'Nan'仍然存在,我没有得到任何预测.

我在这做错了什么?如何预测缺失值?

import numpy as np
from sklearn.preprocessing import Imputer

X = np.array([[23.56],[53.45],['NaN'],[44.44],[77.78],['NaN'],[234.44],[11.33],[79.87]])

print X

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit_transform(X)

print X
Run Code Online (Sandbox Code Playgroud)

python numpy prediction scikit-learn imputation

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

如何在 scikit-learn 管道中的 CountVectorizer 之前包含 SimpleImputer?

我有一个熊猫DataFrame,包括文本的一列,我想矢量化文本使用scikit学习的CountVectorizer。但是,文本包含缺失值,因此我想在矢量化之前估算一个常量值。

我最初的想法是创建一个PipelineSimpleImputerCountVectorizer

import pandas as pd
import numpy as np
df = pd.DataFrame({'text':['abc def', 'abc ghi', np.nan]})

from sklearn.impute import SimpleImputer
imp = SimpleImputer(strategy='constant')

from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer()

from sklearn.pipeline import make_pipeline
pipe = make_pipeline(imp, vect)

pipe.fit_transform(df[['text']]).toarray()
Run Code Online (Sandbox Code Playgroud)

但是,fit_transform错误是因为SimpleImputer输出2D 数组CountVectorizer需要1D input。这是错误消息:

AttributeError: 'numpy.ndarray' object has no attribute 'lower'
Run Code Online (Sandbox Code Playgroud)

问题:我该如何修改Pipeline它才能使其正常工作?

注意:我知道我可以在 Pandas …

python machine-learning scikit-learn imputation countvectorizer

16
推荐指数
2
解决办法
1861
查看次数

用fancyimpute和pandas进行数据估算

我有一个大熊猫数据成名df.它有很多缺失.丢弃行/或逐行不是一种选择.输入中位数,平均值或最常见的值也不是一种选择(因此,插入pandas和/或scikit不幸的是没有做到这一点).

我遇到了一个看起来很整洁的包fancyimpute(你可以在这里找到它).但我有一些问题.

这是我做的:

#the neccesary imports
import pandas as pd
import numpy as np
from fancyimpute import KNN

# df is my data frame with the missings. I keep only floats
df_numeric = = df.select_dtypes(include=[np.float])

# I now run fancyimpute KNN, 
# it returns a np.array which I store as a pandas dataframe
df_filled = pd.DataFrame(KNN(3).complete(df_numeric))
Run Code Online (Sandbox Code Playgroud)

但是,它df_filled是一个单一的向量,而不是填充的数据帧.如何通过插补来保持数据框?

更新

我意识到,fancyimpute需要一个numpay array.我因此使用转换为df_numeric数组as_matrix(). …

python python-3.x pandas imputation fancyimpute

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

如何将距离归结为一个值

我想用"行距离"填充缺失值到最近的非NA值.换句话说,如何将此示例数据框中的列x转换为y列?

#    x y
#1   0 0
#2  NA 1
#3   0 0
#4  NA 1
#5  NA 2
#6  NA 1
#7   0 0
#8  NA 1
#9  NA 2
#10 NA 3
#11 NA 2
#12 NA 1
#13  0 0
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到dplyr group_by和mutate row_number()语句的正确组合来完成这个技巧.我调查过的各种插补包都是针对更复杂的场景而设计的,其中使用统计和其他变量进行插补.

d<-data.frame(x=c(0,NA,0,rep(NA,3),0,rep(NA,5),0),y=c(0,1,0,1,2,1,0,1,2,3,2,1,0))
Run Code Online (Sandbox Code Playgroud)

r imputation

12
推荐指数
1
解决办法
165
查看次数