我想知道是否有人知道Python包允许您以统计数据分析软件Stata的.dta
格式保存numpy数组/重组。这真的会加速我所拥有的系统中的几个步骤。
答案 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.dta
,RPy为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可能看起来不那么优雅,但它可能更有效率。