13

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

4

3 回答 3

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应该在不久的将来添加一个读者。

于 2012-01-29T19:24:57.323 回答
7

我能找到的唯一一个用于 STATA 互操作性的 Python 库.dta仅提供对文件的只读访问。然而,Rforeign库提供了一个函数write.dta,而RPy为 R 提供了一个 Python 接口。也许这些工具的组合可以帮助你。

于 2011-09-21T18:45:45.337 回答
3

pandas DataFrame 对象现在有一个“to_stata”方法。所以你可以做例如

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

免责声明:第一步很慢(在我的测试中,读取 51 MB dta 大约需要 1 分钟 - 另见这个问题),第二步生成的文件可能比原始文件大得多(在我的测试中,大小从 51 MB 到 111MB)。这个答案可能看起来不那么优雅,但它可能更有效。

于 2014-04-15T08:57:46.600 回答