小编Jon*_*han的帖子

Pandas read_stata()包含大型.dta文件

我正在使用大约3.3千兆字节的Stata .dta文件,因此它很大但不会过大.我有兴趣使用IPython并尝试使用Pandas导入.dta文件,但是有些事情正在发生.我的盒子有32千兆字节的RAM,并试图加载.dta文件导致所有使用的RAM(约30分钟后)和我的计算机停止运行.这不是'感觉'正确,因为我能够使用外部包中的read.dta()打开R中的文件没有问题,并且使用Stata中的文件很好.我使用的代码是:

%time myfile = pd.read_stata(data_dir + 'my_dta_file.dta')
Run Code Online (Sandbox Code Playgroud)

我在Enthought的Canopy程序中使用IPython.'%time'的原因是因为我有兴趣对R的read.dta()进行基准测试.

我的问题是:

  1. 有什么我做错了导致熊猫出现问题吗?
  2. 是否有解决方法将数据导入Pandas数据帧?

python stata pandas

10
推荐指数
2
解决办法
1万
查看次数

ddply到data.table中等效的多个列

我是data.table包的忠实粉丝,我无法将plyr包的ddply中的一些代码转换为data.table中的等价物.ddply的代码是:

dfx <- data.frame(
  group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
  sex = sample(c("M", "F"), size = 29, replace = TRUE),
  age = runif(n = 29, min = 18, max = 54),
  age2 = runif(n = 29, min = 18, max = 54)
)

ddply(dfx, .(group, sex), numcolwise(sum))
Run Code Online (Sandbox Code Playgroud)

我想要做的是在多个列之间求和,而不必手动指定列名.data.table包中的手册等价物是:

dfx.dt = data.table(dfx)
dfx.dt[ , sum.age := sum(age), by="group,sex"]
dfx.dt[ , sum.age2 := sum(age2), by="group,sex"]
dfx.dt[!duplicated(dfx.dt[ , {list(group, sex)}]), ]
Run Code Online (Sandbox Code Playgroud)

明确地说,我的问题是"有没有办法在data.table中执行等效的ddply代码?"

非常感谢任何帮助,谢谢.

r plyr data.table

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

标签 统计

data.table ×1

pandas ×1

plyr ×1

python ×1

r ×1

stata ×1