Подтвердить что ты не робот

Есть ли модуль Python для открытия файлов SPSS?

Есть ли модуль для Python для открытия файлов IBM SPSS (например .sav)? Было бы здорово, если бы что-то обновленное, которое не требует каких-либо дополнительных DLL файлов/библиотек.

4b9b3361

Ответ 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

Здесь вы, вероятно, интересуетесь пакетами

Ответ 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()

Ответ 7

Вы можете использовать интерфейс python для R, а затем импортировать данные с помощью read.spss в library(foreign).