在python中保存.dta文件

时间:2011-09-21 16:42:57

标签: python numpy stata

我想知道是否有人知道Python包允许您以统计数据分析软件Stata的.dta格式保存numpy数组/重组。这真的会加速我所拥有的系统中的几个步骤。

3 个答案:

答案 0 :(得分:8)

scikits.statsmodels包中包含一个Stata数据文件的阅读器,它部分依赖于@Sven指出的PyDTA。特别是,genfromdta()将返回ndarray,例如 来自Python 2.7 / statsmodels 0.3.1:

>>> import scikits.statsmodels.api as sm
>>> arr = sm.iolib.genfromdta('/Applications/Stata12/auto.dta')
>>> type(arr)
<type 'numpy.ndarray'>

可以依次使用savetxt()函数将数组保存为文本文件,可以在Stata中导入。例如,我们可以将上面的内容导出为

>>> sm.iolib.savetxt('auto.txt', arr, fmt='%2s', delimiter=",")

并在没有字典文件的Stata中读取它,如下所示:

. insheet using auto.txt, clear

我相信应该在不久的将来添加*.dta读者。

答案 1 :(得分:6)

我能找到的唯一Python library for STATA interoperability仅提供对.dta个文件的只读访问权限。然而,R foreign库提供了一个函数write.dtaRPy为R提供了一个Python接口。也许这些工具的组合可以帮助你。

答案 2 :(得分:2)

pandas DataFrame对象现在有一个&#34; to_stata&#34;方法。所以你可以做例如

import pandas as pd
df = pd.read_stata('my_data_in.dta')
df.to_stata('my_data_out.dta')

免责声明:第一步非常慢(在我的测试中,读取51 MB dta大约需要1分钟 - 另见this question),第二步产生的文件可以比原来的大(在我的测试中,大小从51 MB到111MB)。 This answer可能看起来不那么优雅,但它可能更有效率。