Pandas & NumPy Academy · Les

Bevindingen samenvatten in een rapport

Verzamel de belangrijkste inzichten in een gestructureerde markdownsamenvatting met verwijzingen naar visualisaties en concrete vervolgstappen.

Les 4 van 413 stappen

Bevindingen samenvatten in een rapport is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 4 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.

Waarom een gestructureerd EDA-rapport belangrijk is

Ruwe Jupyter-notebooks met honderden diagrammen en codecellen zijn lastig te delen met belanghebbenden die op basis van de bevindingen actie moeten ondernemen. Een gestructureerd EDA-samenvattingsrapport destilleert de belangrijkste inzichten uit al uw univariate en bivariate analyses tot een duidelijk verhaal. Goede rapporten maken onderscheid tussen bevindingen (wat de gegevens laten zien) en implicaties (wat u daarmee moet doen) en bevatten alleen visualisaties die belangrijke beweringen ondersteunen.

De zes onderdelen van een EDA-rapport

Een professioneel EDA-rapport bevat doorgaans zes onderdelen: 1) Overzicht van de gegevensset (vorm, bron, periode), 2) Problemen met de gegevenskwaliteit (ontbrekende waarden, uitschieters, duplicaten en de aanpak daarvan), 3) Verdelingen van belangrijke variabelen (de belangrijkste numerieke en categorische kolommen), 4) Correlaties en verbanden (de sterkste gevonden relaties), 5) Inzichten per subgroep (groepsverschillen die relevant zijn voor de bedrijfsvraag), en 6) Aanbevolen vervolgstappen (opschoningsacties, modelleringssuggesties).

Het onderdeel Overzicht van de gegevensset schrijven

Het overzicht moet programmatisch worden gegenereerd, zodat het altijd accuraat is. Leg de vorm, kolomnamen en gegevenstypen vast, evenals het datumbereik (indien van toepassing) en de bron of versie van de gegevensset. Als u dit onderdeel in code schrijft in plaats van als proza, voorkomt u de veelvoorkomende fout waarbij een rapport een gegevensset met 10.000 rijen beschrijft, terwijl het in werkelijkheid is gegenereerd op basis van een opgeschoonde versie met 9.800 rijen.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

print('=== DATASET OVERVIEW ===')
print(f'Shape: {df.shape[0]:,} rows x {df.shape[1]} columns')
print(f'Columns: {", ".join(df.columns)}')
print(f'Numeric: {df.select_dtypes("number").shape[1]} columns')
print(f'Categorical: {df.select_dtypes("object").shape[1]} columns')
print(f'Boolean: {df.select_dtypes("bool").shape[1]} columns')
print(f'Total missing cells: {df.isna().sum().sum():,}')
print(f'Duplicate rows: {df.duplicated().sum()}')

Het onderdeel Gegevenskwaliteit schrijven

Het onderdeel over gegevenskwaliteit vermeldt elk gevonden probleem en de genomen beslissing. Gebruik een tabel met de kolommen: Kolom, Probleem, Ernst (Hoog/Middel/Laag), Genomen actie. Bereken deze tabel programmatisch op basis van de profileringsresultaten, zodat deze automatisch wordt bijgewerkt wanneer de gegevens veranderen. De ernst moet de bedrijfsimpact weerspiegelen — een ontbrekende doelvariabele heeft een hoge ernst, terwijl een ontbrekende kolom die niet voorspellend is een lage ernst kan hebben.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

# Auto-generate data quality table
missing_pct = (df.isna().sum() / len(df) * 100).round(1)
quality = missing_pct[missing_pct > 0].to_frame(name='missing_pct')
quality['severity'] = quality['missing_pct'].apply(
    lambda x: 'High' if x > 30 else ('Medium' if x > 10 else 'Low')
)
quality['action'] = quality['missing_pct'].apply(
    lambda x: 'Drop column' if x > 50 else 'Impute or flag'
)
print(quality.to_string())

Samenvattende figuren met meerdere panelen genereren

Een samenvattende figuur combineert meerdere diagrammen in één afbeelding die in een rapport kan worden opgenomen. Gebruik plt.subplots(rows, cols) om een raster te maken en geef elke belangrijke bevinding een eigen paneel. Sla de figuur op met savefig() en een DPI die past bij het uitvoerformaat (150 voor een scherm, 300 voor drukwerk). Geef elk paneel een duidelijke formulering van de bevinding als titel, zoals 'Tarief is rechts-scheef (scheefheid=4.1)', in plaats van alleen de kolomnaam.

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

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(2, 2, figsize=(12, 10))

# 1. Fare distribution
sns.histplot(df['fare'], kde=True, bins=30, ax=axes[0][0])
axes[0][0].set_title('Fare is right-skewed (skew=4.1)')

# 2. Survival by class
survival = df.groupby('class')['survived'].mean().reset_index()
sns.barplot(data=survival, x='class',
            y='survived', order=['First', 'Second', 'Third'], ax=axes[0][1])
axes[0][1].set_title('Survival Rate Drops by Class')

# 3. Age distribution
sns.histplot(df['age'].dropna(), kde=True, bins=25, ax=axes[1][0], color='coral')
axes[1][0].set_title('Age: Near-Normal, Missing 20%')

# 4. Embarkation counts
sns.countplot(data=df, x='embarked', ax=axes[1][1], palette='Set2')
axes[1][1].set_title('Most Boarded at Southampton')

plt.tight_layout()
plt.savefig('/tmp/eda_summary.png', dpi=150, bbox_inches='tight')
plt.show()
print('Saved: /tmp/eda_summary.png')

Bevindingen als verhalende tekst schrijven

Elke belangrijke bevinding moet worden geformuleerd als een bedrijfselevante zin, niet als een technische beschrijving. Schrijf in plaats van 'De tariefkolom heeft scheefheid=4.1' bijvoorbeeld 'Ticketprijzen zijn extreem rechts-scheef — een klein aantal eersteklaspassagiers betaalde meer dan 10× het mediane tarief, wat omzetanalyses op basis van gemiddelde prijzen kan vertekenen.' Deze vertaling van een statistische waarneming naar een bedrijfsimplicatie maakt EDA-rapporten waardevol voor niet-technische belanghebbenden.

Markdown-rapporten programmatisch genereren

U kunt EDA-rapporten rechtstreeks vanuit Python schrijven als markdownbestanden. Maak een tekenreeks met markdownkoppen, opsommingstekens en ingesloten afbeeldingskoppelingen en schrijf die vervolgens naar een .md-bestand. Met deze aanpak maakt u reproduceerbare rapporten die automatisch worden bijgewerkt wanneer de onderliggende gegevens veranderen. Daardoor zijn ze geschikt voor integratie in uitvoerartefacten van een gegevenspijplijn of in Git-opslagplaatsen.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

# Build a simple markdown report
lines = [
    '# EDA Summary Report: Titanic Dataset',
    '',
    '## Overview',
    f'- **Rows:** {len(df):,}',
    f'- **Columns:** {df.shape[1]}',
    f'- **Total Missing Cells:** {df.isna().sum().sum():,}',
    '',
    '## Key Findings',
    '- First-class passengers had a 63% survival rate vs 24% for third class.',
    '- Fare is extremely right-skewed (skew=4.1); use log transform before modelling.',
    '- Age is missing in 20% of rows — median imputation recommended.',
    '',
    '## Recommended Next Steps',
    '1. Impute age with median grouped by class.',
    '2. Drop the cabin column (77% missing).',
    '3. Log-transform fare before any regression modelling.',
]

with open('/tmp/eda_report.md', 'w') as f:
    f.write('\n'.join(lines))

print('Report written to /tmp/eda_report.md')
print('\n'.join(lines[:10]))

Naar HTML exporteren met Jupyter

Jupyter-notebooks kunnen naar HTML of PDF worden geëxporteerd met jupyter nbconvert --to html notebook.ipynb. Hierbij blijven alle diagrammen, code en markdowncellen behouden in één deelbaar bestand dat u zonder Python-installatie kunt bekijken. Voer voor een volledig geautomatiseerde gegevenspijplijn het notebook programmatisch uit met papermill: papermill input.ipynb output.ipynb -p date '2024-01-01'. Hiermee wordt het notebook als script geparametriseerd en uitgevoerd.

# To export a Jupyter notebook to HTML:
# jupyter nbconvert --to html eda_notebook.ipynb

# To parameterise and run with papermill:
# pip install papermill
# papermill eda_template.ipynb eda_2024.ipynb -p date '2024-01-01' -p min_rows 1000

# The output notebook can then be exported:
# jupyter nbconvert --to html eda_2024.ipynb
print('Jupyter nbconvert and papermill automate report generation.')

Uitvoerbare vervolgstappen structureren

Het onderdeel aanbevolen vervolgstappen wordt vaak het meest gelezen in een EDA-rapport. Structureer het als een geprioriteerde checklist: P1 (blokkerend) — problemen die moeten worden opgelost voordat een analyse geldig is (bijvoorbeeld verkeerd geïdentificeerde gegevenstypen), P2 (belangrijk) — opschoningsacties die de modelprestaties aanzienlijk beïnvloeden (bijvoorbeeld de behandeling van uitschieters), P3 (goed om te hebben) — ideeën voor verrijking en aanvullende gegevensbronnen om te onderzoeken. Met deze indeling kan het team eenvoudig de inspanning op de juiste manier verdelen.

ydata-profiling gebruiken voor snelle rapportage

ydata-profiling (pip install ydata-profiling) genereert met één aanroep een uitgebreid HTML-rapport. Het rapport bevat overzichtsstatistieken, variabeleverdelingen, correlaties, patronen van ontbrekende waarden en detectie van duplicaten — alle onderdelen van een handmatig EDA-rapport. Gebruik het voor snelle verkenning aan het begin van een project en schrijf daarna een aangepast samenvattingsrapport om de meest relevante bevindingen voor uw specifieke bedrijfsvraag uit te lichten.

# pip install ydata-profiling
# from ydata_profiling import ProfileReport
# import seaborn as sns

# df = sns.load_dataset('titanic')
# profile = ProfileReport(df, title='Titanic EDA')
# profile.to_file('titanic_eda.html')  # interactive HTML
# profile.to_notebook_iframe()          # inline in Jupyter

# Key sections in the generated report:
# - Overview: shape, missing, duplicates
# - Variables: per-column statistics and plots  
# - Correlations: Pearson, Spearman, Cramers V
# - Missing values: heatmap and dendrogram
# - Duplicates: full list of duplicate rows
print('ydata-profiling generates full EDA reports with one function call.')

Antipatronen in EDA-rapporten vermijden

Veelvoorkomende antipatronen in EDA-rapporten zijn: elk diagram voor elke kolom tonen (dit levert rapporten van 50 pagina's op die niemand leest — selecteer de 5 tot 10 belangrijkste), feiten zonder interpretatie vermelden ('leeftijd heeft 177 null-waarden' — wat moeten we daarmee doen?), het rapport na het opschonen niet vernieuwen (opschonen, daarna de profilering opnieuw uitvoeren om te bevestigen dat de problemen zijn opgelost), en opschoningscode met de analyse vermengen (houd het opschonen van gegevens gescheiden van het EDA-verhaal).

Korte controle

Toets uw begrip van het schrijven van EDA-rapporten uit deze les.

Samenvatting van de les

In deze les hebt u geleerd EDA-rapporten op te delen in zes onderdelen (overzicht, kwaliteit, verdelingen, correlaties, inzichten per subgroep, vervolgstappen), samenvattende figuren met meerdere panelen en markdownrapporten programmatisch te genereren, en statistische bevindingen te vertalen naar bedrijfselevante taal. Hierna verkennen we geavanceerde indexeringstechnieken — het maken van MultiIndex-objecten en hiërarchische selectie in Pandas.

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 “Bevindingen samenvatten in een rapport” gratis?

Ja — de volledige tekst van “Bevindingen samenvatten in een rapport” 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 “Bevindingen samenvatten in een rapport”?

Verzamel de belangrijkste inzichten in een gestructureerde markdownsamenvatting met verwijzingen naar visualisaties en concrete vervolgstappen. 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 4 van 4.

Hoe lang duurt de les “Bevindingen samenvatten in een rapport”?

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. Checklist voor datasetprofilering
  2. Univariate analyse
  3. Bivariate en correlatieanalyse
  4. Bevindingen samenvatten in een rapport
← Terug naar Pandas & NumPy Academy