将SPSS数据集导入Python

2024-10-05 15:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有什么方法可以将SPSS数据集导入Python,最好是NumPy-recarray格式? 我环顾四周,但找不到任何答案。


Tags: 数据方法答案numpy格式spssrecarray
4条回答

选项1 正如rkbarney指出的,Python savReaderWriter可以通过pypi获得。我遇到了两个问题:

  1. 除了看似纯粹的python实现之外,它还依赖于许多额外的库。SPSS文件几乎每种情况下都由IBM提供的SPSS I/O模块读取和写入。这些模块因平台而异,根据我的经验,“pip install savrreaderwriter”并不能让它们在操作系统X上运行。
  2. savrreaderwriter的开发虽然没有死,但比人们所希望的要落后。这使第一个问题复杂化。它依赖于一些不推荐的包来提高速度,并在导入savrreaderwriter时给出一些警告(如果它们不可用)。今天不是一个大问题,但将来可能会有麻烦,因为IBM会继续更新SPSS I/O模块以处理新的SPSS格式(如果内存可用,它们已经在版本21或22上)。

选项2 我选择用R作为中间人。使用rpy2,我设置了一个简单的函数,将文件读取到R数据帧中,并将其再次输出为CSV文件,然后导入python。有点鲁比·戈德伯格,但很管用。当然,这需要R,在您的环境中安装R也很麻烦(而且对于不同的平台有不同的二进制文件)。

选项1 正如rkbarney指出的,Python savReaderWriter可以通过pypi获得。我遇到了两个问题:

  1. 除了看似纯粹的python实现之外,它还依赖于许多额外的库。SPSS文件几乎每种情况下都由IBM提供的SPSS I/O模块读取和写入。这些模块因平台而异,根据我的经验,“pip install savrreaderwriter”并不能让它们在操作系统X上运行。
  2. savrreaderwriter的开发虽然没有死,但比人们所希望的要落后。这使第一个问题复杂化。它依赖于一些不推荐的包来提高速度,并在导入savrreaderwriter时给出一些警告(如果它们不可用)。今天不是一个大问题,但将来可能会有麻烦,因为IBM继续更新SPSS I/O模块以处理新的SPSS格式(如果内存可用,它们已经在版本21或22上)。

选项2 我选择用R作为中间人。使用rpy2,我设置了一个简单的函数,将文件读入R数据帧,并再次将其输出为CSV文件,然后导入python。有点鲁比·戈德伯格,但很管用。当然,这需要R,在您的环境中安装R也很麻烦(而且对于不同的平台有不同的二进制文件)。

也许这会有帮助: 用于spss sav文件的Python reader+writer(Linux、Mac&Windows) http://code.activestate.com/recipes/577811-python-reader-writer-for-spss-sav-files-linux-mac-/

SPSS与Python有广泛的集成,但这意味着要与SPSS(现在称为ibmspsstatistics)一起使用。有一个SPSS ODBC驱动程序可以与pythonodbc支持一起用于读取sav文件。

相关问题 更多 >