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.
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'] < 0Bereiken 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.
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
- De salesdataset laden en controleren
- Omzetberekeningen en feature-engineering
- GroupBy-analyse per regio en categorie
- Maandelijkse trendvisualisatie