我有几个数据文件,如下所示:
X code year month day pp
1 4515 1953 6 1 0
2 4515 1953 6 2 0
3 4515 1953 6 3 0
4 4515 1953 6 4 0
5 4515 1953 6 5 3.5
Run Code Online (Sandbox Code Playgroud)
有时会丢失数据,但我没有NA,行根本就不存在.我需要在数据丢失时创建NA.我虽然可以通过将其转换为动物园对象来确定何时发生,并检查严格的规律性(我之前从未使用过动物园),但我使用以下代码:
z.date<-paste(CET$year, CET$month, CET$day, sep="/")
z <- read.zoo(CET, order.by= z.date )
reg<-is.regular(z, strict = TRUE)
Run Code Online (Sandbox Code Playgroud)
但答案总是如此!
谁能告诉我为什么不工作?或者甚至更好,告诉我一种在数据丢失时创建NA的方法(有或没有动物园包)?
谢谢
我想对丢失的数据进行滚动计算.
示例代码:( 为了简单起见,我给出了滚动总和的示例,但我想做一些更通用的事情.)
foo = lambda z: z[pandas.notnull(z)].sum()
x = np.arange(10, dtype="float")
x[6] = np.NaN
x2 = pandas.Series(x)
pandas.rolling_apply(x2, 3, foo)
Run Code Online (Sandbox Code Playgroud)
产生:
0 NaN
1 NaN
2 3
3 6
4 9
5 12
6 NaN
7 NaN
8 NaN
9 24
Run Code Online (Sandbox Code Playgroud)
我认为在"滚动"期间,计算中忽略了缺少数据的窗口.我希望得到一个结果:
0 NaN
1 NaN
2 3
3 6
4 9
5 12
6 9
7 12
8 15
9 24
Run Code Online (Sandbox Code Playgroud) 我有以下数据框:
df1 <- data.frame(id = 1:20, fact1 = factor(rep(c('abc','def','NA',''),5)))
df1
id fact1
1 1 abc
2 2 def
3 3 NA
4 4
5 5 abc
6 6 def
7 7 NA
8 8
9 9 abc
10 10 def
11 11 NA
12 12
13 13 abc
14 14 def
15 15 NA
16 16
17 17 abc
18 18 def
19 19 NA
20 20
Run Code Online (Sandbox Code Playgroud)
我正在尝试将所有缺失的值(''和NA')标准化为NA.但是当我使用它时:
df1[df1 == ''] <- NA
Run Code Online (Sandbox Code Playgroud)
似乎有两类NA.
df1
id fact1
1 1 abc …
Run Code Online (Sandbox Code Playgroud) 我有data.frame
34个序数和NA
变量的15,000个观测值.我正在为市场细分研究执行聚类,并且需要仅NAs
删除的行.取出userID后,我收到一条错误消息,说明只NAs
在集群之前省略了2099行.
我找到了一个删除所有NA
值的行的链接,但我需要确定2099行中的哪一行具有所有NA值.这里讨论的链接删除了包含所有NA
值的行:在data.frame中删除带有NA的行
以下是六个变量中前五个观测值的样本:
> head(Store2df, n=5)
RowNo Age Gender HouseholdIncome MaritalStatus PresenceofChildren
1 1 <NA> Male <NA> <NA> <NA>
2 2 45-54 Female <NA> <NA> <NA>
3 3 <NA> <NA> <NA> <NA> <NA>
4 4 <NA> <NA> <NA> <NA> <NA>
5 5 45-54 Female 75k-100k Married Yes
#Making a vector
> Vector1 <- Store2df$RowNo
#Taking out RowNo column
> Store2df$RowNo <- NULL
Run Code Online (Sandbox Code Playgroud)
编辑:我把结果放在一个对象,但发现代码创建了一个额外的列.单击RStudio的环境,创建了一个名为row.names的额外列,用原始行名称标记每一行.删除了几千行,新列标记了具有旧行号的新行.但是当看到新对象的头部时,我没有看到行标签.为什么row.names标签在环境中显示,但在我查看头部时却不显示?
#Remove …
Run Code Online (Sandbox Code Playgroud) 假设我有一个数据帧:
df <- data.frame(group = c('A','A','A','B','B','B'),
time = c(1,2,4,1,2,3),
data = c(5,6,7,8,9,10))
Run Code Online (Sandbox Code Playgroud)
我想要做的是将数据插入到序列中缺少的数据框中.所以在上面的例子中,我缺少time
组A的= 3的数据,time
组B的= 4的数据.我基本上想把0放在data
列的位置.
我该如何添加这些额外的行?
目标是:
df <- data.frame(group = c('A','A','A','A','B','B','B','B'),
time = c(1,2,3,4,1,2,3,4),
data = c(5,6,0,7,8,9,10,0))
Run Code Online (Sandbox Code Playgroud)
我的真实数据是几千个数据点,因此无法手动执行此操作.
我想在向量中生成缺失值,以便将缺失值按顺序分组,以模拟不同长度的缺失数据的时段.
假设我有一个10 000个值的向量,我想在向量中的随机位置生成12个NA序列,每个序列的随机长度L
在1到144之间(144个模拟在时间步长10分钟时缺失值为2天).序列不得重叠.
我怎样才能做到这一点?谢谢.
我试过结合lapply
而seq
没有成功.
具有3个不同序列的预期输出示例:
# 1 2 3 5 2 NA NA 5 4 6 8 9 10 11 NA NA NA NA NA NA 5 2 NA NA NA...
Run Code Online (Sandbox Code Playgroud)
编辑
我正在处理季节性时间序列,因此NA必须覆盖值而不是作为新元素插入.
所以我在R NA
中的lm
横截面回归的残差中遇到了一些问题.
问题本身不是NA
价值观,而是R呈现它们的方式.
例如:
test$residuals
# 1 2 4 5
# 0.2757677 -0.5772193 -5.3061303 4.5102816
test$residuals[3]
# 4
# -5.30613
Run Code Online (Sandbox Code Playgroud)
在这个简单的例子中,一个NA
值会使其中一个残差丢失.当我提取残差时,我可以清楚地看到第三个索引丢失.到目前为止这么好,这里没有抱怨.问题是相应的数字向量现在是一个较短的项目,所以第三个索引实际上是第四个.我怎样才能让R返回这些残差,即明确显示NA
而不是跳过索引?
test$residuals
# 1 2 3 4 5
# 0.2757677 -0.5772193 NA -5.3061303 4.5102816
Run Code Online (Sandbox Code Playgroud)
我需要跟踪所有个体残差,这样如果我能用这种方式提取它们会让我的生活更轻松.
我正在学习如何在Python上使用Imputer.
这是我的代码:
df=pd.DataFrame([["XXL", 8, "black", "class 1", 22],
["L", np.nan, "gray", "class 2", 20],
["XL", 10, "blue", "class 2", 19],
["M", np.nan, "orange", "class 1", 17],
["M", 11, "green", "class 3", np.nan],
["M", 7, "red", "class 1", 22]])
df.columns=["size", "price", "color", "class", "boh"]
from sklearn.preprocessing import Imputer
imp=Imputer(missing_values="NaN", strategy="mean" )
imp.fit(df["price"])
df["price"]=imp.transform(df["price"])
Run Code Online (Sandbox Code Playgroud)
但是,这会引发以下错误:ValueError:值的长度与索引的长度不匹配
我的代码有什么问题???
谢谢你的帮助
如何np.nan
在DataFrame中随机插入?假设我想在DataFrame中使用10%的空值.
我的数据如下:
df = pd.DataFrame(np.random.randn(5, 3),
index=['a', 'b', 'c', 'd', 'e'],
columns=['one', 'two', 'three'])
one two three
a 0.695132 1.044791 -1.059536
b -1.075105 0.825776 1.899795
c -0.678980 0.051959 -0.691405
d -0.182928 1.455268 -1.032353
e 0.205094 0.714192 -0.938242
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来插入空值?
我有一个数据集将丢失一些看起来像这样的数据:
id category value
1 A NaN
2 B NaN
3 A 10.5
4 C NaN
5 A 2.0
6 B 1.0
Run Code Online (Sandbox Code Playgroud)
我需要填写空值来使用模型中的数据.每次类别第一次出现时,它都是NULL.我想要的方法是对类似的情况A
和B
具有多个值的情况用该类别的平均值替换空值.对于C
仅出现一次的类别,只需填写其余数据的平均值即可.
我知道我可以简单地执行此操作C
以获得所有行的平均值,但我仍然试图为A和B执行分类方法并替换空值.
df['value'] = df['value'].fillna(df['value'].mean())
Run Code Online (Sandbox Code Playgroud)
我需要最终的df是这样的
id category value
1 A 6.25
2 B 1.0
3 A 10.5
4 C 4.15
5 A 2.0
6 B 1.0
Run Code Online (Sandbox Code Playgroud) missing-data ×10
r ×6
python ×4
pandas ×3
imputation ×2
time-series ×2
na ×1
numpy ×1
random ×1
regression ×1
scikit-learn ×1
seq ×1
vector ×1