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

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

3 ответа

Решение

Объекты 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 МБ). Этот ответ может выглядеть менее элегантно, но, вероятно, он более эффективен.

Пакет 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 Читатель должен быть добавлен в ближайшее время.

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

Другие вопросы по тегам