2011-09-21 1394 views
11

我想知道是否有人知道一個Python包,它允許您保存統計數據分析軟件Stata的.dta格式的numpy數組/數組。這真的會加快我在一個系統中的幾個步驟。在python中保存.dta文件

+0

究竟是.dta文件應該是什麼? –

+0

.dta文件是與數據關聯的文件格式,主要用於統計計算程序STATA。我對文件類型不夠詳細,但可能在這裏有更多的細節:http://filext.com/file-extension/DTA – mike

+1

您似乎有一種誤解,即所有文件的擴展名爲「.dta」有一個共同的格式。這不是真的。您感興趣的文件格式特定於STATA,似乎沒有用於任何其他軟件。這裏是[格式文檔](http://www.stata.com/help.cgi?data),我非常懷疑存在能夠編寫這種格式的庫。 –

回答

2

pandas DataFrame對象現在有一個「to_stata」方法。所以,你可以爲實例來

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

免責聲明:第一步是相當緩慢(在我的測試,大約1分鐘讀51 MB DTA - 又見this question),第二個產生文件,該文件可以比原來的方式更大(在我的測試中,大小從51 MB到111MB)。 This answer可能看起來不那麼優雅,但它可能更有效。

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讀者應該在不久的將來加入。