用python保存.dta文件

用python保存.dta文件,python,numpy,stata,Python,Numpy,Stata,我想知道是否有人知道一个Python包,它允许您将numpy数组/重新数组保存在统计数据分析软件Stata的.dta格式中。这将大大加快我现有系统中的几个步骤。我所能找到的唯一方法仅提供对.dta文件的只读访问。然而,Rforeign库提供了一个函数,并为R提供了一个Python接口。也许这些工具的组合可以帮助您。该软件包包括一个Stata数据文件读取器,该读取器部分依赖于@Sven指出的PyDTA。特别是,genfromdta()将返回一个ndarray,例如。 来自Python 2.7/st

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

我所能找到的唯一方法仅提供对
.dta
文件的只读访问。然而,R
foreign
库提供了一个函数,并为R提供了一个Python接口。也许这些工具的组合可以帮助您。

该软件包包括一个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'>
并在Stata中读取,无需字典文件,如下所示:

. insheet using auto.txt, clear
我相信不久的将来应该添加一个
*。dta
读取器。

数据帧对象现在有一个“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)。可能看起来不那么优雅,但可能效率更高。

一个.dta文件到底应该是什么?一个.dta文件是一种与数据相关联的文件格式,主要用于统计计算程序STATA。我对文件类型的了解还不够详细,但这里可能有更多的细节:您似乎有一种误解,即所有扩展名为
.dta
的文件都有一种通用格式。事实并非如此。您感兴趣的文件格式是STATA特有的,似乎没有在任何其他软件中使用。这是一个,我非常怀疑是否存在能够编写这种格式的库。可能您可以使用STATA导入用Python生成的CSV文件。我可以使用infle/insheet命令将.CSV文件引入STATA,但是.dta文件的追加(即堆叠)速度比引入.CSV、保存它们的过程快很多倍,引入其他.csv(这是一个相当低效的程序,但对于我的团队的研究是必要的)。
import pandas as pd
df = pd.read_stata('my_data_in.dta')
df.to_stata('my_data_out.dta')