是否有用于打开SPSS文件的Python模块?

是否有用于打开SPSS文件的Python模块?,python,dataset,statistics,python-module,spss,Python,Dataset,Statistics,Python Module,Spss,Python是否有打开IBM SPSS(即sav)文件的模块?如果有最新的东西不需要任何附加的dll文件/库,那就太好了。也许您会发现这很有用:但是使用IBM库的好处是,它们可以正确地获得这种相当复杂的二进制文件格式。它们是免费的,减轻了您为这种格式编写代码的负担,并且许可证允许您重新分发它们。您还可以问什么?您可以使用,然后使用库(外文)中的read.spss导入数据,这取决于您想做什么--使用Python中的R相关命令处理数据,或者切换到Python--相关线程上的可以轻松地进行调整以满足您

Python是否有打开IBM SPSS(即sav)文件的模块?如果有最新的东西不需要任何附加的dll文件/库,那就太好了。

也许您会发现这很有用:

但是使用IBM库的好处是,它们可以正确地获得这种相当复杂的二进制文件格式。它们是免费的,减轻了您为这种格式编写代码的负担,并且许可证允许您重新分发它们。您还可以问什么?

您可以使用,然后使用
库(外文)
中的
read.spss
导入数据,这取决于您想做什么--使用Python中的R相关命令处理数据,或者切换到Python--相关线程上的可以轻松地进行调整以满足您的需要

否则,包括一个。下面是一个使用Peat和Barton数据集的示例:

>>> 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

作为对后来发现的人们(像我一样)的提醒:
pandas.rpy
在最新版本的pandas(>0.16)中被弃用。该页面包含有关更新代码以使用
rpy2
界面的信息

以下是您可能感兴趣的软件包

  • 在比特桶上

  • Python包中的索引Repo


我和@Pyderman有同样的问题,关于如何为熊猫(>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()

我发布了一个python包“pyreadstat”,它读取SPS(sav、zsav和por)、Stata和SAS文件。它是C库ReadStat的包装器,因此速度非常快。Readstat是R库避风港后面使用的库,它使用广泛且非常健壮

这个包裹是自动包装的。它不需要使用R(无需安装传统应用程序),也不依赖于IBM DLL或其他外部库

例如,要读取SPSS sav文件,您需要执行以下操作:

import pyreadstat

df, meta = pyreadstat.read_sav("/path/to/sav/file.sav")
df是一个数据帧。Meta包含元数据,如变量标签或值标签。 read_sav同时读取sav和zsav(压缩)文件。还有一个函数read_por用于旧的por(便携)文件


您可以在这里找到它:

当您拥有熊猫>=0.25.0时,您现在终于可以执行以下操作:

这需要使用librarypyreadstat,因此您可能必须首先安装该库:

pip install pyreadstat
有关pd.read_spss()参数的额外信息。:

参数
----------
路径:字符串或路径
文件路径

usecols:类似列表,可选
返回列的子集。如果没有,则返回所有列。

转换分类:bool,默认为True
将分类列转换为pd.Category。

返回值
-------数据帧


作为pr导入pyreadstat

作为pd进口熊猫

pd.read_spss(“您的路径和文件名”)

#确保是的,萨瓦

#它将返回一个数据帧


#确保已安装pyreadstat

如果需要,可能会有一个重复的活动状态HI,Bakuriu。它不是重复的,因为我没有引用Django框架,我说的是打开,而不是导出/编写文件,我提到了对不需要外部库/DLL的最新版本的偏好。这些问题之间有一些共同点,但它们可以引出不同的、相似的回答。谢谢你的链接,不过我还是尽量避免使用dll文件,如果可能的话。另一个答案是引用Django,但它实际上与此无关。由于导出需要能够写入文件,因此您也可以读取该文件的可能性很高。环顾四周,我坚信您只有一个选择:使用IBM发布的
.dll
。我找不到该文件格式的任何开放规范,这意味着读取这些文件的唯一方法是使用IBM的库。您可以尝试对格式进行反向工程,但这需要更多的时间和精力。谢谢,巴库留。这很不幸,但正如你所说的,看起来IBM的.dll版本很可能是要使用的。谢谢,SM,但是该模块需要一个额外的dll文件,这是我试图避免的。是否有一个模块(最好是最新的)包含了所有必要的功能而不使用外部库?对不起,我不知道或者使用google找不到。为什么使用外部图书馆是你无法忍受的?我想你每天都会使用很多dll,不管是Python还是其他任何东西,包括操作系统。如果其他选项都用尽了,我不会排除使用dll的可能性,但如果可能的话,我希望避免使用dll。Lamps1829说,依赖性越小,事情就越干净,出错的几率就越低,而且越不可能把事情做好。IBM为运行SPSS Statistics的所有平台免费提供的i/o模块使用的代码与Statistics本身使用的代码相同,因此它们保证同步。上面提到的Python读写器实用程序也使用这些库。随着sav文件格式中添加新闻功能,这些库也会得到更新。上一次我查看R库时,并没有完全正确。我请求ARM支持:)我们可以在哪里找到IBM库?您可以通过IBM预测分析社区网站()上的下载链接获得它们。感谢您的分享。因此,
com.convert_robj(rdf)
应替换为
pandas2ri.ri2py(rdf)
。但是关于
com.robj.r('foreign::read.spss(“%s”,to.data.frame=TRUE)”%filename)呢?
?欢迎来到这里。你的答案如何在现有答案的基础上增加内容?已经涵盖了您编写的所有内容。这就是我喜欢Python的原因。到处乱跑,终于想到让我们用Python。第一次就成功了。谢谢
pip install pyreadstat