Python Umfragedaten bereinigen für Studien

Python Umfragedaten bereinigen für Studien

Ein Export aus LimeSurvey, Qualtrics oder SoSci Survey ist noch kein analysierbarer Datensatz. Wer mit Python Umfragedaten bereinigen möchte, muss entscheiden, welche Fälle und Werte fachlich vertretbar in die Analyse eingehen. Genau diese Entscheidungen beeinflussen Mittelwerte, Regressionsmodelle und letztlich die Aussagekraft einer Bachelorarbeit, Dissertation oder Publikation.

Die technische Umsetzung mit `pandas` ist meist schnell erlernt. Anspruchsvoller ist die methodische Begründung: Ist ein fehlender Wert wirklich fehlend? Ist eine extrem kurze Bearbeitungszeit ein Ausschlusskriterium? Darf eine ungewöhnliche Antwort als Ausreißer gelöscht werden? Eine saubere Datenbereinigung trennt technische Plausibilität von inhaltlicher Bewertung und dokumentiert jeden Schritt so, dass er im Methodenteil nachvollziehbar bleibt.

Vor dem Bereinigen: Codebuch und Rohdaten sichern

Arbeiten Sie nie direkt in der Originaldatei. Speichern Sie den unbearbeiteten Export unverändert ab und erstellen Sie eine separate Arbeitskopie. So bleiben Entscheidungen reversibel und Sie können bei Rückfragen von Betreuung, Co-Autoren oder Reviewern jederzeit zeigen, wie der endgültige Analysedatensatz entstanden ist.

Der zweite Ausgangspunkt ist ein Codebuch. Es hält für jede Variable fest, was gemessen wurde, welche Antwortkategorien zulässig sind, wie fehlende Angaben codiert wurden und ob Items umgepolt werden müssen. Besonders bei Fragebogenexporten sind Codes wie `-99`, `999`, leere Zeichenketten oder Texte wie „keine Angabe“ verbreitet. Ohne Codebuch können diese Werte fälschlich als echte Messwerte in deskriptive Statistiken eingehen.

Laden Sie den Datensatz zunächst ein und prüfen Sie Struktur, Datentypen und erste Werte:

```python
import pandas as pd

raw = pd.read_csv("umfrage_export.csv", sep=";")
df = raw.copy()

print(df.shape)
print(df.dtypes)
print(df.head())
print(df.isna().sum())
```

Das Trennzeichen hängt vom Exportformat ab. Bei deutschen CSV-Dateien ist oft ein Semikolon korrekt, während Dezimalzahlen als Komma vorliegen können. Prüfen Sie daher früh, ob numerische Variablen wirklich als Zahl und nicht als Text eingelesen wurden. Ein Einkommen von `"3.500,00"` lässt sich nicht sinnvoll auswerten, bevor Sie es konsistent umgewandelt haben.

Python-Umfragedaten bereinigen: Fehlende Werte korrekt behandeln

Fehlende Werte sind kein einheitliches Problem. Eine nicht beantwortete Altersfrage, ein durch Filterführung übersprungenes Item und ein Wert `99 = keine Angabe` sehen im Export unterschiedlich aus, können aber analytisch dieselbe Bedeutung haben. Umgekehrt kann ein systematisch übersprungenes Item eine inhaltliche Information tragen und darf nicht unbesehen mit einem zufälligen Missing gleichgesetzt werden.

Zunächst vereinheitlichen Sie technische Missing-Codes. Die konkrete Liste muss aus Ihrem Fragebogen stammen, nicht aus einem Standardrezept:

```python
missing_codes = [-99, -9, 99, 999]
df = df.replace(missing_codes, pd.NA)
df = df.replace(["", " ", "keine Angabe", "NA"], pd.NA)
```

Danach sollten Sie die fehlenden Werte pro Variable und pro Fall untersuchen. Eine hohe Missing-Rate in einem einzelnen Item kann auf eine unklare Formulierung, einen Programmierfehler oder eine nicht passende Filterfrage hindeuten. Viele fehlende Werte über den gesamten Fragebogen hinweg können dagegen auf einen Abbruch hinweisen.

```python
missing_per_item = df.isna().mean().sort_values(ascending=False)
missing_per_case = df.isna().mean(axis=1)
```

Ob Sie Fälle ausschließen oder einzelne Werte imputieren, hängt von Forschungsfrage, Stichprobengröße, Skalenstruktur und Missing-Mechanismus ab. Bei wenigen fehlenden Itemwerten kann etwa ein Skalenmittelwert zulässig sein, wenn dies methodisch begründet und transparent berichtet wird. Bei relevanten Anteilen fehlender Daten ist eine einfache Ersetzung durch den Gesamtmittelwert oft zu grob, weil Varianz und Zusammenhänge verzerrt werden können. Dann sind beispielsweise multiple Imputationen oder ein Modell, das mit fehlenden Werten umgehen kann, eher zu prüfen.

Unplausible Fälle erkennen, ohne Daten passend zu machen

Datenbereinigung ist keine Gelegenheit, unerwünschte Ergebnisse zu entfernen. Ein Wert darf nicht gelöscht werden, weil er die Hypothese stört oder einen p-Wert verändert. Zulässig sind vorab definierte oder klar sachlich begründete Kriterien, etwa unmögliche Werte, doppelte Teilnahmen oder offensichtlich nicht ernsthaft bearbeitete Fragebögen.

Prüfen Sie zunächst Wertebereiche. Wenn Alter zwischen 18 und 70 Jahren erhoben wurde, ist ein Alter von 700 mit hoher Wahrscheinlichkeit ein Eingabe- oder Exportfehler:

```python
age_invalid = ~df["alter"].between(18, 70)
print(df.loc[age_invalid, ["teilnehmer_id", "alter"]])
```

Ein solcher Fund bedeutet nicht automatisch Ausschluss des gesamten Falls. Vielleicht wurde nur eine Variable falsch erfasst und kann als fehlend gesetzt werden. Ein Ausschluss des kompletten Fragebogens ist eher dann plausibel, wenn mehrere zentrale Angaben widersprüchlich oder unbrauchbar sind.

Bei Bearbeitungszeiten ist Vorsicht besonders wichtig. Sehr kurze Zeiten können auf Durchklicken hindeuten, aber die Grenze ist nicht universell. Ein kurzer, einfacher Fragebogen wird schneller ausgefüllt als eine lange Skala mit Vignetten. Nutzen Sie Bearbeitungszeit deshalb zusammen mit weiteren Hinweisen: extrem geringe Antwortvarianz, widersprüchliche Antworten, fehlgeschlagene Aufmerksamkeitschecks oder identische Antwortmuster über zahlreiche Items.

```python

Beispiel: Fälle unter 120 Sekunden zur Prüfung markieren


df["kurze_dauer"] = df["dauer_sekunden"] < 120

Anzahl unterschiedlicher Antworten über fünf Likert-Items

gruppen_items = ["item1", "item2", "item3", "item4", "item5"] df["anzahl_antwortmuster"] = df[gruppen_items].nunique(axis=1) ```

Markieren ist besser als sofortiges Löschen. Prüfen Sie auffällige Fälle einzeln oder führen Sie Sensitivitätsanalysen durch: Verändert sich das zentrale Ergebnis, wenn begründet auffällige Fälle ein- und ausgeschlossen werden? Gerade bei kleinen Stichproben ist diese Transparenz wertvoller als eine scheinbar perfekte Datenbasis.

Duplikate, Filterführung und Antwortskalen prüfen

Doppelte Zeilen sind nicht immer doppelte Teilnahmen. Manche Umfragesysteme erzeugen bei Testläufen, Teilabgaben oder wiederholten Exporten ähnliche Datensätze. Suchen Sie zunächst nach einer eindeutigen Teilnehmer-ID. Fehlt sie, können Zeitstempel, technische Kennungen und identische Antwortmuster Hinweise liefern, dürfen aber nicht vorschnell als Beweis gelten.

```python
duplicates = df[df.duplicated(subset="teilnehmer_id", keep=False)]
print(duplicates.sort_values("teilnehmer_id"))
```

Kontrollieren Sie auch die Filterlogik. Wenn nur berufstätige Personen eine Frage zur Wochenarbeitszeit sehen sollten, sind fehlende Werte bei nicht berufstätigen Personen korrekt. Diese Fälle als Datenfehler zu zählen, würde die Qualität des Datensatzes falsch bewerten. Erstellen Sie daher für jede bedingte Frage eine Plausibilitätsregel, die zur programmierten Filterführung passt.

Likert-Skalen verdienen ebenfalls einen eigenen Check. Prüfen Sie, ob alle Items in dieselbe Richtung codiert sind. Bei einer fünfstufigen Skala von 1 bis 5 lautet die Umkehrung eines negativ formulierten Items `6 - Wert`:

```python
df["item3_rekodiert"] = 6 - df["item3"]
```

Rekodieren Sie nur, wenn die Itemformulierung es verlangt, und behalten Sie das Originalitem im Datensatz. So bleibt der Arbeitsschritt überprüfbar. Erst danach sollten Sie Skalenwerte bilden und Reliabilitäten oder Faktorenstrukturen analysieren.

Bereinigung dokumentieren und reproduzierbar machen

Eine gute Bereinigung zeigt sich nicht nur im finalen Datensatz, sondern im nachvollziehbaren Weg dorthin. Arbeiten Sie mit einem Skript statt mit manuellen Änderungen in Excel. Jeder Schritt lässt sich dann erneut ausführen, kontrollieren und bei geänderten Einschlusskriterien anpassen. Für Forschungsprojekte ist diese Reproduzierbarkeit ein Qualitätsmerkmal, nicht bloß eine technische Komfortfunktion.

Führen Sie zusätzlich ein Bereinigungsprotokoll. Darin gehören die Anzahl exportierter Fälle, ausgeschlossene Testfälle, Duplikate, Abbrüche, Ausschlusskriterien, Umcodierungen und die finale Analyse-Stichprobe. Im Methodenteil genügt häufig eine kompakte Beschreibung, während das vollständige Skript und Protokoll intern oder als Anhang verfügbar bleiben können.

Besonders überzeugend ist ein Entscheidungsfluss: Von wie vielen ursprünglich begonnenen Fragebögen blieben nach definierten Kriterien wie viele Fälle übrig? Damit wird klar, dass Ihre Auswahl nicht nachträglich auf ein gewünschtes Ergebnis zugeschnitten wurde.

Wann fachliche Statistikberatung sinnvoll ist

Bei überschaubaren, sauber programmierten Umfragen reichen die genannten Prüfungen oft als solide Grundlage. Komplexer wird es bei vielen Filterpfaden, mehreren Messzeitpunkten, Skalen mit inversen Items, sensiblen medizinischen Daten oder hohen Missing-Anteilen. Dann kann eine falsche Bereinigungsentscheidung die anschließende Analyse stärker beeinträchtigen als die Wahl zwischen zwei statistischen Tests.

Easy Statistik unterstützt Forschungsprojekte mit nachvollziehbaren Python-Workflows, methodisch begründeten Einschlusskriterien und einer verständlichen Dokumentation für Thesis oder Publikation. Nutzen Sie bei Unsicherheit das Kontaktformular für eine diskrete Ersteinschätzung durch promovierte Statistiker. Der sinnvollste nächste Schritt ist nicht, möglichst viele Fälle zu löschen, sondern jede Datenentscheidung fachlich so abzusichern, dass Sie Ihr Ergebnis mit gutem Grund vertreten können.


Der Easy Statistik Blog Alle anzeigen

Zukunft der KI-freien Statistikberatung
Zukunft der KI-freien Statistikberatung
Python oder SPSS Datenanalyse richtig wählen
Python oder SPSS Datenanalyse richtig wählen
Beispiel Cox-Regression in der Medizin
Beispiel Cox-Regression in der Medizin
Statistikberatung Kosten realistisch einschätzen
Statistikberatung Kosten realistisch einschätzen
Mixed Models oder ANOVA: Was passt zu Ihrer Studie?
Mixed Models oder ANOVA: Was passt zu Ihrer Studie?
Anleitung für longitudinale Datenanalyse
Anleitung für longitudinale Datenanalyse
Wichtige Schritte der Datenbereinigung in Studien
Wichtige Schritte der Datenbereinigung in Studien
Praxisbeispiel Zeitreihenanalyse von Finanzdaten
Praxisbeispiel Zeitreihenanalyse von Finanzdaten
RStudio oder Jamovi für Ihre Forschung wählen?
RStudio oder Jamovi für Ihre Forschung wählen?
Effektstärke in Studien korrekt interpretieren
Effektstärke in Studien korrekt interpretieren
Wie interpretiere ich Odds Ratios richtig?
Wie interpretiere ich Odds Ratios richtig?

Jetzt Angebot anfragen!

Diese Website ist durch hCaptcha geschützt und es gelten die allgemeinen Geschäftsbedingungen und Datenschutzbestimmungen von hCaptcha.