Jon*_*han 10 python stata pandas
我正在使用大约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()进行基准测试.
我的问题是:
这是一个对我来说很方便的小功能,使用了一些pandas在最初提出问题时可能无法使用的功能:
def load_large_dta(fname):
import sys
reader = pd.read_stata(fname, iterator=True)
df = pd.DataFrame()
try:
chunk = reader.get_chunk(100*1000)
while len(chunk) > 0:
df = df.append(chunk, ignore_index=True)
chunk = reader.get_chunk(100*1000)
print '.',
sys.stdout.flush()
except (StopIteration, KeyboardInterrupt):
pass
print '\nloaded {} rows'.format(len(df))
return df
Run Code Online (Sandbox Code Playgroud)
我在100分钟内加载了一个11G Stata文件,如果我厌倦了等待和击中,那么有一些东西可以玩cntl-c.
问题1.
对此我无话可说。
问题2。
考虑使用 Stata 命令导出.dta 文件,然后在 pandas 中使用。事实上,您可以获取新创建的文件,将其用作 R 的输入并与 pandas 进行比较(如果感兴趣的话)。可能进行了比 . 更多的测试。.csvoutsheetexport delimitedread_csv().csvread_csvread_stata
运行help outsheet以获取导出的详细信息。
| 归档时间: |
|
| 查看次数: |
10271 次 |
| 最近记录: |