Ga naar hoofdinhoud

Data opschonen: de basis begrijpen

Data opschonen is een fundamenteel bouwblok van data science. Leer waarom data opschonen belangrijk is en hoe je Python gebruikt om het proces uit te voeren.
Bijgewerkt 2 okt 2026  · 12 min lezen

Verken met AI

ChatGPTClaudePerplexity

Hoe geavanceerd onze analyses of voorspellende algoritmes ook zijn, de kwaliteit van de output hangt af van de inputdata. Met andere woorden: 'garbage in, garbage out'.

Omdat data al deze processen ondersteunt, is het belangrijk om voldoende tijd te besteden aan het zorgvuldig verfijnen van data.

Data opschonen is een fundament in de data science-levenscyclus, en die rol kan niet genoeg benadrukt worden als je inzichten wilt blootleggen en betrouwbare antwoorden wilt genereren. In de praktijk is data meestal rommelig, en data opschonen valt niet volledig te omzeilen.

In dit artikel behandelen we een paar belangrijke ideeën, zoals hoe je omgaat met missende waarden, duplicaten en uitschieters. Voor een completere set instructies kun je onze cursussen Cleaning Data in Python of Cleaning Data in R volgen.

Waardoor ontstaat vervuilde data?

Simpel gezegd is data opschonen (of schoonmaken) een proces dat nodig is als voorbereiding op data-analyse. Dit kan inhouden: het vinden en verwijderen van duplicaten en onvolledige records, en het aanpassen van data om onjuiste records te herstellen.

Onschone of vervuilde data is altijd al een probleem geweest, en toch is de datageneratie in het afgelopen decennium exponentieel toegenomen. Alleen al in 2020 produceerde de wereld meer dan 64 zettabyte aan data, gelijk aan 6,4 biljoen gigabyte. Hoewel minder dan 2% van al die data bewaard blijft, verergert het onmiskenbaar het al bestaande, veelvoorkomende probleem van "dirty data". Voordat je data goed kunt opschonen, is het belangrijk te begrijpen hoe die data überhaupt vervuild raakte. Dat kan voortkomen uit veelvoorkomende bronnen zoals:

  • Menselijke fouten bij data-invoer, -registratie of -codering
  • Een defecte sensor, zoals bij internet of things (IoT)
  • Corruptie als gevolg van schade aan hardware of software.

Als je de oorzaak kent van de vervuilde data die je wilt opschonen, leg je een goede basis voor het opleggen van datakwaliteitscriteria waarmee je de verschillende problemen in je dataset kunt classificeren.

Waarom is data opschonen zo belangrijk?

Het opschoningsproces is belangrijk omdat het helpt een sjabloon te maken voor het opschonen van data binnen een organisatie. Zoals eerder genoemd: bij elke data-analyse- of data science-procedure geldt garbage in, garbage out. Als je data opschonen negeert, leidt dat tot kostbare, foutieve analyses, zowel in tijd en geld als in andere ingezette middelen.

Wat is datakwaliteit?

Datakwaliteit is de kwalitatieve en/of kwantitatieve maat voor hoe goed onze data past bij het doel dat ze moet dienen. Deze maten zijn praktische sjablonen waarmee we kunnen beoordelen hoe geschikt de aangeleverde data is voor onze beoogde doelen. Zie deze datakwaliteitsmaten als metrische toetsen die onze data moet doorstaan om geschikt te worden geacht voor data science-processen.

Criteria voor datakwaliteit

  1. Nauwkeurigheid: Een simpele vraag om nauwkeurigheid te toetsen is: klopt de informatie in de data tot in elk detail? Met data proberen we patronen in de echte wereld te benaderen; nauwkeurigheid geeft aan hoe waarheidsgetrouw die benaderingen zijn.
  2. Relevantie: Is deze informatie van invloed op wat ons uiteindelijke doel is?
  3. Consistentie: Is de bron van deze data geverifieerd en is de informatie betrouwbaar? Bijvoorbeeld: een klant van 15 jaar met als burgerlijke staat "gehuwd".
  4. Volledigheid: Is de data volledig en uitgebreid genoeg voor het beoogde doel? Dit is een veelvoorkomend probleem bij missende data; één manier om dit op te lossen is door de databron te onderzoeken.
  5. Uniformiteit: Stel dat we een verkoopkolom hebben, maar niet alle transacties in dezelfde valuta zijn gedaan. Dan is het noodzakelijk alle verkoopwaarden naar één valuta om te rekenen—dát is uniformiteit: ervoor zorgen dat metingen overal met dezelfde eenheden zijn vastgelegd.

Data opschonen vs. datatransformatie

Het is belangrijk onderscheid te maken tussen data opschonen en datatransformatie. Datatransformatie is een verzameling processen die ons helpen meer inzichten uit de aangeleverde data te halen. Deze processen veranderen doorgaans de ruwe vorm van de data in een ander formaat; enkele voorbeelden zijn:

  • Encoderen: Dit is het omzetten van categorische waarden naar binaire waarden die vervolgens gebruikt kunnen worden in berekeningen voor machine learning. De afbeelding laat zien hoe de kolom geslacht eruitziet als die wordt gecodeerd. Hoewel de informatie hetzelfde blijft, is het formaat veranderd.

example of data encoding

  • Binning: Ook wel bucketing genoemd; dit proces helpt het effect/de omvang van kleine observaties te verkleinen. Het houdt in dat je continue waarden groepeert in bins (of categorieën).

Data binning example

  • Schalen: Een veelgebruikte techniek in machine learning om waarden met verschillende schalen te standaardiseren naar een vaste range.

example of data scaling

Let op dat bij de meeste transformatieprocessen de oorspronkelijke weergave van de data wordt gewijzigd. Het is nog steeds dezelfde data, maar bepaalde technieken hebben het omgezet naar een formaat dat bruikbaar is voor machine learning of een ander doel.

Hoe data opschonen gebeurt

Het is belangrijk om een set richtlijnen te hebben om datakwaliteit te bereiken. Deze richtlijnen vormen een data-opschoningsworkflow. Ze helpen ons alle noodzakelijke stappen voor data opschonen mee te nemen. In deze workflow zitten de volgende processen:

  • Data-exploratie
  • Data opschonen
  • Dataverificatie
  • Rapportage over data opschonen Sommige van deze processen worden ook in Python gedemonstreerd

Data-exploratie

Data-exploratie draait om het begrijpen van de data via een grondige verkenning van de variabelen in de data. Daarvoor gebruik je diverse visualisatie- en aggregatietechnieken om onderliggende problemen bloot te leggen. Voor een goede exploratie zijn dit een paar aandachtspunten:

Datacontext

Voordat we data kunnen opschonen, moeten we de context begrijpen. Datacontext is de bron van alle entiteiten in data. Het legt de omstandigheden vast rondom de manier waarop data is verzameld; hoe data is verzameld geeft inzichten in hoe ze gebruikt kan worden en waarvoor.

Dit fungeert als leidraad voor wat toelaatbaar is tijdens opschonen (en analyse), zodat we de juiste inzichten uit de data halen. Als we duidelijk weten hoe de data is/geworden verzameld, moeten we die data vervolgens verkennen.

Exploratory Data Analysis

Exploratory data analysis verwijst naar het kritische proces van eerste verkenning van data om patronen te ontdekken, afwijkingen te spotten, hypothesen te testen en aannames te controleren met behulp van samenvattende statistieken en grafische weergaven. Er is geen ontdekking zonder verkenning. Als we onze data niet verkennen, is het lastig de verschillende problemen in de data te ontdekken.

We hebben bijvoorbeeld een dataset die hier beschikbaar is gesteld. De Rolling Sales-bestanden van het Department of Finance tonen panden die in de afgelopen twaalf maanden in New York City zijn verkocht voor belastingklassen 1, 2 en 4. We downloaden en lezen de Bronx-data in.

#pandas
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#read excel file
df = pd.read_excel("rollingsales_bronx.xls")

#preview data
df.head()

Bronx rolling sales data example

Opvallende problemen met dit dataframe zijn onder meer:

  1. naamloze kolommen
  2. missende waarden in de eerste drie rijen

Maar verkenning van de data in Excel laat zien dat de feitelijke tabel in het werkblad pas op rij 4 begint. Door de data opnieuw in te lezen met een paar parameters kunnen we aangeven welke rijen we overslaan en welke rij de kopregel is:

#we lezen de data opnieuw in maar slaan nu 3 rijen over
df = pd.read_excel("rollingsales_bronx.xls", skiprows = 4, header = [0])

df.head()

Bronx rolling sales data example cleaned up

De weergave van de data is nu flink verbeterd. Hoewel we de eerste import ook hadden kunnen opschonen, heeft data-exploratie ons met een paar aanpassingen aan de importfunctie in Python veel tijd bespaard.

Data-exploratie is alsof je als rechercheur een plaats delict binnenloopt, waar je passief alles observeert wat niet op z’n plaats is; data opschonen is het actieve proces van het oplossen van de eigenlijke misdaad.

Data opschonen

Data-exploratie gaat doorgaans hand in hand met opschoningsstappen. Zodra we problemen in onze data blootleggen met visuele, aggregatie- of statistische middelen, moeten we ze repareren. In deze fase worden gegevens verwijderd, gecorrigeerd of geïmputeerd.

Inconsistente records

Een typisch voorbeeld van inconsistente records is een formulier waarin mensen hun geslacht moeten invullen. We kunnen verschillende vormen zien die hetzelfde betekenen, zoals 'M', 'm', 'Male' of 'MALE', en verkochten we deze maand 'aples', 'apples' of 'APPLES'. De beste manier om dit te spotten is via een frequentiegrafiek of door alle unieke waarden in een kolom te tonen. Bewerkingen op inconsistente records omvatten onder andere:

  • Strings naar lower- of propercase converteren
  • Witruimtes verwijderen
  • Kolomnamen hernoemen

Python-voorbeeld: Gebruikmakend van de eerder ingelezen dataset bij data-exploratie: let op hoe de kolomnamen inconsistent zijn geschreven:

Python example dataframe

Dat lijkt misschien onbelangrijk, maar het is wél belangrijk om kolomnamen consequent toegankelijk te maken. Zo heeft EASE-MENT een koppelteken (-) tussen de woorden, terwijl de rest spaties heeft.

Een onderdeel van opschonen is zorgen voor consistentie. Laten we dit in twee stappen fixen:

  1. Vervang spaties tussen woorden door een underscore
  2. Zet om naar propercase
# Extract columns
cols = df.columns

# Create empty list for new column names
new_cols = []

# Iterate over each column name to fix issues
for column in cols:
    # Convert column name to title case
    proper_cols = column.title()
    # Replace spaces and hyphens with underscores
    proper_cols_hyphen = proper_cols.replace(" ", "_")
    clean_col = proper_cols_hyphen.replace("-", "_")
    # Append the cleaned column name to the list
    new_cols.append(clean_col)

# Display the transformed column names
new_cols

# Replace existing columns in the dataframe with the cleaned list
df.columns = new_cols

# Preview the updated dataframe
df.head()

Python example 2

Datatypes en typeconversie

Het datatype is simpelweg hoe data wordt weergegeven en vertelt de compiler hoe de data moet worden gebruikt. Hoe data wordt weergegeven, bepaalt welke bewerkingen mogelijk zijn. Laten we de datatypes per kolom in ons Bronx-dataframe bekijken.

#data types
df.dtypes

Data Types and Type Conversion

NB: Let op hoe we kolomnamen nu makkelijk kunnen aanspreken met de dot-methode (df.Year_Built).

Alle datatypes lijken te kloppen, behalve de kolom Year_Built, die categorisch zou moeten zijn. Dat is niet heel ingrijpend, maar bij aggregaties wordt Year_Built dan waarschijnlijk toch meegenomen.

#Fix Year_Built column
df.Year_Built = df.Year_Built.astype("str")

#Check
df.dtypes

Data Types and Type Conversion 2

Missende data

Soms bevatten observaties (rijen) missende data en soms zijn hele kolommen volledig leeg. Wat doen we dan? Negeer je dat? Je kunt het vergelijken met een lekkend dak: als het regent, lekt het.

Missende waarden hebben verschillende representaties in verschillende tools. Denk aan NULL, lege strings, NaN, NA, #NA, enzovoort. De datacontext is belangrijk bij het omgaan met missende data, en begrijpen waarom data ontbreekt is cruciaal. Er zijn twee primaire methoden:

  • Verwijderen van data
  • Imputeren van data

Voordat je beslist welke methode je gebruikt, moet je eerst de patronen van missende waarden per kolom onderzoeken. We gebruiken visuele en beschrijvende technieken om dit te beoordelen.

#extract the column names
cols = df.columns

#plot a heatmap of missing values with seaborn
plt.figure(figsize = (10,5))
sns.heatmap(df[cols].isnull())

Missing Data

De plot laat visueel zien dat:

  • Alle waarden in Ease_ment en bijna alle waarden in Apartment_Number ontbreken
  • De kolommen met Units en Square_Feet hebben verspreide missende waarden Voor veel grotere datasets is deze plot mogelijk minder geschikt. Een andere aanpak is bekijken hoe significant de missende waarden zijn ten opzichte van de totale dataset.
    #Get the percentage of missing values in each column
    missing_pct = round(df.isnull().sum()/len(df) * 100, 1)
    print(missing_pct)
    

Missing Data 2

We laten de kolommen Ease_Ment en Apartment_Number vallen en vervangen vervolgens de missende waarden in de resterende kolommen.

#columns with more than 30% missing values
drop_cols = missing_pct[missing_pct > 30].index
#We can drop these columns with greater than 30 percent missing values
df_new = df.drop(columns = drop_cols)

#Extract columns with mising values between 1 and 30%
replace_cols = missing_pct[(missing_pct > 0) & (missing_pct < 30)].index

#Iterate to replace missing values
for col in replace_cols:
    #if column is year built we replace with median otherwise the mean
    if col == "Year_Built":
        df_new.fillna(df_new[col].median(), inplace = True)
    else:
        mean_value = df_new[col].mean()
        df_new.fillna(mean_value, inplace = True)
df_new.isnull().sum() #preview for missing values

Missing Data 3

Natuurlijk is er meer te zeggen over omgaan met missende waarden; dat komt aan bod in deze Datacamp-cursus over Dealing with Missing Values in Python. Verschillende datasets, types en structuren hebben verschillende behoeftes, en daarom is omgaan met missende waarden geen eenduidig proces voor alle soorten datasets. De onderstaande afbeelding toont verschillende scenario’s waarin je ofwel een deletietechniek ofwel een imputatietechniek toepast.

Missing Data 4

Duplicaten

We moeten zorgen dat we één enkele bron van waarheid hebben voor elke observatie. Soms hebben we meerdere observaties over één klant, bijvoorbeeld door een dubbele formulierinzending of fouten bij data-invoer. Hoe dit ook is ontstaan, we moeten toewerken naar één volledige, betrouwbare versie van de waarheid. Dit helpt bedrijven om:

  1. Tijd en geld niet te verspillen door dezelfde klant twee keer te targeten
  2. Een betrouwbare, complete versie van de waarheid te ontwikkelen, zodat op basis van de analyseresultaten verantwoorde beslissingen genomen kunnen worden.

Uitschieters

Uitschieters zijn extreme datapunten. Het zijn meestal heel lage of heel hoge waarden die niet in het patroon van de data passen, bijvoorbeeld:

  • Een klant van 200 jaar oud
  • Een sensorwaarde van 40° Celsius in Antarctica

Uitschieters identificeren Er zijn verschillende technieken om uitschieters te vinden, visueel of statistisch:

  1. Sorteren van de dataset: door simpelweg te sorteren kun je uitschieters in de dataset of de variabelen van interesse makkelijk zien. Deze techniek schiet echter tekort bij grote datasets en het is dan lastig om alles in één oogopslag te bekijken.

  2. Visualisatie: met boxplots, histogrammen en scatterplots kun je uitschieters gemakkelijk detecteren.

  3. Gebruik van z-scores: een statistische techniek om de ongebruikelijkheid van een waarneming te kwantificeren, ervan uitgaande dat de data normaal verdeeld is. Het is het aantal standaarddeviaties waarmee waarden boven of onder het gemiddelde liggen.

Behandeling van uitschieters Het behandelen van uitschieters houdt in dat we ze verwijderen of vervangen:

  1. Verwijder uitschieters uit de data: Dit kan inhouden dat je waarden verwijdert die onder of boven het Xe percentiel van je data liggen. Enkele scenario’s waarin je kunt verwijderen:
  2. Wanneer duidelijk is dat de data onjuist is gemeten. Zoals gezegd: een actieve klant van 200 jaar is geen geldige invoer—een typisch voorbeeld om te verwijderen.
  3. Als de uitschieter de resultaten van je analyse niet verandert, kun je deze ook laten vallen. Dit kan ook wanneer het aantal uitschieters klein is ten opzichte van de totale data.

  4. Vervang uitschieters: Hierbij vervang je de extreme waarden door het gemiddelde, de mediaan of de modus. Als het aantal uitschieters aanzienlijk is ten opzichte van de rest, dan werkt verwijderen niet. Let op: Gemiddelden zijn gevoelig voor uitschieters; kies daarom liever mediaan of modus voor vervanging.

Dataverificatie

Nadat het opschonen is voltooid, is het belangrijk de datakwaliteit opnieuw te beoordelen via data-exploratie. Zo verifiëren we de juistheid en volledigheid van het opschoningsproces—deels om te zorgen dat we geen stap hebben gemist, en ook om te borgen dat we in lijn blijven met de datacontext.

Data opschonen, rapportage en automatisering

Rapporteren houdt in dat je de gezondheid van de data na het opschonen documenteert, evenals de stappen van het opschoningsproces. Rapportage zorgt voor een leidraad voor vergelijkbare toekomstige behoeften (reproduceerbaarheid), zodat dit proces later kan worden geautomatiseerd.

Automatisering draait erom dat data opschonen reproduceerbaar is. Veel van het opschonen bestaat uit herbruikbare scripts die met minimale aanpassingen opnieuw ingezet kunnen worden.

Conclusie

We hebben data opschonen uitgebreid besproken en alle onderdelen die je moet meenemen voor een succesvol opschoningsproject. Het is een tijdrovende fase waar data professionals naar schatting 60% van een heel data science-project aan besteden. Het is het fundament dat in zijn eentje de uitkomst van een project bepaalt. Verschillende data uit verschillende bronnen hebben uiteenlopende behoeftes en je zult de stappen daarop moeten afstemmen voor jouw usecase.

Bronnen:

  • De afbeeldingen bij datatransformatie zijn geknipt uit een Excel-werkboek dat hier te vinden is
  • De Python-notebook is beschikbaar in de DataCamp-werkruimte
Onderwerpen
Data-analyse
Data Science

Leer data opschonen met DataCamp

{count, plural, one {Cursus} other {Cursussen}}

Data opschonen in Python

{hours} uur
161.6K
Leer hoe je vuile data kunt diagnosticeren en behandelen en ontwikkel de vaardigheden die nodig zijn om je ruwe data om te zetten in nauwkeurige inzichten!
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

{count, plural, one {blog} other {blogs}}

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken