Gerne beraten wir Sie auch telefonisch & geben Ihnen eine kostenfreie persönliche Auskunft zu Ihrem Projekt.

X

In SPSS mit Python programmieren: Mühselige Klickarbeit automatisieren

In diesem Artikel möchten wir Ihnen die Verwendung von Python in der SPSS Syntax erläutern, wie Sie mit Python programmieren und mühselige Arbeitsschritte automatisieren können. Dazu erläutern wir in diesem Artikel erst die Grundlagen zur Verwendung von Python in SPSS und illustrieren anschließend die Einsatzmöglichkeiten von Python anhand eines Anwendungsbeispiels.

Python ist eine Programmiersprache die innerhalb einer SPSS Syntax verwendet werden kann. Wenn Sie in SPSS mit Python programmieren, stehen Ihnen wesentlich flexiblere und umfangreichere Befehle zur Auswahl als bei der herkömmlichen SPSS-Befehlssprache. Somit können Sie mit Python praktisch jede Art von Arbeitsvorgang automatisieren und sich oft mühselige Klickarbeit ersparen.

So können Sie in SPSS Python gezielt einsetzen

Um die SPSS Programmierung mit Python zu ermöglichen, benötigen Sie IBM SPSS Statistics Essentials for Python. Wie Sie vorgehen müssen um diese zu installieren, hängt von ihrer SPSS Version ab.

SPSS VersionInstallation
22 oder neuerKeine weitere Installation nötig
Python Essentials Plugin ist bereits vorhanden
21Python Essentials Plugin muss während der Installation von SPSS mit installiert werden. Sollten Sie diese während der SPSS Installation nicht ausgewählt haben, müssen Sie SPSS neu installieren.
(Weiter unten finden Sie eine Methode um zu testen, ob SPSS Essentials installiert wurde.)
20Den passenden Python Download finden Sie hier
19Den passenden Python Download finden Sie hier
18Den passenden Python Download finden Sie hier
17 und älterNicht mehr unterstützt

Die Installation von Python unterscheidet sich je nach SPSS Version

 

So testen Sie ob Python korrekt installiert ist

Um Ihre Installation von IBM SPSS Statistics Essentials for Python zu überprüfen können Sie in einer neuen SPSS Syntax folgende Syntax einfügen und ausführen.:

begin program.
import sys
print(sys.version)
end program.

 

Ist Python Essentials korrekt installiert sollte die Ausgabe die korrekte Python-Version enthalten.

Wenn Ihre Ausgabe dieser ähnelt haben Sie Python Essentials korrekt installiert

Darum sollten Sie in SPSS mit Python programmieren

SPSS Programmierung mit Python bringt Ihnen viele Vorteile gegenüber der alleinigen Verwendung der SPSS Syntax. Allerdings benötigen Sie hierfür Grundkenntnisse in Python. Aber selbst wenn Sie noch kein Python-Experte sind, sollten Sie sich davon nicht abschrecken lassen. In den weiterführenden Links finden Sie zahlreiche Code-Beispiele, die Sie oft nur noch für Ihr Problem anpassen müssen.

Vorteile von Python in SPSSNachteile von Python in SPSS
  • Reduziert den Zeit- und Arbeitsaufwand für komplexe Arbeitsschritte
  • Kürzere Syntax
  • Besser lesbare Syntax
  • Weniger fehleranfällige Syntax
  • Ermöglicht Arbeitsschritte, die mit einfacher SPSS-Befehlssprache nicht möglich sind
  • Zugriff auf SPSS-Erweiterungen, die Python verwenden
  • Erfordert Grundkenntnisse in Python
  • Syntax Datei nur kompatibel mit SPSS Installationen mit Python Essentials

Den Vorteilen von Python in SPSS stehen nur wenige Nachteile gegenüber

 

Erweiterungen mit Python finden sie im Erweiterungshub
Erweiterungen mit Python finden sie im Erweiterungshub

 

Mit Erweiterungen fügen Sie neue Funktionen zu SPSS hinzu
Mit Erweiterungen fügen Sie neue Funktionen zu SPSS hinzu

Wie Sie in SPSS mit Python programmieren

Wenn Sie in nach dem Python Download in SPSS mit Python programmieren möchten schreiben Sie Ihren Python-Code einfach innerhalb Ihrer SPSS Syntax. Beginn und Ende des Python-Codes wird dabei durch die Befehle BEGIN PROGRAM und END PROGRAM markiert. Beachten Sie dabei, dass Python im Gegensatz zu SPSS auf Groß- und Kleinschreibung achtet.

Beispiel wie Sie im Python Essentials Plugin mit Python programmieren
Beispiel wie Sie im Python Essentials Plugin mit Python programmieren

 

Wenn Sie in SPSS mit Python programmieren, bieten Ihnen die IBM SPSS Statistics Essentials for Python prinzipiell zwei Wege auf denen Python mit SPSS interagieren kann: Über das Python-Modul spss oder über das SpssClient Modul

ModulnameFunktionsweiseVorteileNachteile
spssDaten werden direkt von SPSS abgerufen

Daten können von Python durch SPSS-Befehle manipuliert werden

Relativ einfach erlernbare Methode

Ideal für Arbeitsschritte die mit SPSS-Befehlssprache möglich sind, aber sehr umständlich wären

Funktionsweise beschränkt auf Möglichkeiten der SPSS Syntax
SpssClientAbfrage von Objekteigenschaften (wie z.B. Größe einer Tabelle) aus der SPSS Objekt-HierarchieErmöglicht Arbeitsschritte, die mit herkömmlicher SPSS-Befehlssprache nicht möglich wären (z.B. die Erscheinungsweise von Grafiken in der Ausgabe verändern)Sehr anspruchsvolle Methode der Programmierung

Übersicht für die zwei wichtigsten Python-Module für SPSS

 

Arbeitsschritte die zumindest theoretisch mit herkömmlicher SPSS-Syntax möglich wären, wie etwa eine SPSS Variable berechnen oder verschiedene Analysen durchführen, automatisieren Sie in Python am besten durch das SPSS Modul.

Mit diesem Python-Block können Sie z.B. alle Variablennamen in Großbuchstaben umwandeln:

BEGIN PROGRAM.
import spss
for varIndex in range(spss.GetVariableCount()): #Schleife über Anzahl der Variablen
varName = spss.GetVariableName(varIndex) #Frage Name für jede Variable ab
#Variablennamen durch SPSS Befehl RENAME VARIABLES in Großbuchstaben umwandeln
spss.Submit('RENAME VARIABLES %s = %s.'%(varName,varName.upper()))
END PROGRAM.

 

Möchten Sie über die Möglichkeiten der SPSS-Befehlssprache hinausgehen und z.B. das Erscheinungsbild von Tabellen und Grafiken in ihrer Ausgabe manipulieren, sollten Sie das SpssClient Modul verwenden. SPSS Programmierung mit diesem Modul ist allerdings deutlich anspruchsvoller, weswegen wir es in dieser Einführung nicht weiter behandeln werden.

In SPSS Variable berechnen – ein Anwendungsbeispiel

Zur Veranschaulichung möchten wir Ihnen anhand eines Beispiels zeigen, wie Sie mit IBM SPSS Statistics Essentials for Python aus Zeichenfolgen eine SPSS Variable berechnen können. Im folgenden Beispiel liegen Daten über die bestellte Menge verschiedener Produkte eines Gewürze-Großhandels als Zeichenfolge vor und sollen in eine numerische Variable umgeformt werden. Allerdings enthält die Zeichenfolge auch Angaben zur Einheit (in variierender Schreibweise) und die Angaben müssen teilweise erst noch in Gramm umgerechnet werden.

Die Bestellmenge soll in numerische Form umgewandelt werden
Die Bestellmenge soll in numerische Form umgewandelt werden

 

Natürlich könnten Sie diese Arbeit auch per Hand vornehmen, dies ist bei großen Datenmengen aber äußerst mühselig. Anhand des folgenden Beispiels können Sie nachvollziehen wie Sie in SPSS das Python Essentials Plugin nutzen um diesen Schritt zu automatisieren:

BEGIN PROGRAM.
import spss, spssaux, re
# spssaux vereinfacht uns das Auffinden von Variablen
# re ermöglicht uns in Zeichenfolgen nach Zahlenwerten zu suchen
# Ermittle Variablen-Index für Bestellmenge (String) #
MengeIndex = spssaux.VariableDict().VariableIndex('Bestelllmenge')
# Lese Daten ein für Bestellmenge (String) #
i = [MengeIndex]
DatenCursor=spss.Cursor(i, accessType='r')
# Berechne Bestellmenge in Gramm für jeden Fall #
Gramm = []
for Fall in range(DatenCursor.GetCaseCount()): #Schleife über alle Fälle in Datensatz
WertStr = DatenCursor.fetchone()[0] # String für Fall einlesen
# Ermittle numerischen Wert in String für Fall
try:
WertNum = int(re.search(r'\d+', WertStr).group())
except:
WertNum = None # überspringen wenn keine Zahlen vorhanden sind
# Berechne bestellte Gramm anhand der angegebenen Einheit und lege Daten in Tuple ab
# Dieses Tuple enthält am Ende der Schleife die Werte in Gramm für alle Fälle
if 'kg' in WertStr.lower():
Gramm += ((WertNum*1000),)
elif 'pfund' in WertStr.lower():
Gramm += ((WertNum*453.592),)
else:
Gramm += (WertNum,)
DatenCursor.close()
# Schreibe berechnete Gramm in das Datenset
DatenCursor=spss.Cursor(accessType='w')
DatenCursor.AllocNewVarsBuffer(8)
DatenCursor.SetOneVarNameAndType('Gramm', 0)
DatenCursor.CommitDictionary()
for Fall in range(DatenCursor.GetCaseCount()):
row=DatenCursor.fetchone()
DatenCursor.SetValueNumeric('Gramm', Gramm[Fall])
DatenCursor.CommitCase()
DatenCursor.close()
END PROGRAM.

 

Datensatz nach Ausführung des Python-Codes
Datensatz nach Ausführung des Python-Codes

Zusammenfassung: SPSS Programmierung mit Python

Wir hoffen, dass Sie durch diese kurze Einführung einen ersten Eindruck von den Verwendungsmöglichkeiten von Python in SPSS gewinnen konnten. Wie oben dargestellt, haben Sie nach dem Python Download die Wahl zwischen der Verwendung von dem spss Modul und dem SpssClient Modul. Für den Anfang würden wir Ihnen aber empfehlen sich erst mit dem spss Modul vertraut zu machen. Dieses kann besonders dann hilfreich sein, wenn Arbeitsschritte mit der herkömmlichen SPSS-Syntax sehr umständlich wären. So ist es etwa oft umständlich aus Zeichenfolgen eine SPSS Variable berechnen zu müssen. In solchen Fällen können Sie Arbeitsschritte durch Python automatisieren.

Sollten Sie weitere Fragen haben oder eine ausführlichere Beratung zur Automatisierung ihrer Arbeitsschritte in SPSS wünschen, stehen wir Ihnen bei Novustat selbstverständlich jederzeit zur Verfügung.

Weiterführende Links

[1] http://www.spsstools.net/en/python/python-index/

[2] ftp://public.dhe.ibm.com/software/analytics/spss/documentation/statistics/22.0/en/server/Manuals/Python_Reference_Guide_for_IBM_SPSS_Statistics.pdf