SPSS Python
SPSS can call an external Python process for complex programming.
Setup
Running Python from SPSS
Recent versions of SPSS come with a vendored distribution of Python, simplifying the setup.
Set the location of Python distrutions in Edit > Options > File locations. Depending on the version of SPSS, options for Python 2 and/or Python 3 may be available. Recent versions only allow one configuration, meant for Python 3.
Running SPSS from Python
import sys sys.path.insert(0,r'<SPSS_HOME>\Python3\Lib\site-packages')
Usage
The spss module offers a basic interface to SPSS.
begin program python3. import spss varlist = [] for i in range(spss.GetVariableCount()): if spss.GetVariableMeasurementLevel(i) == 'scale': varlist.append(spss.GetVariableName(i)) spss.Submit(["DESCRIPTIVES VARIABLES=", " ".join(varlist), "."]) end program.
The spssdata module is a simple interface to data.
begin program python3. import spssdata with spssdata.Spssdata(['foo','bar','baz']) as d: for r in d: print(r) end program.
The spssaux module offers some higher-level interfaces.
begin program python3. import spss, spssaux for v in spssaux.GetVariableNamesList(): spss.Submit(["RENAME VARIABLES (", v, "=", v.lower(), ")."]) end program.
To call SPSS from a Python process, try:
import spss, SpssClient SpssClient.StartClient() spss.Submit("SHOW UNICODE.") SpssClient.Exit() SpssClient.StopClient()
When calling SPSS from a Python process, it can be helpful to establish a data step so that manipulations to data objects persist.
import spss, SpssClient SpssClient.StartClient() spss.StartDataStep() dataset = spss.Dataset() dataset.varlist.append('foo',0) var = dataset.varlist['foo'] var.format = (5,2,0) col = dataset.varlist['foo'].index n = len(dataset.cases) for row in range(n): dataset.cases[row, col] = 1.23 spss.EndDataStep() SpssClient.Exit() SpssClient.StopClient()