在R中,我可以使用该summary命令快速查看缺失数据的计数,但是等效的pandasDataFrame方法describe不会报告这些值.
我知道我可以做点什么
len(mydata.index) - mydata.count()
Run Code Online (Sandbox Code Playgroud)
计算每列的缺失值的数量,但我想知道是否有更好的习语(或者我的方法是否正确).
如何选择数据表中主键中缺少值的所有行.
DT = data.table(x=rep(c("a","b",NA),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x)
Run Code Online (Sandbox Code Playgroud)
选择特定值很容易
DT["a",]
Run Code Online (Sandbox Code Playgroud)
选择缺失值似乎需要矢量搜索.一个人不能使用二进制搜索.我对么?
DT[NA,]# does not work
DT[is.na(x),] #does work
Run Code Online (Sandbox Code Playgroud) 此问题与具有相似标题的帖子相关(将R矢量中的NA替换为相邻值).我想扫描数据框中的列,并将NA替换为相邻单元格中的值.在上述帖子中,解决方案是将NA替换为不是来自相邻矢量的值(例如,数据矩阵中的相邻元素),而是固定值的条件替换.以下是我的问题的可重现的例子:
UNIT <- c(NA,NA, 200, 200, 200, 200, 200, 300, 300, 300,300)
STATUS <-c('ACTIVE','INACTIVE','ACTIVE','ACTIVE','INACTIVE','ACTIVE','INACTIVE','ACTIVE','ACTIVE',
'ACTIVE','INACTIVE')
TERMINATED <- c('1999-07-06' , '2008-12-05' , '2000-08-18' , '2000-08-18' ,'2000-08-18' ,'2008-08-18',
'2008-08-18','2006-09-19','2006-09-19' ,'2006-09-19' ,'1999-03-15')
START <- c('2007-04-23','2008-12-06','2004-06-01','2007-02-01','2008-04-19','2010-11-29','2010-12-30',
'2007-10-29','2008-02-05','2008-06-30','2009-02-07')
STOP <- c('2008-12-05','4712-12-31','2007-01-31','2008-04-18','2010-11-28','2010-12-29','4712-12-31',
'2008-02-04','2008-06-29','2009-02-06','4712-12-31')
Run Code Online (Sandbox Code Playgroud)
TEST < - data.frame(UNIT,STATUS,TERMINATED,START,STOP)测试
UNIT STATUS TERMINATED START STOP
1 NA ACTIVE 1999-07-06 2007-04-23 2008-12-05
2 NA INACTIVE 2008-12-05 2008-12-06 4712-12-31
3 200 ACTIVE 2000-08-18 2004-06-01 2007-01-31
4 200 ACTIVE 2000-08-18 2007-02-01 2008-04-18
5 200 INACTIVE 2000-08-18 2008-04-19 2010-11-28
6 200 …Run Code Online (Sandbox Code Playgroud) 我遇到了一个相当简单的问题,我无法想出一个优雅的解决方案.
我正在str.format一个函数中创建一个字符串,该函数在一个dict替换中传递以用于格式.我想创建字符串并使用值格式化它们,如果它们被传递,否则将它们留空.
防爆
kwargs = {"name": "mark"}
"My name is {name} and I'm really {adjective}.".format(**kwargs)
Run Code Online (Sandbox Code Playgroud)
应该回来
"My name is mark and I'm really ."
Run Code Online (Sandbox Code Playgroud)
而不是抛出KeyError(如果我们不做任何事情会发生什么).
令人尴尬的是,我甚至无法为这个问题提出一个不优雅的解决方案.我想我可以通过不使用来解决这个问题str.format,但如果可能的话,我宁愿使用内置(主要是我想要的).
注意:我事先并不知道将使用哪些密钥.如果有人包含一把钥匙但是没有把它放在kwargs dict中,我试图优雅地失败.如果我100%准确地知道将要查找哪些键,我只需填充所有键并完成它.
我目前想出了一些工作来计算熊猫中缺失值的数量DataFrame.那些非常难看,我想知道是否有更好的方法来做到这一点.
让我们创建一个例子DataFrame:
from numpy.random import randn
df = pd.DataFrame(randn(5, 3), index=['a', 'c', 'e', 'f', 'h'],
columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
Run Code Online (Sandbox Code Playgroud)

我现在拥有的是
a)计算缺少值的单元格:
>>> sum(df.isnull().values.ravel())
9
Run Code Online (Sandbox Code Playgroud)
b)计算某处缺少值的行:
>>> sum([True for idx,row in df.iterrows() if any(row.isnull())])
3
Run Code Online (Sandbox Code Playgroud) 许多调查都有不同类型缺失的代码.例如,代码簿可能表明:
0-99数据
-1没问的问题
-5不知道
-7拒绝回应
-9模块没问
Stata有一个很好的设施来处理这些多种缺失,因为它允许你分配一个通用的.丢失数据,但也允许更具体的缺失类型(.a,.b,.c,...,.z).所有查看缺失的命令都会报告所有缺失条目的答案,但是您可以稍后对各种缺失进行排序.当您认为拒绝回应对归责策略的影响与未提出的问题不同时,这尤其有用.
我从未在R中遇到过这样的设施,但我真的很想拥有这种能力.有没有办法标记几种不同类型的NA?我可以想象创建更多的数据(包含缺失类型的长度为nrow(my.data.frame)的向量,或者哪些行具有哪种类型的缺失的更紧凑的索引),但这看起来非常笨拙.
我有类似的问题这一个,但我的数据集是有点大:50列与1列UID等栏目,无论是携带TRUE还是NA,我想改变一切NA到FALSE,但我不希望使用显式循环.
可以plyr做到的伎俩?谢谢.
感谢您的快速回复,但如果我的数据集如下所示:
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)
我只想要X1和X2被处理,如何做到这一点?
我有以下数据框(简化),国家/地区变量作为因素,值变量具有缺失值:
country value
AUT NA
AUT 5
AUT NA
AUT NA
GER NA
GER NA
GER 7
GER NA
GER NA
Run Code Online (Sandbox Code Playgroud)
以下内容生成以上数据框:
data <- data.frame(country=c("AUT", "AUT", "AUT", "AUT", "GER", "GER", "GER", "GER", "GER"), value=c(NA, 5, NA, NA, NA, NA, 7, NA, NA))
Run Code Online (Sandbox Code Playgroud)
现在,我想使用最后一次观察结果(LOCF)替换每个国家子集中的NA值.我知道命令na.locf在动物园包.data <- na.locf(data)会给我以下数据框:
country value
AUT NA
AUT 5
AUT 5
AUT 5
GER 5
GER 5
GER 7
GER 7
GER 7
Run Code Online (Sandbox Code Playgroud)
但是,该功能仅应用于按国家/地区划分的各个子集.以下是我需要的输出:
country value
AUT NA
AUT 5 …Run Code Online (Sandbox Code Playgroud) 我正在使用终端[不是日食].我得到了以下异常错误,而我emulator.debug成功使用并成功安装.但模拟器显示Unfortunatly app has stop.然后我运行$ adb logcat它将显示以下.
java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:107)
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.example.trintwo.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
我得到了这个错误,即使我安装了android支持库,我android-support-v7-appcompat.jar在android/support/v7/appcompat/lib路径中检查了我将如何清除此错误.
我希望对缺少列的数据进行聚类.手动执行我会在没有此列的情况下计算缺少列的距离.
使用scikit-learn,无法获取缺失的数据.也没有机会指定用户距离功能.
有没有机会聚集丢失的数据?
示例数据:
n_samples = 1500
noise = 0.05
X, _ = make_swiss_roll(n_samples, noise)
rnd = np.random.rand(X.shape[0],X.shape[1])
X[rnd<0.1] = np.nan
Run Code Online (Sandbox Code Playgroud) missing-data ×10
r ×5
na ×3
python ×3
dataframe ×2
pandas ×2
android ×1
data.table ×1
exception ×1
imputation ×1
nan ×1
r-factor ×1
replace ×1
reporting ×1
scikit-learn ×1
select ×1
stata ×1
survey ×1