Подтвердить что ты не робот

Сохранить .dta файлы в python

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

4b9b3361

Ответ 1

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

Ответ 2

Пакет 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'>

Функция savetxt() может использоваться, в свою очередь, для сохранения массива в виде текстового файла, который может быть импортирован в Stata. Например, мы можем экспортировать вышеуказанное как

>>> sm.iolib.savetxt('auto.txt', arr, fmt='%2s', delimiter=",")

и прочитайте его в Stata без файла словаря следующим образом:

. insheet using auto.txt, clear

Я считаю, что читатель *.dta должен быть добавлен в ближайшем будущем.

Ответ 3

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