Мне интересно, знает ли кто-нибудь пакет Python, который позволяет сохранять массивы numpy/recarrays в формате .dta
программного обеспечения для анализа статистических данных Stata. Это действительно ускорит несколько шагов в системе, которая у меня есть.
Сохранить .dta файлы в python
Ответ 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. Возможно, комбинация этих инструментов может помочь вам.