Спасать.файлы dta в python

Мне интересно, знает ли кто-нибудь пакет Python, который позволяет сохранять массивы numpy/recarrays в .dta формат программного обеспечения статистического анализа данных Stata. Это действительно ускорит несколько шагов в системе, которую я имею.

3 ответов


панды объекты 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-Также см. этот вопрос), а второй создает файл, который может быть намного больше исходного (в моем тесте размер идет от 51 МБ до 111 МБ). ответ может выглядеть менее элегантно, но это, наверное, больше эффективный.


на scikits.statsmodels пакет включает в себя считыватель файлов данных Stata, который частично полагается на PyDTA, как указано @Sven. В частности, genfromdta() возвращает ndarray, например из Python 2.7/0.3.1 statsmodels:

>>> 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 читатель должен быть добавлен в ближайшем будущем.


только библиотека Python для взаимодействия STATA я мог бы найти просто предоставляет доступ только для чтения к .dta файлы. R foreign библиотека, однако, предоставляет функцию write.dta и rpy имеют предоставляет интерфейс Python R. возможно, комбинация этих инструментов может вам помочь.