标签: missing-data

在pandas条件python中设置组的值

我有一个包含以下列的数据框:

duration, cost, channel 
  2       180      TV1
  1       200      TV2
  2       300      TV3
  1       nan      TV1
  2       nan      TV2
  2       nan      TV3
  2       nan      TV1
  1       40       TV2
  1       nan      TV3
Run Code Online (Sandbox Code Playgroud)

一些成本值是nans,为了填补它们,我需要执行以下操作:

  • 按渠道分组
  • 在一个渠道内,将可用成本加总并除以*出现次数(平均值)
  • 重新分配该频道中所有行的值:
    • 如果持续时间= 1,则成本=平均值*1.5
    • 如果持续时间= 2,则成本=平均值

示例:TV2频道,我们有3个条目,其中一个条目具有空成本.所以我需要做以下事情:

average = 200+40/3 = 80
if duration = 1, cost = 80 * 1.5 = 120

duration, cost, channel 
  2       180      TV1
  1       120      TV2
  2       300      TV3
  1       nan      TV1
  2       80       TV2
  2       nan      TV3
  2       nan      TV1 …
Run Code Online (Sandbox Code Playgroud)

python group-by missing-data pandas

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

处理主成分分析中的零值

我一直在努力让我的PCA工作,我认为这是因为我的数据集中没有值.但我不知道如何解决这个问题.

第一个问题是,零值不是缺失值(它们是某个部门没有工作的区域),所以我应该把它们留在那里.我感到不舒服的是,他们可能被排除在外,因为他们是零.

其次,即使我尝试删除所有丢失的数据,我仍然会得到相同的错误消息.

从以下代码开始,我收到以下错误消息:

urban.pca.cov <- princomp(urban.cov, cor-T)
Error in cov.wt(z) : 'x' must contain finite values only
Run Code Online (Sandbox Code Playgroud)

另外,我可以这样做:

urban.cut<- na.omit(urban.cut)

> sum(is.na(urban.cut))
  [1] 0
Run Code Online (Sandbox Code Playgroud)

然后再次运行它并得到相同的问题.

urban.pca.cov <- princomp(urban.cov, cor-T)
Error in cov.wt(z) : 'x' must contain finite values only
Run Code Online (Sandbox Code Playgroud)

这是一个缺少数据的问题吗?我已根据此PCA教程对所有变量进行了日志转换.这是我的数据结构.

> str(urban.cut)
'data.frame':   5490 obs. of  13 variables:
$ median.lt       : num  2.45 2.57 2.53 2.6 2.31 ...
$ p.nga.lt        : num  0.547 4.587 4.529 4.605 4.564 ...
$ p.mbps2.lt      : num  1.66 4.17 4 3.9 4.2 …
Run Code Online (Sandbox Code Playgroud)

r missing-data pca na

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

R:删除缺少某些百分比值的列

我正在使用类似于以下摘录的数据框.

sample.df

Obs   Var1 Var2 Var3
A0001 21   21   21
A0002 21   78   321
A0003 32   98   87
A0004 21   12   54
A0005 21   13   45 
A0006 21   87   45
B0007 84   NA   45
B0008 21   NA   98
B0009  2   NA   45
B0010 12   NA   45
Run Code Online (Sandbox Code Playgroud)

我想删除缺少某些变量百分比的列,例如80%.我试过下面的代码:

sample.df.cln <- apply(sample.df, 2, function(x) {
  if (sum(is.na(x)) / nrow(x) > 0.8) {
  x <- NULL  
  }
})
Run Code Online (Sandbox Code Playgroud)

但它返回了以下错误:

Error in if (sum(is.na(x))/nrow(x) > 0.8) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何帮助.我还认为将代码封装在函数中是有益的,因此它可以应用于不同的数据帧.

r apply missing-data dataframe na

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

替换NA值

我有一个变量有三个值,NA,Yes,MayBe.

当我在该变量上使用level和class函数时,我得到了这些值

          > levels(Data1$Case)
          "Yes"                 "May Be"

          > class(Data1$Case)
          "factor"
Run Code Online (Sandbox Code Playgroud)

我试图用No替换NA值,所以我使用此代码

     Data1$Col1[is.na(Data1$Col1)]= "No"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,

       In `[<-.factor`(`*tmp*`, is.na(Data1$Col1), value = c(NA,  :
       invalid factor level, NA generated
Run Code Online (Sandbox Code Playgroud)

我写了一个ifelse声明来取代NA,

      Data1$Col1=ifelse(is.na(Data1$Col1_ == 'TRUE'), "No",Data1$Col1)
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我正在寻找一些有效的方法来取代NA.

r missing-data

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

cor()缺少值

我想要一个只有相关系数大于0.2的矩阵.我提出了以下解决方案.

mts.data <- ts(data.frame(a=arima.sim(model=list(1,0,0), n=10), 
      b=arima.sim(model=list(1,0,1), n=10), c=arima.sim(model=list(1,0,0), 
      n=10), d=arima.sim(model=list(1,0,2), n=10),
      e=arima.sim(model=list(2,0,1), n=10)), start=c(2007,1), frequency=12)

critcor <- function(x) {
  crit.mat <- matrix(0, nrow=ncol(x), ncol=ncol(x))
  for(j in 1:ncol(x)) {
    for(i in 1:ncol(x)) {
      if(abs(cor(x[,i], x[,j])) > 0.2) {
        crit.mat[i,j] <- cor(x[,i], x[,j])
      }
    }
  }
  return(crit.mat)
}
Run Code Online (Sandbox Code Playgroud)

这很好用.不幸的是,我的数据集包含缺失值.

mts.data[1:3, 4] <- NA
mts.data[9:10, 5] <- NA 
Run Code Online (Sandbox Code Playgroud)

当我运行我的功能时,我收到了一个错误.

critcor(mts.data)
# Error in if (abs(cor(x[, i], x[, j])) > 0.2) { : 
#   missing value where TRUE/FALSE needed 
Run Code Online (Sandbox Code Playgroud)

我现在正在浏览互联网几个小时,我完全不知道如何解决这个问题.如果由于缺少值而无法进行相关,我希望我的函数只打印0.

loops r missing-data correlation

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

R表缺少数据

我想创建一个表来获取标签(用于行和列)形成一个源和来自另一个源的数据.

我有以下数据:

var1_labels = c('A', 'B', 'C')
var2_labels = c(1, 2, 3)
var1_data = c('A', 'A', 'A', 'A', 'A', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C')
var2_data = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个包含每个元素计数的表,所以我运行:

table(var1_data, var2_data)
Run Code Online (Sandbox Code Playgroud)

我得到:

           var2_data
var1_data  1  2
        A  5  0
        C  4 11
Run Code Online (Sandbox Code Playgroud)

但我想得到的是:

           var2_data
var1_data  1  2  3
        A  5  0  0 …
Run Code Online (Sandbox Code Playgroud)

r count missing-data

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

pandas:将NaN替换为列中的最后一个非NaN值

我有一个excel文件,其中列出了篮球队和每支球队的球员.新团队的第一行说明了第0列中的团队名称和第1列中该团队中的玩家.下一行在第1列中只有该团队中的玩家(第0列中没有任何内容,因为团队是从最后一个暗示的)陈述的团队).每个团队都会重复这一过程.

Warriors    Stephen Curry
-           Klay Thompson
-           Kevin Durant
Clippers    Chris Paul
-           Blake Griffen
-           JJ Redick
Raptors     Kyle Lowry
-           Demar Derozan
Run Code Online (Sandbox Code Playgroud)

我将数据导入到pandas数据框中并计算每个团队中的玩家数量.

import pandas as pd
df = read_excel('data.xlsx')
print(df)

     Team        Player
0    Warriors    Stephen Curry
1    NaN         Klay Thompson
2    NaN         Kevin Durant
3    Clippers    Chris Paul
4    NaN         Blake Griffen
5    NaN         JJ Redick
6    Raptors     Kyle Lowry
7    NaN         Demar Derozan
Run Code Online (Sandbox Code Playgroud)

无论如何我可以NaN用适当的团队名称替换(我知道我只需要填写excel文件中的空白点,但如果我在导入或通过pandas处理它,它看起来更清晰).我想我需要遍历数据框,如果不是,则存储团队名称,NaN并替换NaN为当前存储的团队名称,直到新团队出现.

如果你不了解篮球,我的数据框应该看起来像这样说完了:

     Team        Player
0    Warriors …
Run Code Online (Sandbox Code Playgroud)

python excel missing-data pandas

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

Elasticsearch匹配短语前缀不匹配所有术语

我遇到一个问题,当我在Elasticsearch中使用match_phrase_prefix查询时,它没有返回我期望的所有结果,尤其是当查询是一个单词后跟一个字母时。

进行以下索引映射(这是保护敏感数据的人为示例):

http://localhost:9200/test/drinks/_mapping
Run Code Online (Sandbox Code Playgroud)

返回:

{
  "test": {
    "mappings": {
      "drinks": {
        "properties": {
          "name": {
            "type": "text"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在数百万其他记录中,还有:

{
    "_index": "test",
    "_type": "drinks",
    "_id": "2",
    "_score": 1,
    "_source": {
        "name": "Johnnie Walker Black Label"
    }
},
{
    "_index": "test",
    "_type": "drinks",
    "_id": "1",
    "_score": 1,
    "_source": {
        "name": "Johnnie Walker Blue Label"
    }
}
Run Code Online (Sandbox Code Playgroud)

以下查询,是一个单词,后跟两个字母:

POST http://localhost:9200/test/drinks/_search
{
    "query": {
        "match_phrase_prefix" : {
            "name" : "Walker Bl"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

返回此:

{
    "took": 1, …
Run Code Online (Sandbox Code Playgroud)

querying match missing-data elasticsearch

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

给出一个不是数字的颜色

我有一个整数矩阵,填充 nans

M=

 1     2     2     3     4     4
 2     2     2     3     4   NaN
 2     2     2     3     4   NaN
 2     2     2     3     4   NaN
 2     2     2     3     4   NaN
 2     2     2     3     4   NaN
Run Code Online (Sandbox Code Playgroud)

我正在使用imagesc绘图

imagesc(M)
Run Code Online (Sandbox Code Playgroud)

但是,如果我以这种方式绘制它,NaN1显示相同的颜色,这是令人困惑的.

如何有不同颜色NaNsimagesc在此输入图像描述

matlab plot image missing-data

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

Julia: Finding values larger than 0 in vector with missing

I'm fairly new to Julia and as a Matlab/R User I find it, for the most part, really nice to work with.

However, I'm a little confused by the missing values and how to work with them.

Let's say I have a vector:

a=[missing -1 2 3 -12] #Julia
a=[NaN -1 2 3 -12] #Matlab
Run Code Online (Sandbox Code Playgroud)

In Matlab I would just do the following to find the values below 0

a(a<0)
Run Code Online (Sandbox Code Playgroud)

which gives me

-1 -12
Run Code Online (Sandbox Code Playgroud)

The same unfortunately doesn't work …

missing-data julia

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

标签 统计

missing-data ×10

r ×5

na ×2

pandas ×2

python ×2

apply ×1

correlation ×1

count ×1

dataframe ×1

elasticsearch ×1

excel ×1

group-by ×1

image ×1

julia ×1

loops ×1

match ×1

matlab ×1

pca ×1

plot ×1

querying ×1