Pandas & NumPy Academy · Les

De salesdataset laden en controleren

Importeer een CSV met orderrecords, controleer dtypes en ontbrekende waarden en corrigeer het parseren van datums en anomalieën met negatieve aantallen.

Les 1 van 413 stappen

De salesdataset laden en controleren is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.

Kennismaken met de verkoopdataset

Een typische verkoopdataset bevat kolommen zoals order_id, order_date, customer_id, product, category, quantity, unit_price en region. Voordat je begint met analyseren, moet je dit bestand laden en eerst de structuur bekijken. Het doel van deze eerste stap is begrijpen over welke gegevens je beschikt voordat je ook maar één formule schrijft.

import pandas as pd

df = pd.read_csv('sales.csv')
print(df.shape)       # (rows, columns)
print(df.head())

Vorm en kolomnamen controleren

Controleer direct na het laden df.shape om de afmetingen van de dataset te kennen en df.columns om alle kolomnamen te bekijken. Zo bevestig je dat het bestand correct is geladen en zie je of kolomnamen onverwachte spaties of hoofdletters bevatten die moeten worden opgeschoond. Een afwijkend aantal kolommen is een vroeg waarschuwingssignaal voor een beschadigd bestand.

print('Rows, Cols:', df.shape)
print('Columns:', df.columns.tolist())
print('Index:', df.index[:5].tolist())

Gegevenstypen controleren met dtypes

Gebruik df.dtypes of df.info() om het afgeleide gegevenstype van elke kolom te bekijken. Veelvoorkomende problemen zijn datumkolommen die als object (tekenreeks) zijn geladen en numerieke kolommen die als object zijn geladen door losse komma's of valutasymbolen. Door problemen met typen vroeg te signaleren, voorkom je onopvallende fouten in latere berekeningen.

print(df.dtypes)

# More detail including non-null counts
df.info()

Ontbrekende waarden tellen

Voer df.isna().sum() uit om het aantal NaN-waarden per kolom te tellen. Converteer dit naar een percentage met df.isna().mean() * 100 om te zien welk deel van elke kolom ontbreekt. Voor kolommen met meer dan 30–40% ontbrekende waarden moet je meestal een beslissing nemen: de kolom verwijderen, waarden imputeren of de ontbrekende waarden markeren met een aparte indicatorvariabele.

missing = df.isna().sum()
missing_pct = df.isna().mean() * 100

print(pd.DataFrame({'count': missing, 'pct': missing_pct}))

Dubbele rijen detecteren

Dubbele orderrecords verhogen de omzet totalen ten onrechte en verstoren analyses per klant. Gebruik df.duplicated().sum() om exacte duplicaten te tellen en df.duplicated(subset=['order_id']).sum() om te controleren op herhaalde order-ID's, die uniek zouden moeten zijn. Door duplicaten al tijdens het laden te identificeren, bespaar je later uren debuggen.

print('Exact duplicates:', df.duplicated().sum())
print('Duplicate order_ids:', df.duplicated(subset=['order_id']).sum())

# Preview the duplicated rows
print(df[df.duplicated(subset=['order_id'], keep=False)].head())

Parseren van een datumkolom corrigeren

Een datumkolom die als object is geladen, moet je converteren met pd.to_datetime() zodat je datumrekenkunde kunt uitvoeren. Geef format='%Y-%m-%d' door als je de indeling kent, of gebruik infer_datetime_format=True voor gemengde indelingen. Haal na de conversie het jaar en de maand op met de .dt-accessor voor groeperingen op basis van tijd.

df['order_date'] = pd.to_datetime(df['order_date'], format='%Y-%m-%d')

df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

print(df[['order_date', 'year', 'month']].head())

Negatieve hoeveelheden opsporen

Negatieve waarden voor quantity staan meestal voor retouren of invoerfouten. Gebruik booleaanse indexering om ze te vinden: df[df['quantity'] < 0]. Bepaal of je ze behandelt als legitieme retouren (behouden met een markering) of als fouten (verwijderen of corrigeren). Documenteer je beslissing altijd, zodat de pijplijn reproduceerbaar is.

negatives = df[df['quantity'] < 0]
print(f'Negative quantity rows: {len(negatives)}')
print(negatives.head())

# Flag returns separately
df['is_return'] = df['quantity'] < 0

Bereiken van numerieke kolommen controleren

Gebruik df.describe() om het minimum, maximum, gemiddelde en de kwartielen van elke numerieke kolom te bekijken. Een unit_price met een minimum van nul of een negatieve waarde is verdacht. Een maximum voor quantity dat veel hoger ligt dan een redelijke bestelhoeveelheid kan op een invoerfout wijzen. Door bereiken op plausibiliteit te controleren, spoor je snel afwijkingen op.

print(df[['quantity', 'unit_price']].describe())

# Any price exactly 0?
print('Zero price rows:', (df['unit_price'] == 0).sum())

Kolommen met categorische waarden controleren

Gebruik voor kolommen zoals region en category df['region'].value_counts() om alle unieke waarden en hun frequenties te bekijken. Let op typefouten, inconsistente hoofdlettergebruik (bijvoorbeeld 'north' versus 'North') of onverwachte waarden die wijzen op problemen in de voorafgaande gegevensverwerking. Standaardiseer deze waarden voordat je een groupby-bewerking uitvoert.

print(df['region'].value_counts())
print(df['category'].value_counts())

# Normalise capitalisation
df['region'] = df['region'].str.strip().str.title()

Een auditsamenvatting maken

Met een gestructureerde DataFrame met een auditsamenvatting kun je problemen met de gegevenskwaliteit duidelijk communiceren aan belanghebbenden. Bouw deze door metrieken zoals het aantal rijen, het aantal kolommen, het aantal ontbrekende waarden en het aantal duplicaten in een woordenboek te verzamelen en dit naar een DataFrame om te zetten. Deze samenvatting vormt de eerste sectie van je analyserapport en onderbouwt elke opschoningsstap die je uitvoert.

audit = {
    'rows': len(df),
    'columns': len(df.columns),
    'missing_cells': df.isna().sum().sum(),
    'duplicate_rows': df.duplicated().sum(),
    'date_range_start': df['order_date'].min(),
    'date_range_end': df['order_date'].max()
}

for k, v in audit.items():
    print(f'{k}: {v}')

Een schone momentopname opslaan

Sla na de eerste audit en basisreparaties (correcties van gegevenstypen, verwijderen van duplicaten en vlagkolommen) een schone momentopname op, zodat vervolgstappen altijd vanuit een consistente basis beginnen. Gebruik df.to_csv('sales_clean.csv', index=False) of, voor sneller opnieuw laden, df.to_parquet('sales_clean.parquet'). Parquet behoudt gegevenstypen, waaronder datetime, wat CSV niet doet.

# Drop exact duplicates before saving
df = df.drop_duplicates(subset=['order_id'], keep='first')

# Save clean snapshot
df.to_parquet('sales_clean.parquet', index=False)
print('Saved', len(df), 'rows to sales_clean.parquet')

Korte controle

Test je begrip van de concepten voor gegevensanalyse uit deze les.

Samenvatting van de les

In deze les heb je geleerd hoe je: een CSV-bestand laadt en de vorm en kolommen controleert, gegevenstypen, ontbrekende waarden, duplicaten en negatieve hoeveelheden controleert, en een schone momentopname opslaat voor vervolgstappen. Hierna verkennen we omzetberekeningen en feature engineering op de schone dataset.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “De salesdataset laden en controleren” gratis?

Ja — de volledige tekst van “De salesdataset laden en controleren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.

Wat leer ik in “De salesdataset laden en controleren”?

Importeer een CSV met orderrecords, controleer dtypes en ontbrekende waarden en corrigeer het parseren van datums en anomalieën met negatieve aantallen. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?

Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “De salesdataset laden en controleren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?

Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. De salesdataset laden en controleren
  2. Omzetberekeningen en feature-engineering
  3. GroupBy-analyse per regio en categorie
  4. Maandelijkse trendvisualisatie
← Terug naar Pandas & NumPy Academy