Tag: dataframe

在R中向数据框添加一列

我有以下数据框( df ) start end 1 14379 32094 2 151884 174367 3 438422 449382 4 618123 621256 5 698271 714321 6 973394 975857 7 980508 982372 8 994539 994661 9 1055151 1058824 . . . . . . . . . 和数值( vec )的长vector。 我想添加到每一行的另一列,在vec中的相应位置的值的意思。 例如,第一行将有mean(vec[14379:32094]) 。 我曾尝试玩transform但无法完成这个简单的任务。

使matplotlib从Python的pandas中的数据框分散绘图

在Python中使用matplotlib从pandas数据matplotlib制作一系列散点图的最佳方法是什么? 例如,如果我有一个数据框df有一些感兴趣的列,我发现自己通常转换所有的数组: import matplotlib.pylab as plt # df is a DataFrame: fetch col1 and col2 # and drop na rows if any of the columns are NA mydata = df[["col1", "col2"]].dropna(how="any") # Now plot with matplotlib vals = mydata.values plt.scatter(vals[:, 0], vals[:, 1]) 在绘图之前把所有东西都转换成数组的问题是,它迫使你摆脱数据框。 考虑以下两种使用情况,其中具有完整的数据框对绘图至关重要: 例如,如果您现在想要查看col3所有值,以查找在调用中绘制的相应值以scatter ,并按照该值对每个点(或大小)进行着色? 你必须回去,拉出col1,col2的非na值col1,col2并检查它们相应的值。 有没有一种方法来绘制,同时保留数据框? 例如: mydata = df.dropna(how="any", subset=["col1", "col2"]) […]

如何组合两个基于两列的数据框?

我知道我可以使用plyr和它的朋友来合并dataframe,并merge ,但到目前为止,我不知道如何合并两列数据框与多列基于2列?

检测并排除Pandas数据框中的exception值

我有一个只有几列的pandas数据框。 现在我知道某些行是基于某个列值的exception值。 例如列 – “Vol”具有12.xx左右的所有值和4000的值 现在我想排除那些有这样的卷列的行。 所以基本上我需要把一个filter,以便我们select所有行中的某一列的值是在平均值的3个标准偏差内。 什么是一个优雅的方式来实现这一目标。

为什么plyr这么慢?

我想我错误地使用plyr。 有人可以告诉我,如果这是“有效的”plyr代码? require(plyr) plyr <- function(dd) ddply(dd, .(price), summarise, ss=sum(volume)) 一个小背景:我有几个大的聚合问题,我已经注意到,他们每个都花了一些时间。 为了解决这个问题,我对R中的各种聚合过程的performance感兴趣。 我testing了一些聚合方法 – 发现自己整天都在等待。 当我终于找回结果的时候,我发现了plyr方法和其他方法之间的巨大差距 – 这让我认为我做了一些错误的事情。 我运行下面的代码(我以为我会在检查新的数据包的时候): require(plyr) require(data.table) require(dataframe) require(rbenchmark) require(xts) plyr <- function(dd) ddply(dd, .(price), summarise, ss=sum(volume)) t.apply <- function(dd) unlist(tapply(dd$volume, dd$price, sum)) t.apply.x <- function(dd) unlist(tapply(dd[,2], dd[,1], sum)) l.apply <- function(dd) unlist(lapply(split(dd$volume, dd$price), sum)) l.apply.x <- function(dd) unlist(lapply(split(dd[,2], dd[,1]), sum)) […]

在R中合并两个列表

我有两个名单 first = list(a = 1, b = 2, c = 3) second = list(a = 2, b = 3, c = 4) 我想合并这两个列表,所以最终的产品是 $a [1] 1 2 $b [1] 2 3 $c [1] 3 4 有一个简单的function来做到这一点?

确定列中的NA值的数量

我想要计算dataframe列中的NA值的数量。 说我的数据框叫做df ,而我正在考虑的列的名字是col 。 我提出的方式如下: sapply(df$col, function(x) sum(length(which(is.na(x))))) 这是一个很好/最有效的方法来做到这一点?

在R中selectdata.frame的前4行

我怎样才能selectdata.frame的前4行: Weight Response 1 Control 59 0.0 2 Treatment 90 0.8 3 Treatment 47 0.1 4 Treamment 106 0.1 5 Control 85 0.7 6 Treatment 73 0.6 7 Control 61 0.2

省略包含NA的特定列的行

我想知道如何在数据框架中省略NA值,但只在我感兴趣的一些列中。 例如, DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22)) 但是我只想省略y是NA的数据,所以结果应该是 xyz 1 1 0 NA 2 2 10 33 na.omit似乎删除所有包含任何NA行。 有人能帮我解决这个简单的问题吗? 但是如果现在我改变这个问题: DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA)) 如果我只想省略x=na或z=na ,我可以在哪里放置| 在function?

复制data.frame的每一行,并指定每行的复制次数

df <- data.frame(var1=c('a', 'b', 'c'), var2=c('d', 'e', 'f'), freq=1:3) 什么是最简单的方法来扩大上面的data.frame的前两列,以便每一行出现在“freq”列中指定的次数? 换句话说,从这个angular度来看: df var1 var2 freq 1 ad 1 2 be 2 3 cf 3 对此: df.expanded var1 var2 1 ad 2 be 3 be 4 cf 5 cf 6 cf