Waarom gegevens opschonen met pandas in plaats van met de hand?

Gegevens opschonen in pandas loont, omdat elke stap wordt vastgelegd en binnen enkele seconden opnieuw kan worden uitgevoerd op de export van volgende maand. Handmatige correcties in een spreadsheet zijn daarentegen traag, worden gemakkelijk vergeten en zijn niet te controleren.

Stel u een fictieve tuincentrumgroep met vier vestigingen voor: Fernhill Gardens. Financieel analist Tomasz ontvangt maandelijks een CSV met online bestellingen. In het onderstaande voorbeeld staat dezelfde bestelling er twee keer in, is de vestigingsnaam op verschillende manieren geschreven, bevatten bedragen een valutasymbool en een komma, staan datums afwisselend met de dag of het jaar vooraan en worden ontbrekende waarden weergegeven als lege velden, 'N/A' en '-'. Dit handmatig corrigeren kost een dag en de totalen komen nooit helemaal overeen met het rapport van de betaaldienstverlener.

order_idsiteorder_dateamountpostcode
10231Leeds03/11/2026£1,240.00LS6
10231Leeds03/11/2026£1,240.00LS6
10232leeds2026-11-0486.50N.v.t.
10233YORK05/11/2026-YO1
10234Harrogate142

Hoe schoont u stap voor stap gegevens op met pandas?

Schoon gegevens op in pandas door bij het inladen aan te geven welke markeringen ontbrekende waarden aanduiden, de gegevens te bekijken, tekst te standaardiseren, getallen en datums om te zetten, duplicaten te verwijderen, te bepalen wat u met de resterende ontbrekende waarden doet en het resultaat vervolgens te controleren aan de hand van een betrouwbaar totaal. Door deze volgorde aan te houden, voorkomt u dat de ene correctie de andere ongedaan maakt.

1. Geef bij het inladen aan welke markeringen ontbrekende waarden aanduiden

De functie read_csv van pandas leest het bestand in als een DataFrame. Met het argument na_values kunt u extra tekenreeksen opgeven, zoals 'N/A' en '-', die als ontbrekende waarden moeten worden behandeld, naast de standaardwaarden die pandas al herkent, zoals lege velden. Door ze hier op te geven, hoeft u ze later niet op te sporen.

2. Inspecteer voordat u iets wijzigt

Bekijk de eerste rijen met head, de kolomtypen en aantallen niet-ontbrekende waarden met info, en het aantal ontbrekende waarden per kolom door isna met sum te combineren. Noteer wat u vindt: bij Fernhill is amount opgeslagen als tekst en bevat order_date verschillende notaties.

3. Standaardiseer tekst

Gebruik de tekenreeksmethoden op een kolom: str.strip verwijdert spaties aan het begin en einde, en str.lower of str.title maakt het hoofdlettergebruik consistent, zodat ' Leeds', 'leeds ' en 'LEEDS' één locatie worden. Vraag vervolgens de unieke waarden op met unique om resterende schrijfvarianten te vinden.

4. Zet getallen om

Verwijder het valutasymbool en de komma als scheidingsteken voor duizendtallen met str.replace en converteer vervolgens met to_numeric. Als u het argument errors instelt op coerce, wordt alles wat niet kan worden verwerkt omgezet in een ontbrekende waarde in plaats van dat de verwerking stopt. Zo kunt u die rijen tellen en controleren in plaats van ze ongemerkt kwijt te raken.

5. Zet datums om

to_datetime zet tekst om in geldige datums. Geef bij gemengde notaties waar mogelijk expliciet een datumnotatie op, of stel dayfirst in voor Britse datumnotaties. Stel errors in op coerce, zodat datums die niet kunnen worden verwerkt NaT worden: de aanduiding van pandas voor een ontbrekende datum. Let op: dayfirst is een voorkeur, geen strikte regel. Controleer dus de resultaten.

6. Verwijder duplicaten

drop_duplicates verwijdert herhaalde rijen. Standaard telt een rij alleen als duplicaat als elke kolom overeenkomt; met het argument subset kunt u duplicaten beoordelen op basis van gekozen kolommen zoals order_id, en keep bepaalt of het eerste of laatste exemplaar behouden blijft.

7. Beslis wat u met de resterende hiaten doet

dropna verwijdert rijen met ontbrekende waarden, maar verwijdert standaard een rij zodra er in een kolom een waarde ontbreekt. Gebruik het argument subset om alleen rijen te verwijderen waarin iets ontbreekt dat u echt nodig hebt, zoals amount, of gebruik fillna om een ontbrekende waarde aan te vullen met een opgegeven waarde. Gebruik daarna astype om de definitieve kolomtypen in te stellen, bijvoorbeeld een categorietype voor site.

Hoe ziet een zwakke opschoningsronde eruit, en hoe een verbeterde?

Bij de zwakke aanpak wordt het bestand geladen met read_csv, wordt dropna zonder argumenten aangeroepen en vervolgens drop_duplicates zonder argumenten. Omdat de postcode vaak ontbreekt, verwijdert dropna een groot deel van de geldige bestellingen. En omdat ' Leeds' en 'leeds ' nog steeds verschillen, blijven sommige duplicaten staan. De omzet valt veel te laag uit en niemand weet welke rijen zijn verwijderd.

De verbeterde verwerking markeert 'N/A' en '-' bij het inladen als ontbrekende waarden, verwijdert witruimte aan het begin en einde van site en geeft elk woord daarin een hoofdletter, zet amount om met to_numeric na het verwijderen van '£' en komma's, zet order_date om met dayfirst en coerce, verwijdert duplicaten op basis van order_id waarbij de eerste behouden blijft, en verwijdert alleen rijen waarin amount ontbreekt. Vervolgens toont de verwerking hoeveel rijen elke stap heeft verwijderd en vergelijkt ze de totale omzet met het rapport van de betaalprovider. Tomasz kan nu elk verschil verklaren.

Hoe controleert u of het opschonen is gelukt?

Controleer het opschonen door voor en na elke stap de rijen te tellen, een belangrijk totaal te vergelijken met een onafhankelijke bron en de rijen te bekijken waarvan waarden bij de omzetting als ontbrekend zijn aangemerkt. Voer info opnieuw uit om de kolomtypen te controleren en maak een lijst van unieke waarden voor categorieën zoals locatie. Als een stap meer rijen heeft verwijderd dan verwacht, bekijk die dan voordat u verdergaat.

Hoe kan een AI-assistent helpen bij het opschonen van gegevens met pandas?

Een AI-assistent kan stappen voor het opschonen van gegevens opstellen als u elke kolom, de problemen daarin en de gewenste regel beschrijft. Ook kan de assistent onbekende functies uitleggen. Beschrijf de structuur met verzonnen voorbeeldwaarden in plaats van echte klantgegevens te plakken, zoals namen, adressen of volledige postcodes. Vraag de assistent om na elke stap het aantal rijen te vermelden en controleer elk gebruikt functieargument aan de hand van de officiële pandas-documentatie, want assistenten stellen soms opties voor die niet bestaan of tussen versies zijn veranderd.

Wat zijn veelgemaakte fouten bij het opschonen van gegevens met pandas?

De meest voorkomende fout is dropna aanroepen zonder argumenten en daardoor rijen verliezen die, afgezien van een optionele kolom, in orde waren. Andere fouten: duplicaten verwijderen voordat de tekst is gestandaardiseerd, datums omzetten zonder de volgorde van dag en maand te controleren, het oorspronkelijke bestand overschrijven en het opgeschoonde totaal nooit vergelijken met een betrouwbaar cijfer.

Waar staat deze les binnen Tosheo.ai?

Dit is een programmeerles in de categorie Datawetenschap en analyse van de cursus datawetenschap. Elk onderwerp op Tosheo.ai begint met begrippen en oefeningen zonder code. De programmeerlessen vormen een optioneel verdiepingstraject: na aanmelding schrijft en voert u in de volledige praktijkversie van deze les elke opschoonstap uit in Python met pandas. Uw werk wordt beoordeeld aan de hand van een beoordelingsschema. Als Python nieuw voor u is, begin dan met de Python-cursus. De cursus bouwt praktische vaardigheden op; het is geen intensief opleidingsprogramma en biedt geen baangarantie.

Bronnen en reikwijdte

pandas-documentatie: read_csv (gecontroleerd op 19 October 2026) ↗

pandas-gebruikershandleiding: werken met ontbrekende gegevens (gecontroleerd op 19 October 2026) ↗

pandas-documentatie: DataFrame.dropna (gecontroleerd op 19 October 2026) ↗

pandas-documentatie: DataFrame.drop_duplicates (gecontroleerd op 19 October 2026) ↗

pandas-documentatie: DataFrame.astype (gecontroleerd op 19 October 2026) ↗

pandas-documentatie: to_numeric (gecontroleerd op 19 October 2026) ↗

pandas-documentatie: to_datetime (gecontroleerd op 19 October 2026) ↗

pandas-documentatie: Series.str.strip (gecontroleerd op 19 October 2026) ↗