使用Python运行SPSS分析并获取值(Python -> Spss -> Python)
我花了几天时间熟悉spss和spssaux这两个模块,它们真的是很棒的资源。不过,我觉得我在一些概念上还是有些不太明白,因为我能做一些基本的事情,比如通过spssaux.getValueLabels或者spss.DataStep()来获取值标签。
print spssaux.getValueLabels(2)
>>> {u'1': u'Neutral', u'0': u'Disagree', u'2': u'Agree'}
或者
dataset = spssDataset()
variable_list = dataset.varList
print variable_list[2].valueLabels.data
>>> {0.0: u'Disagree', 1.0: u'Neutral', 2.0: u'Agree'}
但是,我在弄清楚如何获取实际的数据值方面遇到了一些困难。
我还在努力找出如何从分析结果中提取值,并在Python中使用它们。目前我一直在使用spss.Submit()来运行分析,但我怀疑这在将值反馈给Python方面是有限的(也就是说,反馈的内容包括均值和显著性值,这些可以在Python中用来做决策)。
如果你有任何建议,请注意我需要在Python环境中操作,因为这些数据提取和分析是整合到一个更大的Python程序中的。
谢谢!
2 个回答
请查看Python参考手册中的spss.Cursor
类。关于你的工作流程,很难给出通用的建议,但如果你在SPSS文件中生成统计数据,你可以将这些数据提取出来,用在Python程序中。下面是一个例子:
*Make some fake data.
DATA LIST FREE / ID X.
BEGIN DATA
1 5
2 6
3 7
END DATA.
DATASET NAME Orig.
BEGIN PROGRAM Python.
import spss, spssdata
alldata = spssdata.Spssdata().fetchall()
print alldata
#this just grabs all of the data
END PROGRAM.
*Make your mean in SPSS syntax.
AGGREGATE OUTFILE=* MODE=ADDVARIABLES
/BREAK
/MeanX = MEAN(X).
BEGIN PROGRAM Python.
var = ["MeanX"]
alldata2 = spssdata.Spssdata(var).fetchone()
print alldata2
#This just grabs the mean of the variable you created
END PROGRAM.
spss.Cursor类是一个比较底层的类,用起来有点复杂。相比之下,spssdata.Spssdata类提供了一个更友好的界面。你还可以使用spss.Dataset类,它是基于Spssdata设计的,功能更多,但速度稍慢。
如果你想获取查看器的输出,最基本的工具是OMS,它可以把数据写入xml工作区或者新的数据集。你可以使用spssaux模块中的一些函数来简化这个过程。createDatasetOuput可以帮助你从表格中创建数据集。createXmlOutput和它的搭档getValuesFromXmlWorkspace则是利用xml工作区的。在这之下,spss.EvaluateXPath这个接口可以让你从表格中提取你想要的任何输出。
另外,如果你主要是在Python的环境中工作,你有没有发现外部模式?这个模式允许你从外部的Python程序运行统计分析。你可以使用你的Python开发工具与Python代码进行交互和调试。只需导入spss模块和其他需要的模块,然后根据需要使用提供的接口。不过在外部模式下,没有查看器,所以你不能使用SpssClient模块的接口。