Есть ли модуль для Python для открытия файлов IBM SPSS (например .sav)? Было бы здорово, если бы что-то обновленное, которое не требует каких-либо дополнительных DLL файлов/библиотек.
Есть ли модуль Python для открытия файлов SPSS?
Ответ 1
В зависимости от того, что вы хотите сделать - обрабатывайте данные с помощью R-связанных команд из rpy2 или переключитесь на Python-- решение, предоставленное @Spacedman в соответствующем потоке, может быть легко адаптировано в соответствии с вашими потребностями.
В противном случае Pandas включает удобную оболочку для rpy2
. Вот пример использования с массивом Peat и Barton weights.sav
:
>>> import pandas.rpy.common as com
>>> filename = "weights.sav"
>>> w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename)
>>> w = com.convert_robj(w)
>>> w.head()
ID WEIGHT LENGTH HEADC GENDER EDUCATIO PARITY
1 L001 3.95 55.5 37.5 Female tertiary 3 or more siblings
2 L003 4.63 57.0 38.5 Female tertiary Singleton
3 L004 4.75 56.0 38.5 Male year12 2 siblings
4 L005 3.92 56.0 39.0 Male tertiary One sibling
5 L006 4.56 55.0 39.5 Male year10 2 siblings
Ответ 2
В качестве примечания для выводов для людей позже (например, я): pandas.rpy
устарел в новейших версиях pandas ( > 0,16), как указано . Эта страница содержит информацию об обновлении кода для использования интерфейса rpy2
.
Ответ 3
Но преимущество использования библиотек IBM заключается в том, что они получают этот довольно сложный формат двоичного файла. Они бесплатны, освобождают вас от бремени написания кода для этого формата, и лицензия позволяет вам перераспределять их. Что еще вы можете спросить?
Ответ 4
Здесь вы, вероятно, интересуетесь пакетами
-
savReaderWriter на Bitbucket
-
savReaderWriter 3.4.2 в Python Индекс пакета Repo
Ответ 5
У меня был тот же вопрос, что и @Pyderman о том, как обновить его для pandas ( > 0.16). Вот что я придумал:
from rpy2.robjects import pandas2ri, r
filename = 'weights.sav'
w = r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename)
df = pandas2ri.ri2py(w)
df.head()
Ответ 6
Возможно, вы найдете это полезным: http://code.activestate.com/recipes/577811-python-reader-writer-for-spss-sav-files-linux-mac-/
Ответ 7
Вы можете использовать интерфейс python для R, а затем импортировать данные с помощью read.spss
в library(foreign)
.