Преобразование большого набора данных SAS в hdf5

У меня есть несколько больших (> 10 ГБ) наборов данных SAS, которые я хочу преобразовать для использования в пандах, предпочтительно в HDF5. Существует много разных типов данных (даты, числовые, текстовые), а некоторые числовые поля также имеют разные коды ошибок для отсутствующих значений (т.е. значения могут быть ., .E, .C и т. д.). Я надеюсь сохранить имена столбцов а также метаданные меток. Кто-нибудь нашел эффективный способ сделать это?

Я пытался использовать MySQL в качестве моста между ними, но при передаче я получил несколько ошибок Out of range, к тому же это было невероятно медленно. Я также пытался экспортировать из SAS в формате Stata .dta, но SAS (9.3) экспортирует в старый формат Stata, который несовместим с read_stat() в pandas. Я также попробовал пакет sas7bdat, но, судя по описанию, он не был широко протестирован, поэтому я хотел бы загрузить наборы данных другим способом и сравнить результаты, чтобы убедиться, что все работает правильно.

Дополнительные сведения: наборы данных, которые я хочу преобразовать, принадлежат CRSP, Compustat, IBES и TFN из WRDS.


person vgregoire    schedule 10.02.2014    source источник


Ответы (2)


Раньше мне не везло с этим. Мы (там, где я работаю) просто используем файлы, разделенные табуляцией, для передачи между SAS и Python — и делаем это часто.

Тем не менее, если вы работаете в Windows, вы можете попытаться установить соединение ODBC и записать файл таким образом.

person DomPazz    schedule 10.02.2014
comment
Возможно, лучше всего использовать какие-то файлы csv/delimited. SAS заинтересована в предотвращении совместимости, поэтому мне не нравятся ваши шансы на хороший и эффективный перевод. Несмотря на то, что это коммерческий продукт, я слышал хорошие отзывы людей, использующих эту программу: stattransfer.com/stattransfer/ форматы.html - person thelatemail; 10.02.2014

Вас может заинтересовать грязный хак, использованный в форке sas7bdat. Он предоставляет метод read_sas для чтения файлов sas во фрейм данных pandas.

оригинальный sas7bdat: http://git.pyhacker.com/sas7bdat

разветвление с read_sas: https://github.com/openfisca/sas7bdat

Улучшения приветствуются!

person benjello    schedule 02.07.2014