Конвертировать файлы.CSV в файлы.DTA на Python
Я хочу автоматизировать процесс преобразования многих файлов.CSV в файлы.DTA через Python. Файлы.DTA - это тип файла, который обрабатывается языком статистики Stata.
Однако я не смог найти способ сделать это.
R
язык имеет запись (.dta), которая позволяет преобразовывать dataFrame в R в файл.dta, и есть порт для языка R из Python через RPy, но я не могу понять, как использовать RPy для доступа к написать (.dta) функцию в R.
Есть идеи?
2 ответа
Вам нужен rpy2 для Python, а также foreign
пакет установлен в R. Вы делаете это, запустив R и набрав install.packages("foreign")
, Затем вы можете выйти из R и вернуться к Python.
Тогда это:
import rpy2.robjects as robjects
robjects.r("require(foreign)")
robjects.r('x=read.csv("test.csv")')
robjects.r('write.dta(x,"test.dta")')
Вы можете построить строку, переданную robjects.r
из переменных Python, если хотите, что-то вроде:
robjects.r('x=read.csv("%s")' % fileName)
(копирование из моего ответа на предыдущий вопрос)
Объекты 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 МБ). Ответ Spacedman может выглядеть менее элегантно, но, вероятно, он более эффективен.