mik*_*ike 12 python numpy stata
我想知道是否有人知道一个Python包,它允许你以.dta统计数据分析软件Stata 的格式保存numpy数组/重组.这真的会加快我所拥有的系统中的几个步骤.
所述scikits.statsmodels包包括用于Stata的数据文件的读取器,其部分依赖于PyDTA由@Sven指出.特别是,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'>
Run Code Online (Sandbox Code Playgroud)
该savetxt()函数可以依次用于将数组保存为文本文件,可以在Stata中导入.例如,我们可以将上面的内容导出为
>>> sm.iolib.savetxt('auto.txt', arr, fmt='%2s', delimiter=",")
Run Code Online (Sandbox Code Playgroud)
并在没有字典文件的Stata中读取它,如下所示:
. insheet using auto.txt, clear
Run Code Online (Sandbox Code Playgroud)
我相信*.dta应该在不久的将来添加一个读者.
我发现唯一的STATA互操作性Python库只提供对.dta文件的只读访问.foreign然而,R 库提供了一个函数write.dta,RPy为R提供了一个Python接口.也许这些工具的组合可以帮助你.
pandas DataFrame 对象现在有一个“to_stata”方法。所以你可以做例如
import pandas as pd
df = pd.read_stata('my_data_in.dta')
df.to_stata('my_data_out.dta')
Run Code Online (Sandbox Code Playgroud)
免责声明:第一步非常慢(在我的测试中,读取 51 MB 的 dta 大约需要 1 分钟 - 另请参阅此问题),第二步生成的文件可能比原始文件大得多(在我的测试中,大小从 51 MB 变为 111MB)。这个答案可能看起来不太优雅,但可能更有效。