标签: missing-data

替换R中缺失值的平均值或模式

我有一个由混合数据类型(数字,字符,因子,序数因子)组成的大型数据库,缺少值,我试图创建一个for循环,使用相应列的平均值替换缺失值,如果数字或字符/因子的模式.

这就是我现在所拥有的:

#fake array:
age<- c(5,8,10,12,NA)
a <- factor(c("aa", "bb", NA, "cc", "cc"))
b <- c("banana", "apple", "pear", "grape", NA)
df_test <- data.frame(age=age, a=a, b=b)
df_test$b <- as.character(df_test$b)

for (var in 1:ncol(df_test)) {
    if (class(df_test[,var])=="numeric") {
        df_test[is.na(df_test[,var]) <- mean(df_test[,var], na.rm = TRUE)
} else if (class(df_test[,var]=="character") {
        Mode(df_test$var[is.na(df_test$var)], na.rm = TRUE)
} 
}
Run Code Online (Sandbox Code Playgroud)

"模式"的功能是:

Mode <- function (x, na.rm) {
    xtab <- table(x)
    xmode <- names(which(xtab == max(xtab)))
    if (length(xmode) > 1)
        xmode <- ">1 mode"
    return(xmode)
}
Run Code Online (Sandbox Code Playgroud)

它似乎只是忽略了语句,没有给出任何错误......我也尝试用索引来处理第一部分:

## …
Run Code Online (Sandbox Code Playgroud)

r missing-data

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

计算一个密钥和一个python(3.2)字典的多少值

我确信这很愚蠢,但我根本无法绕过它.我有一个像这样的字典,每个键的值不等:

'John greased ': ['axle', 'wheel', 'wheels', 'wheel', 'engine', ''], 
'Paul alleged ': ['truth', 'crime', 'facts', 'infidelity', 'incident', ''], 
'Tracy freed ': ['animals', 'fish', 'slaves', 'slaves', 'slaves', 'pizza'], 
'Lisa plowed ': ['field', 'field', '', '', '', ''],
Run Code Online (Sandbox Code Playgroud)

我想知道每个键有多少值,而不是每个唯一值,但每个键有多少个标记,重复或不重复.所以我会得到一个结果:

John greased  5
Paul alleged  5
Tracy freed  6
Lisa plowed  2
Run Code Online (Sandbox Code Playgroud)

我试图使用它来使用下面的代码来解决它:

for key, value in sorted(result.items()):
         print(key, len(value)) 
Run Code Online (Sandbox Code Playgroud)

但由于缺失值,所有长度都变得相同.关于如何解决这个或在哪里找到它的任何想法?非常感谢您的帮助.

python dictionary list missing-data python-3.x

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

将R设置为包含缺失数据 - 如何将`table()`的`useNA ="ifany"`选项设置为默认值?

在许多情况下,了解丢失的数据至关重要,忽略它们会严重影响您的分析.

因此我想将useNA = "ifany"默认设置为table().理想地类似于options(stringsAsFactors = FALSE)

我发现下面有一个丑陋的黑客,但它必须更好,没有定义一个功能.

https://stat.ethz.ch/pipermail/r-help/2010-January/223871.html

tableNA<-function(x) {
  varname<-deparse(substitute(x))
  assign(varname,x)
  tabNA<-table(get(varname),useNA="always")
  names(attr(tabNA,"dimnames"))<-varname
  return(tabNA)
}
Run Code Online (Sandbox Code Playgroud)

default analysis r missing-data

3
推荐指数
1
解决办法
3462
查看次数

理解R - is.na和空白""细胞

我有一个数据集.在许多不同的文件操作之前,许多单元格都是"NA"

在操纵之后,无论出于何种原因,它们都变得纯粹是空洞的.因此,需要明确的是,以前NA在excel中的SAME单元​​现在只显示完全空白.没什么大不了的吧?

那么,当我把数据读入RI时...

 [1] ""                  ""                  "6.4019975396e+17" 
 [4] ""                  ""                  ""                 
 [7] ""                  ""                  "6.40275087015e+17"
[10] "6.4062774821e+17"  ""                  "6.40602341e+17"   
[13] ""                  ""                  "6.40360673735e+17"
[16] "6.40326194081e+17" "6.40326465381e+17" "6.40322363352e+17"
Run Code Online (Sandbox Code Playgroud)

对我来说似乎还不错,除非我跑步

is.na(data_frame $列名)

我搞错了.每一个.我误解了.na是如何工作的?

编辑 - 这有点模糊.当然,我误解了它是如何工作的.你能解释为什么空单元不算作NA单元吗?是否存在可以应用于数据框的快速修复程序,以便为R创建任何"或"为CSV的NA中的空白单元格?

excel r missing-data

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

熊猫:groupby向前填充日期时间索引

我有一个包含两列的数据集:company和value.
它有一个日期时间索引,其中包含重复项(在同一天,不同的公司具有不同的值).这些值缺少数据,因此我想使用同一公司的前一个数据点转发缺少的数据.

但是,我似乎无法找到一个很好的方法来做到这一点,而不会遇到奇怪的groupby错误,这表明我做错了什么.

玩具数据:

a = pd.DataFrame({'a': [1, 2, None], 'b': [12,None,14]})
a.index = pd.DatetimeIndex(['2010', '2011', '2012'])  
a = a.unstack() 
a = a.reset_index().set_index('level_1') 
a.columns = ['company', 'value'] 
a.sort_index(inplace=True)
Run Code Online (Sandbox Code Playgroud)

尝试过的解决方案(不起作用:) ValueError: cannot reindex from a duplicate axis:

a.groupby('company').ffill() 
a.groupby('company')['value'].ffill() 
a.groupby('company').fillna(method='ffill')
Run Code Online (Sandbox Code Playgroud)

Hacky解决方案(提供所需的结果,但显然只是一个丑陋的解决方法):

a['value'] = a.reset_index().groupby(
    'company').fillna(method='ffill')['value'].values
Run Code Online (Sandbox Code Playgroud)

可能有一种简单而优雅的方式来做到这一点,这是如何在熊猫中进行的?

python datetime group-by missing-data pandas

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

Python:foward填充nans和0

假设我有一个数据帧df1,它有零和nans:

dates = pd.date_range('20170101',periods=20)
df1 = pd.DataFrame(np.random.randint(10,size=(20,3)),index=dates,columns=['foo','bar','see'])
df1.iloc[3:12,0] = np.nan
df1.iloc[6:17,1] = 0
Run Code Online (Sandbox Code Playgroud)

什么是前进填充zeors和nans的简洁方法?我试过以下:

df1 = (df1.fillna(method='ffill', inplace=True)).replace(to_replace=0, method='ffill')

AttributeError: 'NoneType' object has no attribute 'replace'
Run Code Online (Sandbox Code Playgroud)

python fill missing-data pandas

3
推荐指数
1
解决办法
624
查看次数

如果某些数据点是NaN,如何拟合二维函数?

我正在尝试将2D表面适合数据。更具体地说,我想找到一个将像素坐标映射到波长坐标的函数,就像FITCOORDS在IRAF中一样。

举例来说,我想test在以下代码片段中找到适合数组的内容:

import numpy as np
from astropy.modeling.models import Chebyshev2D
from astropy.modeling.fitting import LevMarLSQFitter
#%%
test = np.array([[7473, 7040, 6613, 6183, 5753, 5321, 4888],
   [7474, 7042, 6616, 6186, np.nan, 5325, 4893],
   [7476, 7044, 6619, 6189, 5759, 5328, 4897],
   [7479, 7047, np.nan, 6192, 5762, 5331, 4900]])
grid_pix, grid_wave = np.mgrid[:4, :7]
fitter = LevMarLSQFitter()
c2_init = Chebyshev2D(x_degree=3, y_degree=3)
c2_fit = fitter(c2_init, grid_wave, grid_pix, test)
print(c2_fit)
Run Code Online (Sandbox Code Playgroud)

ResultI 在Python 3.6 上astropy 2.0.2和numpy 1.13.3以下:

Model: Chebyshev2D …
Run Code Online (Sandbox Code Playgroud)

python numpy missing-data model-fitting astropy

3
推荐指数
1
解决办法
134
查看次数

找到R中具有最大NA值的行

我有数据来自

df
1 a c  NA NA
2 a a  a  NA
3 c NA NA NA
Run Code Online (Sandbox Code Playgroud)

首先,我想找到哪一行具有最高NA值.我也有兴趣找到条件超过2个NA值的行.
我怎么能在R?

row r missing-data

3
推荐指数
1
解决办法
222
查看次数

计算NA出现在非缺失值之间

我有一个包含5个时间列(第一年,第二年y等)的数据框,对于某些行,我在非缺失值之间具有NA。示例如下:

df = structure(list(FirstYStage = c(NA, 3.2, 3.1, NA, NA, 2, 1, 3.2, 
3.1, 1, 2, 5, 2, NA, NA, NA, NA, 2, 3.1, 1), SecondYStage = c(NA, 
3.1, 3.1, NA, NA, 2, 1, 4, 3.1, 1, NA, 5, 3.1, 3.2, 2, 3.1, NA, 
2, 3.1, 1), ThirdYStage = c(NA, NA, 3.1, NA, NA, 3.2, 1, 4, NA, 
1, NA, NA, 3.2, NA, 2, 3.2, NA, NA, 2, 1), FourthYStage = c(NA, 
NA, 3.1, NA, NA, NA, 1, 4, NA, …
Run Code Online (Sandbox Code Playgroud)

r missing-data dplyr

3
推荐指数
1
解决办法
56
查看次数

R线性外推缺失值

是否有一种简单的方法可以线性外推R数据帧中的缺失值?

也许这是数据预处理中的一个琐碎且经常遇到的问题,但是,经过一段时间的搜索,我找不到任何简单的解决方案。

这个问题不是关于插值,而是关于在出现之前和之后推断丢失的数据。

我知道,使用用户定义的函数可以解决此问题,但是在这种情况下,恐怕是不必要的。

以下是起始输入数据帧,包括所需的输出格式。

任何帮助/提示都受到高度赞赏。提前非常感谢您。

输入数据帧:

input <- read.table(header=TRUE, text="
  ID1 ID2 ID3 ID4 ID5 ID6
  NA  20  NA  NA  NA  NA
  21  21  NA  NA  22  NA
  22  22  23  24  23  22
  NA  23  24  25  NA  23
  NA  24  25  26  NA  24
  NA  25  26  27  NA  25
  NA  26  27  28  NA  26
  NA  NA  28  NA  NA  27
  NA  NA  NA  NA  NA  NA
  NA  NA  NA  NA  NA  NA
")
Run Code Online (Sandbox Code Playgroud)

输出数据帧:

output …
Run Code Online (Sandbox Code Playgroud)

r missing-data extrapolation

3
推荐指数
1
解决办法
161
查看次数