标签: missing-data

内部NA时间序列,动物园,R

我在R中有一个动物园对象,它有每日数据,并且错过了周末.当我尝试ar()在对象上运行某些函数时(例如)我得到错误:

mkt.ar <- ar(zoo_object)
Error in na.fail.default(as.ts(x)) : missing values in object
Run Code Online (Sandbox Code Playgroud)

如果我做:

mkt.ar <- ar(zoo_object, na.action=na.omit)
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为当动物园试图将事物转换为ts时,周末本来就缺失了.除了将事物转换为使用coredata(zoo_object)和运行的向量之外ar(),有没有办法告诉R跳过丢失的数据?

谢谢

r time-series missing-data zoo

5
推荐指数
1
解决办法
2913
查看次数

data.table将NA替换为多列的均值和id

如果我有以下data.table:

dat <- data.table("id"=c(1,1,1,1,2,2,2,2), "var1"=c(NA,1,2,2,1,1,2,2),
              "var2"=c(4,4,4,4,5,5,NA,4), "var3"=c(4,4,4,NA,5,5,5,4))
   id var1 var2 var3
1:  1   NA    4    4
2:  1    1    4    4
3:  1    2    4    4
4:  1    2    4   NA
5:  2    1    5    5
6:  2    1    5    5
7:  2    2   NA    5
8:  2    2    4    4
Run Code Online (Sandbox Code Playgroud)

如何用id中每列的平均值替换缺失值?在我的实际数据中,我有许多变量,对于我想要替换的变量,所以如何以一般方式完成,例如它不会替换为var3而只替换为var1和var2?:

tomean=c("var1", "var2")
Run Code Online (Sandbox Code Playgroud)

我试过这样的东西,但我还没有找到解决方案:

dat[, (tomean) := mean(tomean, na.rm=TRUE), by=id, .SDcols = tomean]
Run Code Online (Sandbox Code Playgroud)

r missing-data data.table

5
推荐指数
1
解决办法
2053
查看次数

在 Julia 中:查找缺失值的数组的平均值

如果 an 的任何元素丢失,Statistics 包mean函数将返回。missingarray

julia> using Statistics
julia> mean([1 2 3 4 5] )
3.0
julia> mean([1 2 missing 4 5] )  # Note missing value
missing
Run Code Online (Sandbox Code Playgroud)

如何获得非缺失值的平均值?

missing-data julia

5
推荐指数
1
解决办法
3369
查看次数

处理 Logistic 回归的 NaN(缺失)值 - 最佳实践?

我正在处理患者信息数据集,并尝试使用 MATLAB 根据数据计算倾向得分。删除具有许多缺失值的特征后,我仍然留下几个缺失(NaN)值。

当我尝试使用以下 Matlab 代码(来自 Andrew Ng 的 Coursera 机器学习课程)执行逻辑回归时,由于这些缺失值,我会遇到错误,因为我的成本函数和梯度向量的值变为 NaN:

[m, n] = size(X);
X = [ones(m, 1) X];    
initial_theta = ones(n+1, 1);
[cost, grad] = costFunction(initial_theta, X, y);
options = optimset('GradObj', 'on', 'MaxIter', 400);

[theta, cost] = ...
    fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
Run Code Online (Sandbox Code Playgroud)

注意:sigmoid 和 costfunction 是我为整体易用性而创建的工作函数。

如果我将所有 NaN 值替换为 1 或 0,则可以顺利执行计算。但是我不确定这是否是处理此问题的最佳方法,而且我也想知道我应该选择(通常)什么替换值获得使用缺失数据执行逻辑回归的最佳结果。使用特定数字(0 或 1 或其他数字)替换数据中所述缺失值有什么好处/缺点吗?

注意:我还将所有特征值标准化为 0-1 范围内。

对于这个问题的任何见解都将受到高度赞赏。谢谢

machine-learning nan missing-data logistic-regression data-cleaning

5
推荐指数
1
解决办法
2218
查看次数

将包含缺失值的 DataFrame 字符串列转换为 Julia 中的日期

我正在尝试将 DataFrame 字符串列转换为 Julia 中的日期格式,但如果该列包含缺失值,则会产生错误:

ERROR: MethodError: no method matching Int64(::Missing)
Run Code Online (Sandbox Code Playgroud)

我尝试运行的代码(适用于没有丢失数据的列)是:

df_pp[:tod] = Date.(df_pp[:tod], DateFormat("d/m/y"));
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他代码行是:

df_pp[:tod] = Date.(passmissing(df_pp[:tod]), DateFormat("d/m/y"));
df_pp[.!ismissing.(df_pp[:tod]), :tod] = Date.(df_pp[:tod], DateFormat("d/m/y"));
Run Code Online (Sandbox Code Playgroud)

tod该代码与名为 的数据框中命名的列相关df_ppDataFrames在尝试此操作之前, &包均已Dates加载。

date missing-data dataframe julia

5
推荐指数
1
解决办法
849
查看次数

R 使用 tidyverse 用其他值的总和填充缺失值

我有一个包含许多列和许多行的数据框。

col_1 | col_2 | ... | col_n
 35   |  NA   | ... |   2
  .   |   .   |  .  |   .
  .   |   .   |  .  |   .
  .   |   .   |  .  |   .
 123  |  90   | ... |   NA
Run Code Online (Sandbox Code Playgroud)

某些行包含 NA 值(可以超过 1 个 NA)。

我希望找到包含 1 个 NA 的所有行,并将其替换为其他列的总和。

我如何使用 tidyverse 来实现它?

r missing-data na tidyverse

5
推荐指数
1
解决办法
507
查看次数

在 PySpark 中用均值填充缺失值

我正在尝试使用 PySpark 用均值填充 NaN 值。以下是我正在使用的代码,以下是发生的错误:

from pyspark.sql.functions import avg


def fill_with_mean(df_1, exclude=set()):
    stats = df_1.agg(*(avg(c).alias(c) for c in df_1.columns if c not in exclude))
    return df_1.na.fill(stats.first().asDict())

res = fill_with_mean(df_1, ["MinTemp", "MaxTemp", "Evaporation", "Sunshine"])
res.show()
Run Code Online (Sandbox Code Playgroud)

错误:

Py4JJavaError Traceback (most recent call last)
  <ipython-input-35-42f4d984f022> in <module>()
  3   stats = df_1.agg(*(avg(c).alias(c) for c in df_1.columns if c not in exclude))
  4   return df_1.na.fill(stats.first().asDict())
   ----> 5 res = fill_with_mean(df_1, ["MinTemp", "MaxTemp", "Evaporation", "Sunshine"])
  6 res.show()



  5 frames
  /usr/local/lib/python3.7/dist-packages/py4j/protocol.py in get_return_value(answer, 
  gateway_client, target_id, name)
  326 …
Run Code Online (Sandbox Code Playgroud)

python mean missing-data pyspark fillna

5
推荐指数
1
解决办法
2847
查看次数

仅使用 Mutate 和 Case_When 来填充 NA 行

我已经盯着看几个小时了,我不知道在哪里可以找到像这样简单的问题的答案,所以我希望这不是一个重复的问题。

我有一个大数据框(936848 x 12),其中一列是一个编码名称,我可以从中导出其他列的值,在本例中,制造年份是根据列代码的第一个字符得出的。

数据框的小样本:

df <- data.frame(Code = c("AX123", "CL199", "GH679"), 
                 Year = c(NA, "2014", "2018")) 
Run Code Online (Sandbox Code Playgroud)

我只想仅在值丢失时才根据列代码更改“年份”列。我不想覆盖年份列中的现有值。

由于这还涉及识别代码中字符串中的第一个字母,因此我使用case_whenand startsWith

df <- df %>%
  filter(is.na(Year)) %>%
  mutate(Year = case_when(startsWith(Code, "A") ~ 2013,
                          startsWith(Code, "C") ~ 2014,
                          startsWith(Code, "D") ~ 2015,
                          startsWith(Code, "E") ~ 2016,
                          startsWith(Code, "F") ~ 2017,
                          startsWith(Code, "G") ~ 2018,
                          startsWith(Code, "H") ~ 2019,
                          startsWith(Code, "J") ~ 2020,
                          TRUE ~ NA_real_
                          ))
Run Code Online (Sandbox Code Playgroud)

这将给出这个结果:

   Code Year
1 AX123 2013
Run Code Online (Sandbox Code Playgroud)

我的问题是我编写此过滤器以过滤掉数据框中所有非 NA 行的方式。我想保持数据框不变,只填充 NA 行。

我正在考虑将其嵌套到 ifelse …

r filter missing-data dataframe dplyr

5
推荐指数
1
解决办法
2868
查看次数

如果包含缺失值,如何在 Python 中创建虚拟变量?

如果包含缺失值,如何创建虚拟变量?我有以下数据,我想根据几个条件创建一个虚拟变量。我的问题是它会自动将我的缺失值转换为 0,但我想将它们保留为缺失值。

import pandas as pd

mydata = {'x' : [10, 50, np.nan, 32, 47, np.nan, 20, 5, 100, 62], 
          'y' : [10, 1, 5,  np.nan, 47, np.nan, 8, 5, 100, 3]}
df = pd.DataFrame(mydata)

df["z"] = ((df["x"] >= 50) & (df["y"] <= 20)).astype(int)

print(df)
Run Code Online (Sandbox Code Playgroud)

python nan missing-data dummy-variable

5
推荐指数
1
解决办法
1245
查看次数

根据与其他列的相关性填充 pandas 数据框缺失的数据

error_text我有一个 pandas DataFrame,其中包含许多行和一列名为包含多个空值的字符串。我想根据该列与另一列的相关性来填充这些缺失的数据。

mydf_example = pd.DataFrame({'a':[1,2,3,4,5,6,3],'b':[10,20,30,40,50,60,30],'c':['a','b','c','d','e','f','c'], 'error_text':[np.nan,'some_text','other_text',np.nan,'more_text','another_text',np.nan]})
mydf_example

    a   b   c   error_text
0   1   10  a   NaN
1   2   20  b   some_text
2   3   30  c   other_text
3   4   40  d   Nan
4   5   50  e   more_text
5   6   60  f   another_text
6   3   30  c   NaN
Run Code Online (Sandbox Code Playgroud)

首先,我创建了sub_df删除丢失数据的行:

mydf_example = mydf_example.dropna()
mydf_example

    a   b   c   error_text
1   2   20  b   some_text
2   3   30  c   other_text
4   5   50  e   more_text
5   6   60  f   another_text
Run Code Online (Sandbox Code Playgroud)

然后我将该 …

python missing-data dataframe pandas

5
推荐指数
1
解决办法
226
查看次数