这是先前问题的延伸。如何将数据框的两列组合为
data <- data.frame('a' = c('A','B','C','D','E'),
'x' = c("t",2,NA,NA,NA),
'y' = c(NA,NA,NA,4,"r"))
Run Code Online (Sandbox Code Playgroud)
显示为
'a' 'x' 'y'
A t NA
B 2 NA
C NA NA
D NA 4
E NA r
Run Code Online (Sandbox Code Playgroud)
要得到
'a' 'mycol'
A t
B 2
C NA
D 4
E r
Run Code Online (Sandbox Code Playgroud)
我试过这个
cbind(data[1], mycol = na.omit(unlist(data[-1])))
Run Code Online (Sandbox Code Playgroud)
但它显然没有保留行NA。
我目前正在开发一个项目,我必须填写一些缺失的值。我使用Python,我看到有一种算法可以进行缺失数据插补。该算法称为 Nipals。因此,我决定寻找一种使用它的方法,我发现 statsmodels.multivariate.pca.PCA 可以帮助我。
我有一个名为 A 的 numpy 数组,其中包含 n 行和 p 列。A 有一些缺失值,即 NaN 值。我想用PCA来填充A。但是,没有例子可以帮助我做到这一点。
有人可以帮我用 Nipals 算法填充 A 吗?
谢谢。注意:抱歉,我是法语初学者,使用英文文档对我来说并不容易。
有谁知道什么可能导致 pandas.DataFrame.to_csv 无法导出完整的数据框?
print(len(df))
[77814 rows x 42 columns]
df.to_csv('filename.csv'))
Run Code Online (Sandbox Code Playgroud)
生成的 csv 文件有 54470 行,并且缺少文件中约 1/3 的数据块。我的数据带有时间戳,我可以看出丢失的数据是一大块,而不是整个文件中的随机点。我正在使用 python 3.6.5,pandas 是 0.22.0。
非常感谢你的帮助
如果 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)
如何获得非缺失值的平均值?
我正在处理患者信息数据集,并尝试使用 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
我正在尝试将 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_pp。DataFrames在尝试此操作之前, &包均已Dates加载。
我有一个包含许多列和许多行的数据框。
col_1 | col_2 | ... | col_n
35 | NA | ... | 2
. | . | . | .
. | . | . | .
. | . | . | .
123 | 90 | ... | NA
Run Code Online (Sandbox Code Playgroud)
某些行包含 NA 值(可以超过 1 个 NA)。
我希望找到包含 1 个 NA 的所有行,并将其替换为其他列的总和。
我如何使用 tidyverse 来实现它?
我正在尝试使用 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) 我已经盯着看几个小时了,我不知道在哪里可以找到像这样简单的问题的答案,所以我希望这不是一个重复的问题。
我有一个大数据框(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 …
如果包含缺失值,如何创建虚拟变量?我有以下数据,我想根据几个条件创建一个虚拟变量。我的问题是它会自动将我的缺失值转换为 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)