Survey wave export, German locale Passed

input 01_survey_export_de.csv · profile 01_survey.yaml (survey-de) · mode in-memory · clean-data 0.1.0

Read

1,026

Out

982

Rejected

18

Duplicates

18

Cells changed

5,333

Columns

13

Row flow

read 1,026 = out 982 + rejected 18 + duplicates 18 + empty 8. Reject rate 1.8 % against a gate of 5.0 %.

kept: 982 rejected by validation: 18 duplicates: 18 empty records: 8

Warnings

No warnings.

Notes:

Header mapping

#RawNormalisedFinalAction
1Respondent IDrespondent_idrespondent_idkept
2Wellewellewaverenamed
3Startdatumstartdatumstart_daterenamed
4Abgeschlossen amabgeschlossen_amcompleted_atrenamed
5Alteralteragerenamed
6Geschlechtgeschlechtgenderrenamed
7Landlandcountryrenamed
8Haushaltseinkommen (€)haushaltseinkommen_eurhousehold_incomerenamed
9Ausgaben letzter Monat (€)ausgaben_letzter_monat_eurspend_last_month_eurrenamed
10Zufriedenheitzufriedenheitsatisfactionrenamed
11NPSnpsnpskept
12Kommentarkommentarcommentrenamed
13Kommentarkommentar_2interviewer_noterenamed
14column_14dropped empty

Columns before and after

ColumnTypeNon-empty beforeNulls afterDistinct afterInvalidFilledChangedDetails
respondent_idstring 1,017 0 982 0 0 5
details

before: whitespace 3 · non-NFC 0 · control 0 · null-like 0 · length 8 to 11

top before: "NG-129914" ×2, "NG-189048" ×2, "NG-272155" ×2, "NG-283425" ×2, "NG-448991" ×2

after: min – · max – · mean – · median –

top after: "NG-100388" ×1, "NG-103838" ×1, "NG-104803" ×1, "NG-105420" ×1, "NG-108657" ×1

waveinteger 1,018 0 4 0 0 0
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 1 to 1

top before: "4" ×303, "2" ×239, "3" ×239, "1" ×237

after: min 1 · max 4 · mean 2.59165 · median 3

start_datedate 1,018 0 479 10 0 727
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 5 to 10

top before: "16.05.2025" ×5, "06/02/2025" ×4, "08/08/2026" ×4, "12.01.2025" ×4, "12.08.2026" ×4

after: min 2025-01-07 · max 2026-08-27 · mean – · median –

patterns: %Y-%m-%d 257, %d.%m.%Y 529, %d/%m/%Y 222

completed_atdatetime 1,018 0 982 0 0 982
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 16 to 16

top before: "02.06.2025 14:49" ×2, "10.12.2025 15:04" ×2, "11.01.2026 12:08" ×2, "12.11.2025 07:07" ×2, "13.03.2026 10:04" ×2

after: min 2025-01-08T14:54:00 · max 2026-08-29T15:18:00 · mean – · median –

patterns: %d.%m.%Y %H:%M 1,018

ageinteger 1,018 3 68 0 0 3
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 3 · length 2 to 4

top before: "63" ×24, "34" ×23, "30" ×21, "55" ×20, "75" ×20

after: min 18 · max 85 · mean 51.3841 · median 52

genderstring 1,018 0 4 0 0 982
details

before: whitespace 1 · non-NFC 0 · control 0 · null-like 0 · length 1 to 12

top before: "W" ×167, "keine Angabe" ×152, "w" ×146, "weiblich" ×146, "divers" ×139

after: min – · max – · mean – · median –

top after: "female" ×446, "male" ×257, "not_stated" ×145, "diverse" ×134

countrystring 1,018 0 3 0 0 647
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 2 to 11

top before: "AT" ×182, "de" ×179, "\u00d6sterreich" ×177, "DE" ×165, "Deutschland" ×159

after: min – · max – · mean – · median –

top after: "DE" ×484, "AT" ×346, "CH" ×152

household_incomenumber 998 0 203 0 20 982
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 6 to 10

top before: "41.500,00" ×9, "63.500,00" ×8, "42.500" ×7, "45.000,00" ×7, "49.500,00" ×7

after: min 18,000 · max 119,500 · mean 68,561.1 · median 68,000

missing: median with 68000.0, 20 filled

spend_last_month_eurnumber 1,018 0 982 0 0 982
details

before: whitespace 1018 · non-NFC 0 · control 0 · null-like 0 · length 7 to 10

top before: "1.019,32\u00a0\u20ac" ×2, "1.187,14\u00a0\u20ac" ×2, "1.193,33\u00a0\u20ac" ×2, "1.434,12\u00a0\u20ac" ×2, "1.523,82\u00a0\u20ac" ×2

after: min 20.41 · max 2,499.31 · mean 1,241.24 · median 1,230.76

satisfactioninteger 1,003 0 10 0 15 15
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 1 to 2

top before: "7" ×116, "8" ×113, "1" ×107, "3" ×107, "10" ×105

after: min 1 · max 10 · mean 5.60285 · median 6

missing: median with 6, 15 filled

npsinteger 1,018 0 11 0 0 0
details

before: whitespace 0 · non-NFC 0 · control 0 · null-like 0 · length 1 to 2

top before: "5" ×112, "0" ×103, "8" ×103, "1" ×101, "7" ×99

after: min 0 · max 10 · mean 4.7556 · median 5

commentstring 588 422 8 0 0 5
details

before: whitespace 2 · non-NFC 1 · control 5 · null-like 0 · length 11 to 31

top before: "Lieferung versp\u00e4tet, sonst gut" ×98, "Sehr zufrieden mit dem Service" ×83, "Gerne wieder" ×73, "Keine Anmerkungen" ×68, "Mehr Auswahl w\u00e4re sch\u00f6n" ×68

after: min – · max – · mean – · median –

top after: "Lieferung versp\u00e4tet, sonst gut" ×86, "Sehr zufrieden mit dem Service" ×82, "Gerne wieder" ×72, "Preis und Leistung stimmen" ×67, "Mehr Auswahl w\u00e4re sch\u00f6n" ×66

interviewer_notestring 253 737 6 0 0 3
details

before: whitespace 89 · non-NFC 0 · control 3 · null-like 0 · length 18 to 43

top before: "Teilnahme per Tablet" ×86, "Telefon besetzt, zweiter Versuch" ×86, "R\u00fcckruf vereinbart" ×78, "Interview unterbrochen\r\nam Folgetag beendet" ×1, "R\u00fcckruf vereinbart\r\nabends erreichbar" ×1

after: min – · max – · mean – · median –

top after: "Telefon besetzt, zweiter Versuch" ×84, "Teilnahme per Tablet" ×83, "R\u00fcckruf vereinbart" ×75, "Interview unterbrochen\nam Folgetag beendet" ×1, "R\u00fcckruf vereinbart\nabends erreichbar" ×1

Rules

RuleCheckedFailedExamples
respondent_id.required1,0181r952 ""
respondent_id.regex1,0172r174 "NG-6346397" r855 "NG-17261"
wave.type1,0180
wave.required1,0180
wave.allowed1,0180
start_date.type1,01810r66 "32.01.2025" r233 "31.02.2025" r480 "2025-00-10" r578 "2025-13-01" r711 "15/13/2025"
start_date.required1,0180
completed_at.type1,0180
completed_at.required1,0180
age.type1,0150
age.min1,0152r48 "15" r76 "12"
age.max1,0153r118 "130" r544 "150" r871 "101"
gender.allowed1,0180
country.allowed1,0180
household_income.type9980
household_income.min9980
spend_last_month_eur.type1,0180
spend_last_month_eur.min1,0180
satisfaction.type1,0030
satisfaction.min1,0030
satisfaction.max1,0030
nps.type1,0180
nps.min1,0180
nps.max1,0180
dedupe.exact1,00012r85 duplicate of r80 r304 duplicate of r124 r324 duplicate of r181 r389 duplicate of r41 r407 duplicate of r189
dedupe.key.19886r40 superseded by r902 r190 superseded by r288 r220 superseded by r687 r422 superseded by r610 r528 superseded by r783

Duplicates

Rejects

36 rows in rejects.csv: read 0 · validate 18 · dedupe 18 · missing 0.

First failing ruleRows
age.max3
age.min2
dedupe.exact12
dedupe.key.16
respondent_id.regex2
respondent_id.required1
start_date.type10

By column: age 5, respondent_id 3, start_date 10

First 20 rejected rows

RowStageRuleDetailrespondent_idwavestart_datecompleted_atagegendercountryhousehold_incomespend_last_month_eursatisfactionnpscommentinterviewer_note
40dedupededupe.key.1duplicate of r902NG-129914307.02.202607.02.2026 17:2685wAT79.500,001.825,82 €25
48validateage.minage.min: 15 < 16NG-160720111.04.202613.04.2026 10:5515mAT71.0002.322,10 €810Keine Anmerkungen
66validatestart_date.typestart_date.type: "32.01.2025" not a date (%d.%m.%Y, %Y-%m-%d, %d/%m/%Y)NG-426903132.01.202521.08.2025 09:0248keine Angabede41.500562,09 €17Sehr zufrieden mit dem ServiceTeilnahme per Tablet
76validateage.minage.min: 12 < 16NG-679587322.12.202522.12.2025 17:3612männlichÖsterreich81.5002.489,90 €80Alles prima
85dedupededupe.exactduplicate of r80NG-928448312.11.202512.11.2025 07:0763weiblichSchweiz49.500,001.187,14 €101Lieferung verspätet, sonst gutRückruf vereinbart
118validateage.maxage.max: 130 > 99NG-774006412/02/202613.02.2026 14:37130diversde48.0001.413,39 €17
174validaterespondent_id.regexrespondent_id.regex: "NG-6346397" does not match ^NG-\d{6}$NG-6346397107/11/202507.11.2025 10:3463weiblichAT89.500557,51 €34Mehr Auswahl wäre schön
190dedupededupe.key.1duplicate of r288NG-283425411.02.202611.02.2026 21:1456diversDeutschland108.500,00736,04 €101Lieferung verspätet, sonst gutTelefon besetzt, zweiter Versuch
220dedupededupe.key.1duplicate of r687NG-798099320.06.202520.06.2025 14:1973keine AngabeAT43.5001.742,42 €18
233validatestart_date.typestart_date.type: "31.02.2025" not a date (%d.%m.%Y, %Y-%m-%d, %d/%m/%Y)NG-679621231.02.202511.11.2025 20:4637männlichÖsterreich60.0002.042,77 €79Fragebogen war zu lang
304dedupededupe.exactduplicate of r124NG-272155417.02.202619.02.2026 17:4185wÖsterreich47.000,001.603,66 €27Lieferung verspätet, sonst gut
324dedupededupe.exactduplicate of r181NG-761426216.04.202516.04.2025 15:1330weiblichDE51.50083,23 €48Lieferung verspätet, sonst gut
389dedupededupe.exactduplicate of r41NG-547873310.01.202611.01.2026 12:0884keine AngabeDE54.000781,01 €100Lieferung verspätet, sonst gut
407dedupededupe.exactduplicate of r189NG-801086210.12.202510.12.2025 15:0467WDeutschland106.0001.561,15 €13Lieferung verspätet, sonst gut
422dedupededupe.key.1duplicate of r610NG-959125102.01.202603.01.2026 12:4225mde106.500311,88 €54Gerne wiederRückruf vereinbart
480validatestart_date.typestart_date.type: "2025-00-10" not a date (%d.%m.%Y, %Y-%m-%d, %d/%m/%Y)NG-52096142025-00-1011.01.2025 08:1874wDE80.0002.466,43 €29Keine Anmerkungen
528dedupededupe.key.1duplicate of r783NG-960378406/07/202506.07.2025 21:2345weiblichAT79.000,001.523,82 €107
544validateage.maxage.max: 150 > 99NG-762228207.09.202508.09.2025 11:21150keine Angabede53.000,001.930,34 €56Gerne wieder
578validatestart_date.typestart_date.type: "2025-13-01" not a date (%d.%m.%Y, %Y-%m-%d, %d/%m/%Y)NG-92052712025-13-0111.07.2025 20:2634männlichSchweiz75.000,001.778,66 €77Alles prima
583dedupededupe.key.1duplicate of r673NG-649809226.04.202526.04.2025 09:3441WDeutschland98.000,001.958,11 €58Lieferung verspätet, sonst gutTelefon besetzt, zweiter Versuch

Run info

Started2026-10-29T00:00:00Z
Statusok · exit 0
Profile SHA-256d8c56a41c66f1dfe1973ef0afb2c94f94c11039c13963f3e7a5aa2f62a131ad8
Input SHA-2566ca4696f292c4a49139e0ab854d634fdfdaa2d863b74b2e4a6741efac23a0b79
Versionsclean-data 0.1.0, Python 3.13, pandas 3.1.0, pydantic 2.14.1, click 8.5.0, openpyxl 3.1.5, charset-normalizer 3.5.2, PyYAML 6.0.3, Jinja2 3.1.6, rapidfuzz 3.14.6, pyarrow 26.0.0