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 Version | Installation |
22 oder neuer | Keine weitere Installation nötig Python Essentials Plugin ist bereits vorhanden |
21 | Python 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.) |
20 | |
19 | |
18 | |
17 und älter | Nicht 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 SPSS | Nachteile von Python in SPSS |
|
|
Den Vorteilen von Python in SPSS stehen nur wenige Nachteile gegenüber
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.
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
Modulname | Funktionsweise | Vorteile | Nachteile |
spss | Daten 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 |
SpssClient | Abfrage von Objekteigenschaften (wie z.B. Größe einer Tabelle) aus der SPSS Objekt-Hierarchie | Ermö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.
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.
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.