- Leren
- Informatica & ICT
- Data science & AI
- Data-analyse met Python: NumPy, pandas en visualisatie
- Verkennende data-analyse in Python
Verkennende data-analyse in Python
GemiddeldLes 8 van 8 in Cursus Data-analyse met Python: NumPy, pandas en visualisatie
Wat je leert
- Leg uit waarvoor verkennende data-analyse dient, zet een brede vraag om in concrete vragen en richt een notebook in dat iedereen van boven naar beneden opnieuw kan uitvoeren.
- Formuleer het doel en de vragen van een verkennende analyseBeschrijf wat verkennende data-analyse doet, volg de werkwijze van vragen tot bevindingen en schrijf specifieke vragen die de gegevens kunnen beantwoorden.
- Richt een notebook in dat iedereen opnieuw kan uitvoerenRicht een Jupyter-notebook zo in dat het van boven naar beneden dezelfde resultaten oplevert, met duidelijke secties, relatieve paden, vastgelegde versies, vaste startwaarden voor toevalsgeneratoren en ingebouwde controles.
- Formuleer het doel en de vragen van een verkennende analyse
- Inspecteer de omvang, structuur en variabeletypen van een nieuwe dataset, meet ontbrekende en dubbele gegevens en controleer of waarden geldig en consistent zijn voordat je een patroon vertrouwt.
- Inspecteer de structuur, omvang en variabeletypenGebruik inspectiemethoden van pandas om de vorm, kolommen, typen en sleutels van een dataset te leren kennen, deel elke variabele in voor de analyse en herken waarden die met het verkeerde datatype zijn opgeslagen.
- Bepaal hoeveel ontbrekende waarden en duplicaten er zijnTel ontbrekende waarden en hun aandeel per kolom, vind verborgen codes voor ontbrekende waarden, controleer of het ontbreken een patroon volgt en spoor dubbele volledige rijen en dubbele sleutels op.
- Controleer of waarden geldig en consistent zijnControleer bereiken, categorieën, verbanden tussen kolommen, eenheden en tijdsdekking en leg elk gegevenskwaliteitsprobleem en elke beslissing vast.
- Inspecteer de structuur, omvang en variabeletypen
- Vat afzonderlijke numerieke en categorische variabelen samen en breng ze in beeld, herken verdelingsvormen en spoor uitschieters op en bepaal hoe je ze verwerkt.
- Vat een numerieke variabele samen met centrum- en spreidingsmatenBereken en interpreteer centrum-, spreidings- en positiematen in pandas en kies robuuste samenvattingen wanneer gegevens scheef verdeeld zijn of extreme waarden bevatten.
- Breng verdelingsvormen in beeld en beschrijf zeMaak histogrammen, dichtheidskrommen, boxplots en ECDF's met pandas en seaborn, kies klassen en schalen die de werkelijke vorm tonen en beschrijf een verdeling in woorden met getallen.
- Vat categorische variabelen samenMaak frequentietabellen en staafdiagrammen voor categorische variabelen, houd ordinale categorieën op volgorde, verwerk zeldzame categorieën en ontbrekende labels en vermeld de noemer van elk percentage.
- Spoor uitschieters op en bepaal hoe je ze verwerktMarkeer ongebruikelijke waarden met de IQR-regel, z-scores en robuuste scores, onderzoek hun oorzaak en kies en documenteer een verantwoorde verwerking.
- Vat een numerieke variabele samen met centrum- en spreidingsmaten
- Toon verbanden tussen numerieke variabelen met spreidingsdiagrammen, meet hun sterkte met correlatiecoëfficiënten en interpreteer wat een samenhang wel en niet kan laten zien.
- Toon en beschrijf verbanden tussen twee numerieke variabelenMaak spreidingsdiagrammen en matrices van spreidingsdiagrammen die ook met veel punten leesbaar blijven, voeg een derde variabele toe met kleur of deelgrafieken en beschrijf richting, vorm, sterkte en ongebruikelijke punten.
- Meet samenhang met correlatiecoëfficiëntenBereken en interpreteer Pearson-, Spearman- en Kendallcorrelatie in pandas, lees een correlatiematrix en hittekaart en herken wat een coëfficiënt mist.
- Interpreteer verbanden en beperk je conclusies tot wat de gegevens ondersteunenLeg uit waarom samenhang geen oorzaak aantoont, herken verstorende variabelen, de Simpsonparadox, tijdstrends, een beperkt bereik, aggregatie en toevalsbevindingen en formuleer conclusies daarnaar.
- Toon en beschrijf verbanden tussen twee numerieke variabelen
- Vergelijk verdelingen, aandelen en gebeurtenisfrequenties tussen groepen en perioden, met aandacht voor groepsgroottes en de juiste noemers, en herken wanneer een verschil op te weinig gegevens berust.
- Vergelijk een numerieke variabele tussen groepenVat een numerieke variabele per groep samen met aantallen, centrum- en spreidingsmaten, toon de groepsverdelingen naast elkaar en druk verschillen absoluut en relatief uit.
- Vergelijk categorieaandelen en gebeurtenisfrequenties tussen segmentenMaak kruistabellen met rij- of kolompercentages, vergelijk gebeurtenisfrequenties met de juiste noemer en onderscheid procentpunten van procentuele veranderingen.
- Vergelijk segmenten door de tijdAggregeer gegevens per periode en segment, vermijd valkuilen zoals onvolledige en ongelijke perioden, onderscheid seizoenspatronen van trends en onderzoek ontbrekende perioden en plotselinge verschuivingen.
- Vergelijk een numerieke variabele tussen groepen
- Zet verkenning om in duidelijke, onderbouwde bevindingen met eerlijk vermelde beperkingen en deel de analyse als een overzichtelijk notebook of rapport dat anderen opnieuw kunnen uitvoeren en controleren.
- Zet waarnemingen om in duidelijke, onderbouwde bevindingenSchrijf bevindingen die de vragen beantwoorden met onderbouwing, omvang en reikwijdte, kies en label grafieken die elke bevinding zichtbaar maken en vermeld beperkingen en vervolgstappen.
- Deel een reproduceerbare analyseBereid een overzichtelijk notebook voor dat opnieuw kan worden uitgevoerd, bereken elk gerapporteerd getal in code, exporteer het als rapport, sla figuren en tabellen op, leg de herkomst- en verwerkingsgeschiedenis vast en bescherm persoonsgegevens.
- Zet waarnemingen om in duidelijke, onderbouwde bevindingen
Verkennende data-analyse in Python: uitleg
1Plan een verkennende analyse in een notebook
Duidelijke vragen maken een verkennende analyse bruikbaar en een betrouwbaar notebook maakt de resultaten controleerbaar. Begin door de vraag aan een beslissing te koppelen, de populatie vast te stellen en te achterhalen wat één rij betekent. Orden daarna de code, instellingen en controles zodat een nieuwe sessie het werk kan reproduceren. Deze gewoonten geven latere grafieken en vergelijkingen een doel en een betrouwbaar uitgangspunt.
1.1 Vragen die verkenning richting geven
Bij verkennende data-analyse, of EDA, gebruik je samenvattingen en grafieken om te leren wat een dataset bevat. Je zoekt naar kwaliteitsproblemen, patronen en verrassingen en zet die vervolgens om in betere vragen. John Tukey ontwikkelde en verspreidde deze aanpak, met name in zijn boek Exploratory Data Analysis uit 1977.
Begin met een beslissing
Een vraag als “Hoe gaat het met onze bezorgingen?” is te breed om de eerste berekening richting te geven. Vraag welke beslissing de analyse moet ondersteunen en benoem daarna de variabelen en vergelijkingen die ertoe doen. Bruikbare vragen zijn: “Wat is de gebruikelijke bezorgtijd en hoeveel varieert die?”, “Welk aandeel van de bestellingen duurt langer dan 45 minuten?”, “Verschillen tijden per stad of uur?” en “Is de maandelijkse mediaan sinds januari veranderd?” Elke vraag wijst naar een samenvatting, grafiek of vergelijking.
Stel vóór het rekenen vast waar de gegevens vandaan komen, hoe ze zijn verzameld, welke periode en populatie ze betreffen en wat de betekenis en eenheid van elke kolom zijn. Een sprong in het aantal ingevulde velden kan komen door een formulierwijziging die een veld verplicht maakte. Die context verandert de verklaring van het patroon.
Weet wat één rij betekent
De waarnemingseenheid, ook wel het detailniveau genoemd, is wat één rij voorstelt. Dat kan een bestelling, een artikel binnen een bestelling, een klant of een winkel op een bepaalde dag zijn. Een tabel met 12.000 bestelregels en 4.000 unieke bestel-ID's heeft gemiddeld 3 rijen per bestelling. Het aantal rijen beschrijft artikelen, dus voor een vraag op bestelniveau moet je bestellingen tellen. Herhaalde bestel-ID's zijn in die tabel te verwachten; ze zouden een kwaliteitsprobleem zijn in een tabel die volgens afspraak één rij per bestelling bevat.
Doorloop een cyclus
Een bruikbare werkwijze is:
- Formuleer de vragen en de beslissing die ze ondersteunen.
- Lees de gegevens in en controleer de betekenis van een rij.
- Breng structuur, typen en kwaliteit in kaart.
- Onderzoek belangrijke variabelen afzonderlijk.
- Verken verbanden tussen variabelen.
- Vergelijk segmenten en perioden.
- Schrijf bevindingen, beperkingen en vervolgvragen op.
Deze stappen vormen een cyclus. Een verrassend verband kan je terugbrengen naar de bron om eenheden of ontbrekende waarden te controleren. Nieuwe gegevens kunnen het profiel veranderen en eerdere vragen opnieuw relevant maken. Door met vragen te beginnen, blijft de analyse gericht; door open te staan voor verrassingen, blijft ze verkennend. Elk mogelijk paar zonder doel in een grafiek zetten levert meestal een lange verzameling grafieken op met weinig om uit te leggen.
Onderscheid een aanwijzing van bevestiging
Verkenning levert hypothesen op. Toetsende analyse controleert een vooraf opgestelde hypothese, bij voorkeur met gegevens waarin het patroon niet is ontdekt. Veel grafieken bekijken maakt toevalspatronen waarschijnlijker, dus een opvallend verkennend resultaat vraagt vervolgonderzoek voordat het een algemene uitspraak ondersteunt. EDA helpt dat werk voorbereiden door bruikbare variabelen, scheve verdelingen en veelbelovende verbanden te tonen.
De dekking van de gegevens bepaalt ook de reikwijdte van een bevinding. Productbeoordelingen komen van mensen die ervoor kozen een beoordeling te schrijven. Hun beoordelingen beschrijven die respondenten; om het resultaat uit te breiden naar alle klanten is bewijs nodig over hoe respondenten verschillen van alle anderen.
Belangrijkste punten
- Begin met een beslissing en concrete vragen over variabelen, populaties en vergelijkingen.
- Controleer wat één rij voorstelt voordat je aantallen of herhaalde sleutels interpreteert.
- Gebruik de werkwijze als een cyclus: verrassingen kunnen kwaliteitsproblemen of nieuwe vragen blootleggen.
- Verkenning levert hypothesen op; toetsing controleert vooraf opgestelde hypothesen.
- Het verzamelproces en de populatie beperken hoe breed bevindingen gelden.
1.2 Een notebook dat van boven naar beneden wordt uitgevoerd
Een Jupyter-notebook combineert code, uitvoer en Markdown-uitleg. De kernel is het Python-proces dat variabelen in het geheugen bewaart. De kernel onthoudt de volgorde waarin cellen zijn uitgevoerd, die kan verschillen van de volgorde die op de pagina zichtbaar is.
Verwijder verborgen toestand
Stel dat je een cel uitvoert die clean aanmaakt, die cel verwijdert en clean verderop blijft gebruiken. De huidige sessie werkt nog steeds omdat de variabele in het geheugen blijft. Een nieuwe sessie mislukt omdat het notebook de definitie niet meer bevat. Ook als je een eerdere cel wijzigt nadat je latere berekeningen hebt uitgevoerd, kan oude uitvoer naast nieuwe code blijven staan.
Uitvoeringsnummers zoals [7] helpen uitvoeringen buiten volgorde te herkennen. De praktische test is sterker: kies in JupyterLab Kernel → Restart Kernel and Run All Cells. Controleer of het hele notebook wordt uitgevoerd en de getallen overeenkomen met de uitvoer die je wilt delen.
Zet afhankelijkheden in een duidelijke volgorde
Begin met een titel, doel en vragen. Laat daarop imports en een instellingencel volgen en daarna secties voor inlezen, kwaliteitscontroles, verdelingen, verbanden, vergelijkingen en bevindingen. Bijvoorbeeld:
from pathlib import Path
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
DATA = Path("data/raw/orders.csv")
LATE_MINUTES = 45
SEED = 42
df = pd.read_csv(DATA)
Een relatief pad werkt binnen de gedeelde projectstructuur. Een pad dat aan iemands bureaublad is gebonden, werkt niet meer als het project verhuist. Vermeld de werkmap van waaruit je het notebook uitvoert, zodat het relatieve pad correct wordt gevonden. Bewaar ruwe bestanden en sla verwerkte gegevens afzonderlijk op. Maak wijzigingen in code: een handmatige spreadsheetbewerking is onzichtbaar bij de volgende uitvoering.
Leg de omgeving en willekeurige keuzes vast
Sla pakketversies op in een omgevingsbestand, zoals de uitvoer van pip freeze > requirements.txt, en druk belangrijke versies in het notebook af met print(pd.__version__). Gedrag verandert tussen versies: pandas 3 geeft tekst een eigen datatype str en een DataFrame met tekst vereist voor correlatie een expliciete selectie van numerieke gegevens.
Een grafiek op basis van een steekproef moet bij elke nieuwe uitvoering dezelfde waarnemingen tonen. Gebruik df.sample(n=1000, random_state=42) wanneer minstens 1.000 rijen beschikbaar zijn, of maak een NumPy-generator met rng = np.random.default_rng(42). Leg de startwaarde vast bij de andere instellingen. Een startwaarde bepaalt willekeurige keuzes; om de volledige uitvoer te reproduceren zijn ook dezelfde invoer en software nodig.
Maak aannames uitvoerbaar
Zet belangrijke verwachtingen om in controles:
assert df["order_id"].is_unique
assert df["minutes"].ge(0).all()
De eerste vereist één unieke bestel-ID per rij. De tweede vereist dat elke tijdsduur niet-negatief en aanwezig is bij gewone drijvendekommagetallen. Als ontbrekende tijden zijn toegestaan, definieer dan een afzonderlijke controle op ontbrekende waarden en pas de bereikregel alleen toe op geregistreerde tijden. Een mislukte assertie stopt de uitvoering waar de invoer voor het eerst niet aan de verwachte afspraken voldoet.
Zet herhaalde procedures in functies, zodat één correctie overal wordt doorgevoerd. Beheer code en notebooks met versiebeheer. Notebookuitvoer wordt opgeslagen in de JSON van het notebook, wat wijzigingen lastig vergelijkbaar kan maken; het kan helpen om uitvoer vóór een commit te wissen of het notebook via Jupytext met een tekstscript te combineren.
Belangrijkste punten
- De kernel bewaart variabelen uit de uitvoeringsgeschiedenis, ook van cellen die niet meer zichtbaar zijn.
- Start de kernel opnieuw en voer elke cel uit om verborgen afhankelijkheden en verouderde uitvoer bloot te leggen.
- Houd imports en instellingen bij elkaar, gebruik relatieve paden en bewaar ruwe invoer.
- Leg pakketversies vast en bepaal de startwaarde van elke willekeurige stap.
- Gebruik asserties om de aannames te controleren waaraan een nieuw invoerbestand moet voldoen.
- Maak elke wijziging in gegevens in code, zodat een nieuwe uitvoering die kan herhalen.
2Breng een dataset in kaart en beoordeel de kwaliteit
Een dataset kan er netjes uitzien terwijl er dubbele records, codes voor ontbrekende waarden of onverenigbare eenheden in verborgen zitten. Breng de structuur en betekenis in kaart, meet ontbrekende waarden en duplicaten en pas regels toe die weerspiegelen hoe de gegevens zijn verzameld. Het doel is te begrijpen welke waarnemingen elk resultaat ondersteunen en beslissingen die de geanalyseerde gegevens veranderen zichtbaar vast te leggen.
2.1 De eerste inspectie van een dataset
Bij een eerste inspectie stel je de omvang van de tabel vast, wat de kolommen voorstellen en of hun opgeslagen datatypes bij die betekenis passen. Dit profiel helpt je zinvolle samenvattingen te kiezen voordat je de uitvoer van een handige opdracht vertrouwt.
Inspecteer de structuur vanuit meerdere hoeken
Gebruik df.shape voor het aantal rijen en kolommen, df.head() en df.tail() voor de uiteinden van het bestand en df.sample(5, random_state=0) voor een reproduceerbare steekproef als er minstens vijf rijen zijn. De eerste rijen kunnen allemaal bij de vroegste datum of dezelfde winkel horen. Voer df.info() uit om kolomnamen, aantallen aanwezige waarden, datatypes en geheugengebruik te inspecteren. Gebruik df.nunique() om unieke geregistreerde waarden in elke kolom te tellen.
Scheid betekenis van opslag
| Analysetype | Voorbeeld | Bruikbare verwerking |
|---|---|---|
| Numeriek continu | Afstand in km | Centrum, spreiding en verdeling |
| Numeriek discreet | Artikelen per bestelling | Aantallen en klassen rond gehele getallen |
| Nominale categorie | Stad | Frequenties en aandelen |
| Ordinale categorie | Laag, gemiddeld, hoog | Frequenties in een betekenisvolle volgorde |
| Datum en tijd | Tijdstempel van een bestelling | Dekking en vergelijkingen tussen perioden |
| Identificatiecode | Klant-ID | Uniciteit en verbanden tussen records |
| Vrije tekst | Een geschreven opmerking | Inspecteer de tekst en de kwaliteit ervan |
Een geheelgetaltype maakt niet van elke kolom een hoeveelheid. Regiocodes en klant-ID's worden numeriek opgeslagen, maar hebben geen zinvol rekenkundig gemiddelde. Een beoordeling van 1 tot 5 heeft een kleine verzameling geordende antwoorden en komt vaak beter tot zijn recht in een categorische weergave.
pandas gebruikt vaak int64, float64, bool, datetime64, category en, vanaf pandas 3, str. Eerdere versies van pandas gebruikten voor tekst vaak object. Gewone gegevens met gehele getallen kunnen float64 worden als waarden ontbreken, omdat NaN een drijvendekommagetal als markering is; Int64 ondersteunt gehele getallen met ontbrekende waarden.
Controleer conversies en sleutels
Een tekenreeks die op een getal lijkt, kan scheidingstekens, eenheden of codes voor ontbrekende waarden bevatten. Voor een Series met “1,234”, “950”, “n/a” en “1,010”:
parsed = pd.to_numeric(
s.str.replace(",", ""), errors="coerce"
)
De waarden worden 1234.0, 950.0, NaN en 1010.0. Vergelijk de aantallen ontbrekende waarden vóór en na de conversie en inspecteer waarden die nieuw ontbreken. Typeconversie met ontbrekende waarden bij fouten verandert ook een niet-verwerkte waarde zoals “12 kg” in NaN, dus een geslaagde uitvoering toont niet op zichzelf aan dat de conversie de gegevens heeft behouden.
Lees codes met betekenisvolle voorloopnullen in als tekst, bijvoorbeeld met pd.read_csv(path, dtype={"postal_code": "str"}). Om een verloren nul later te herstellen is kennis nodig die bij de weergave als geheel getal verloren is gegaan.
Bepaal de verwachte recordsleutel. df["order_id"].is_unique controleert een sleutel van één kolom; df.duplicated(subset=["store_id", "date"]).sum() controleert herhaalde combinaties van winkel en datum. Koppel het aantal sleutels terug aan de betekenis van een rij. Een kolom met één waarde kan geen verschillen binnen deze dataset verklaren; duizenden vermeende stadscategorieën kunnen op inconsistente labels wijzen.
Vul tijdens de inspectie een gegevenswoordenboek aan: leg voor elke kolom de betekenis, het analysetype, de eenheid, toegestane waarden en bekende problemen vast. Die gegevens leveren de regels voor de volgende kwaliteitscontroles.
Belangrijkste punten
- Inspecteer omvang, voorbeeldrijen, aantallen aanwezige waarden, datatypes en aantallen unieke waarden.
- Kies analysemethoden op basis van de betekenis van een variabele, inclusief volgorde en eenheden.
- Controleer nieuw ontbrekende waarden na elke conversie die mislukte inlezingen in ontbrekende waarden omzet.
- Controleer de verwachte sleutel aan de hand van de waarnemingseenheid van de tabel.
2.2 Ontbrekende waarden en herhaalde records
Ontbrekende waarden veranderen welke waarnemingen aan een resultaat bijdragen. Dubbele records kunnen sommige waarnemingen extra gewicht geven. Meet beide voordat je een verwerking kiest en houd de beslissing zichtbaar in de analyse.
Meet ontbrekende waarden en hun patroon
pandas gebruikt NaN, NaT voor ontbrekende datums en tijden en <NA> voor datatypes met ondersteuning voor ontbrekende waarden. Tel en rangschik ontbrekende waarden met:
missing_count = df.isna().sum()
missing_share = df.isna().mean().sort_values(ascending=False)
rows_with_gaps = df.isna().any(axis=1).sum()
Een gemiddelde van booleaanse waarden geeft een aandeel, omdat True als 1 en False als 0 telt. Bij 96 ontbrekende leeftijden onder 1.200 rijen is het ontbrekende aandeel 8%. Het aantal rijen met minstens één ontbrekende waarde kan veel groter zijn dan het aantal ontbrekende waarden in één kolom; dit is het aantal rijen dat je verliest als je zonder onderscheid df.dropna() toepast.
Sommige ontbrekende waarden gaan schuil achter gewone waarden. De standaardinstellingen voor het inlezen van CSV herkennen veel lege en tekstuele markeringen voor ontbrekende waarden, maar codes zoals -999, “unknown” en “?” kunnen blijven staan. Inspecteer frequenties en uitersten, controleer het gegevenswoordenboek en geef extra markeringen op met na_values. Voor nul is context nodig: het kan betekenen dat er niets is geretourneerd of het kan een niet-vastgelegde plaatsaanduiding zijn.
Controleer of ontbrekende waarden zich in een segment concentreren:
age_gaps = df["customer_age"].isna()
age_gaps.groupby(df["city"]).mean()
Als in één stad 40% van de leeftijden ontbreekt en in de andere ongeveer 2%, zal een analyse van volledige rijen die stad ondervertegenwoordigen. De termen MCAR, MAR en MNAR beschrijven verschillende mechanismen: ontbreken zonder verband met waargenomen of ontbrekende waarden; ontbreken dat alleen afhangt van waargenomen variabelen; en ontbreken dat afhangt van de ontbrekende waarde zelf. Respondenten met een hoog inkomen die een inkomensvraag overslaan, illustreren MNAR. EDA kan verbanden met geregistreerde variabelen opsporen; om het volledige mechanisme vast te stellen is meer bewijs over de verzameling nodig.
Benoem de noemer
Bij 6 kaartbetalingen, 2 contante betalingen en 2 ontbrekende waarden rapporteert value_counts(normalize=True) 75% kaart en 25% contant onder de 8 geregistreerde betalingen. Met toevoeging van dropna=False rapporteert de functie 60% kaart, 20% contant en 20% ontbrekend onder alle 10 rijen. De tabellen beantwoorden verschillende vragen. Vermeld de populatie achter elk aandeel.
Inspecteer dubbele volledige rijen en dubbele sleutels
df.duplicated().sum() telt kopieën na het eerste voorkomen van elke volledige rij. Een controle op basis van sleutels kan tegenstrijdige records vinden die niet identiek zijn:
repeated = df["order_id"].duplicated(keep=False)
df.loc[repeated].sort_values("order_id")
Bekijk ID's 101, 102, 102, 103, 104, 104 met bedragen 20, 35, 35, 12, 50, 55. Er is 1 dubbele volledige rij, er zijn 2 herhalingen van sleutelwaarden na het eerste voorkomen en 4 rijen met herhaalde sleutels. De twee records met 104 verschillen van bedrag, dus als je zonder onderzoek een kopie verwijdert, kun je de juiste waarde weggooien.
Leg voor elk probleem het aantal, de waarschijnlijke oorzaak, de verwerking en de betrokken rijen vast. Alle rijen met ontbrekende waarden verwijderen kan een vertekende deelverzameling wegnemen; ontbrekende waarden opvullen met het gemiddelde verbergt hun patroon en verkleint de schijnbare spreiding. Kies een verwerking die past bij de vraag en het verzamelproces en zorg dat de oorspronkelijke ontbrekende waarden meetbaar blijven.
Belangrijkste punten
- Tel ontbrekende waarden per kolom en rijen met minstens één ontbrekende waarde voordat je een verwerking kiest.
- Controleer signaalwaarden en vergelijk ontbrekende waarden tussen betekenisvolle segmenten.
- Mechanismen voor ontbrekende waarden beschrijven waarom waarden ontbreken; waargenomen patronen alleen kunnen het volledige mechanisme niet vaststellen.
- Standaard sluiten relatieve frequenties ontbrekende waarden uit, dus vermeld de noemer.
- Dubbele volledige rijen en tegenstrijdige herhaalde sleutels vragen om verschillend onderzoek.
- Leg verwerkingen vast, omdat waarden verwijderen of opvullen de geanalyseerde gegevens verandert.
2.3 Regels die ongeldige of inconsistente gegevens blootleggen
Een waarde is geldig als die voldoet aan het toegestane bereik of de toegestane verzameling van de kolom. Records zijn consistent als hun waarden tussen kolommen, rijen en bronnen overeenstemmen. Stel controles op vanuit het gegevenswoordenboek en kennis van het proces dat de gegevens heeft voortgebracht.
Controleer bereiken zonder ontbrekende waarden mee te tellen
Begin met minima en maxima en toets daarna expliciete grenzen. Om geregistreerde leeftijden buiten 0–120 te tellen:
invalid_age = df["age"].notna() & ~df["age"].between(0, 120)
invalid_age.sum()
between geeft False terug voor ontbrekende waarden. Als je alleen dat resultaat ontkent, tel je ontbrekende leeftijden als ongeldige leeftijden; de aanwezigheidscontrole scheidt de problemen. Andere regels kunnen niet-negatieve hoeveelheden, percentages van maximaal 100 of extractiedatums die niet vóór de opgenomen gebeurtenissen liggen vereisen. Het toegestane bereik volgt uit de betekenis van de kolom.
Breng labels en kolommen met elkaar in overeenstemming
“Lyon”, “lyon” en “ Lyon” zijn drie tekenreeksen, ook als ze dezelfde stad aanduiden. Aantallen van 410, 22 en 5 worden 437 voor “lyon” na een verantwoorde verwijdering van witruimte en omzetting naar kleine letters:
city_clean = df["city"].str.strip().str.lower()
Vergelijk het aantal categorieën vóór en na de wijziging. Spellingvarianten en synoniemen vereisen een expliciete waardetoewijzing; alleen het hoofdlettergebruik aanpassen kan “UK” niet met “United Kingdom” samenvoegen. Bewaar de gebruikte regel zodat een nieuwe uitvoering dezelfde beslissing neemt.
Controles tussen kolommen zoeken naar tegenstrijdigheden. df.query("delivered_at < ordered_at") vindt bezorgingen met een tijdstempel van vóór hun bestelling. Andere controles vragen of artikelbedragen optellen tot het totaal, de leeftijd overeenkomt met de geboortedatum of een geannuleerde bestelling een onverwachte bezorgtijd heeft. Deze regels vereisen gedeelde eenheden, tijdconventies en definities tussen kolommen.
Zoek naar veranderingen in schaal en dekking
Gemengde kilogrammen en grammen kunnen clusters maken die ongeveer een factor 1.000 uit elkaar liggen. Een aandeel dat deels op een schaal van 0–1 en deels op een schaal van 0–100 is geregistreerd, maakt ook een misleidende verdeling. Controleer vóór de conversie de bron: twee clusters kunnen ook twee echte populaties voorstellen. Een grafiek laat zien waar onderzoek nodig kan zijn; de bron stelt vast welke eenheden gelden.
Inspecteer de vroegste en laatste datum en de aantallen per maand. Een ontbrekende maand kan een hiaat in de extractie zijn, terwijl een onvolledige laatste maand vanzelf minder records bevat. Een plotselinge toename kan een nieuw registratiesysteem weerspiegelen. Leg de werkelijk beschikbare dekking vast voordat je een tijdspatroon rapporteert.
Houd een kwaliteitslogboek bij
Gebruik een kleine tabel met het probleem, de controle, het aantal betrokken rijen, de onderbouwing en de maatregel. Een negatieve tijdsduur kan bijvoorbeeld door een regel voor niet-negatieve tijden worden gemarkeerd, aan de hand van tijdstempels worden onderzocht en alleen worden gecorrigeerd als de bron de werkelijke waarde vaststelt. Belangrijke verwachtingen kunnen asserties worden die een toekomstige uitvoering stoppen.
Een bezorging van 120 minuten is ongebruikelijk maar mogelijk. Een tijdsduur van −5 minuten is onder dezelfde definitie van tijdsduur onmogelijk. Het eerste geval vraagt onderzoek als uitschieter; het tweede vraagt onderzoek als fout.
Belangrijkste punten
- Gebruik domeinregels om geldige bereiken, categorieën en overeenstemming tussen kolommen te controleren.
- Tel ontbrekende waarden afzonderlijk van geregistreerde waarden buiten een toegestaan bereik.
- Controleer labelvarianten, gemengde eenheden en tijdsdekking voordat je patronen interpreteert.
- Houd een kwaliteitslogboek bij en zet belangrijke verwachtingen over invoer om in asserties.
- Onderzoek ongebruikelijke waarden; onderscheid een mogelijke extreme waarde van een onmogelijke waarde.
3Beschrijf de verdeling van elke variabele
Eén gemiddelde kan een lange staart, twee afzonderlijke groepen of een registratiegrens verbergen. Beschrijf elke belangrijke variabele met samenvattingen en grafieken die bij de betekenis passen. Numerieke variabelen vragen om centrum, spreiding, vorm en controles op ongebruikelijke waarden; categorische variabelen vragen om duidelijke labels, volgorde en noemers. Regels voor uitschieters helpen records te vinden die onderzoek verdienen, terwijl de context hun verwerking bepaalt.
3.1 Centrum, spreiding en het effect van extreme waarden
Een numerieke verdeling beschrijft welke waarden voorkomen en hoe vaak. Het centrum geeft een gebruikelijke plaats aan, de spreiding toont variatie en de vorm laat zien wat die samenvattingen weglaten. Gebruik naast de getallen een grafiek.
Kies samenvattingen die bij de verdeling passen
Het gemiddelde is de som gedeeld door het aantal. De mediaan is de middelste gesorteerde waarde, of het gemiddelde van de twee middelste waarden bij een even aantal. De variatiebreedte is het maximum min het minimum. De interkwartielafstand, of IQR, is Q3 min Q1: de afstand tussen het 75e en 25e percentiel. De standaardafwijking meet de spreiding rond het gemiddelde in de eigen eenheid van de variabele.
In pandas gebruikt s.std() de steekproefberekening met ddof=1, waarbij de som van gekwadrateerde afwijkingen wordt gedeeld door het aantal min één. In NumPy gebruikt np.std(a) standaard ddof=0, waarbij door het aantal wordt gedeeld. Dit is vooral van belang bij kleine steekproeven, dus gebruik dezelfde instellingen als je resultaten vergelijkt.
Lees de samenvatting voordat je die interpreteert
s = df["minutes"]
s.describe(percentiles=[0.1, 0.5, 0.9])
Het resultaat bevat het aantal aanwezige waarden, het gemiddelde, de standaardafwijking, het minimum, de gevraagde percentielen en het maximum. De waarde bij 50% is de mediaan. Op een DataFrame behandelt describe() standaard numerieke kolommen en datum- en tijdkolommen; samenvattingen van datum- en tijdkolommen bevatten hun gemiddelde en percentielen. describe(include="all") vat ook andere kolommen samen. Tekstkolommen en categorische kolommen krijgen count, unique, top en freq, waarbij top een meest voorkomende waarde is en freq het aantal daarvan. Sluit numerieke identificatiecodes uit van rekenkundige samenvattingen.
Werk een lange staart naar rechts uit
Bekijk bezorgtijden van 18, 22, 25, 25, 27, 29, 31, 34, 38, 41 en 95 minuten. De som is 385 en het aantal is 11, dus het gemiddelde is 35,0 minuten. De zesde gesorteerde waarde is 29, de mediaan. pandas geeft Q1 = 25, Q3 = 36, IQR = 11 en een steekproefstandaardafwijking van ongeveer 21,02 minuten.
Zonder de bezorging van 95 minuten is het gemiddelde 29,0, de mediaan 28 en de standaardafwijking ongeveer 7,15. Eén waarde verschuift het gemiddelde met 6 minuten en verdrievoudigt ongeveer de standaardafwijking; de mediaan verschuift met 1 minuut. Daarom zijn de mediaan en IQR bruikbare resistente samenvattingen voor gegevens met extreme waarden. Een ongeveer symmetrische verdeling zonder extreme waarden is vaak goed te beschrijven met het gemiddelde en de standaardafwijking.
Beschrijf de staart en bruikbare posities
Rechtsscheefheid heeft een lange staart naar hoge waarden; linksscheefheid heeft een lange staart naar lage waarden. Het gemiddelde ligt ten opzichte van de mediaan meestal in de richting van de lange staart, maar controleer de vorm omdat deze vuistregel uitzonderingen kent. s.skew() is positief voor een staart naar rechts en negatief voor een staart naar links; voor deze bezorgtijden is de waarde ongeveer 2,71.
s.quantile(0.9) geeft hier 41 minuten, een bruikbare beschrijving van het bovenste deel van de verdeling. Eén van de 11 bezorgingen duurt langer dan 45 minuten, ongeveer 9,1%. Bereken bij ontbrekende waarden aandelen boven een drempel op basis van geregistreerde waarden. Kwartielen van kleine steekproeven kunnen tussen programma's verschillen: pandas gebruikt standaard lineaire interpolatie. Leg de methode vast wanneer exacte kwartielen van belang zijn.
Belangrijkste punten
- Gebruik centrum, spreiding en een grafiek om een numerieke verdeling te beschrijven.
- De mediaan en IQR zijn bestand tegen extreme waarden; het gemiddelde en de standaardafwijking reageren er sterk op.
- Controleer aantallen aanwezige waarden en gebruik overeenkomstige instellingen voor de standaardafwijking.
- Percentielen en aandelen boven een drempel kunnen praktische vragen direct beantwoorden.
- De richting van scheefheid beschrijft de lange staart, niet de kant waar de meeste waarnemingen liggen.
3.2 Grafieken die de vorm van een verdeling tonen
Een verdelingsgrafiek toont staarten, pieken, tussenruimten en grenzen die een centrummaat alleen verbergt. Elke grafiek benadrukt andere kenmerken, dus kies een grafiek die bij de vraag past en controleer hoe weergavekeuzes het beeld beïnvloeden.
Gebruik betekenisvolle klassen in een histogram
Een histogram verdeelt een numerieke schaal in intervallen en telt de waarnemingen in elk interval. sns.histplot(data=df, x="minutes", binwidth=5) gebruikt klassen van vijf minuten. seaborn kiest standaard automatisch klassen; histogrammen van pandas en Matplotlib gebruiken standaard 10 klassen. Probeer verschillende redelijke klasseninstellingen. Een zeer brede klasse kan twee pieken samenvoegen, terwijl zeer smalle klassen steekproefruis op een structuur kunnen laten lijken. Voor tellingen in gehele getallen centreert discrete=True een staaf op elk geheel getal.
Beschrijf de vorm als symmetrisch, rechts- of linksscheef, uniform of met één, twee of meerdere pieken. Zoek naar tussenruimten en boven- en ondergrenzen. Pieken bij ronde waarden zoals 30 en 60 minuten kunnen ophoping bij ronde waarden door afgeronde zelfrapportages weerspiegelen. Twee pieken rond 25 en 50 minuten kunnen fiets- en autoleveringen weerspiegelen. Door hue="vehicle" toe te voegen controleer je of die groepen de splitsing verklaren.
Vergelijk de belangrijkste grafiektypen
| Grafiek | Wat helpt die te zien? | Wat moet je controleren? |
|---|---|---|
| Histogram | Aantallen binnen intervallen, pieken en tussenruimten | Klassenbreedte en uitlijning |
| KDE | Een vloeiende schatting van de verdelingsvorm | Bandbreedte en onmogelijke staarten |
| Boxplot | Mediaan, middelste helft en gemarkeerde extreme waarden | Verborgen pieken en steekproefgrootte |
| ECDF | Het aandeel op of onder elke waarde | Aseenheden en de populatie |
Een kerndichtheidsschatting, of KDE, vlakt waarnemingen af tot een kromme. sns.kdeplot(data=df, x="minutes") kan nuttig zijn, maar de bandbreedte verandert de vorm. Afvlakking kan grenzen verbergen of onder nul doorlopen, ook als tijdsduren niet-negatief zijn. Lees die uitbreiding als een kenmerk van de schatting, niet als negatieve waargenomen tijdsduren.
Een boxplot tekent de mediaan binnen een doos van Q1 tot Q3. De standaard snorren reiken tot de meest extreme waargenomen waarden die nog binnen 1,5 IQR van de doos liggen; punten verder weg verschijnen afzonderlijk. Een snor is dus niet noodzakelijk het minimum of maximum en het uiteinde is een waargenomen waarde in plaats van de berekende grens.
Lees cumulatieve aandelen en multiplicatieve schalen
sns.ecdfplot(data=df, x="minutes")
Een ECDF toont het aandeel dat kleiner dan of gelijk aan elke waarde is. Lees horizontaal vanaf een aandeel zoals 0,9 om een percentiel te vinden. Je hoeft daarbij geen klassen te kiezen zoals bij een histogram en de grafiek is bruikbaar om te vergelijken hoe vaak waarden onder een drempel blijven.
Een logaritmische schaal helpt bij positieve gegevens met grote onderlinge verhoudingen. Op een schaal met grondtal 10 liggen 10, 100 en 1.000 even ver uit elkaar, omdat elke stap met 10 vermenigvuldigt. Gewone reële logaritmen vereisen positieve waarden; np.log1p(x) berekent de natuurlijke logaritme van één plus de waarde en kan nul in niet-negatieve gegevens verwerken.
Als je groepen van verschillende grootte vergelijkt, normaliseer dan binnen elke groep met stat="percent", common_norm=False of gebruik deelgrafieken met gedeelde assen. Sluit af met een beschrijving met getallen, zoals “De bezorgtijden zijn rechtsscheef, met een mediaan van 29 minuten en de helft van de bestellingen tussen 25 en 36 minuten; één bestelling duurde 95 minuten.”
Belangrijkste punten
- Probeer zinvolle klasseninstellingen voordat je beslist dat een piek of tussenruimte werkelijk bestaat.
- Controleer of menging van groepen meerdere pieken verklaart.
- De afvlakking van een KDE kan kenmerken verbergen of verder reiken dan mogelijke waarnemingen.
- Een boxplot vat positie en spreiding samen, maar verbergt het aantal pieken en de steekproefgrootte.
- Een ECDF geeft cumulatieve aandelen zonder klassen.
- Logaritmische schalen tonen verhoudingen; afzonderlijk genormaliseerde grafieken helpen groepsvormen vergelijken.
3.3 Categorieaantallen, volgorde en noemers
Categorische samenvattingen tellen waarnemingen in benoemde groepen. Hun betekenis hangt af van de labels, hun volgorde en de populatie die voor elk percentage wordt gebruikt. Ook een numerieke categoriecode vraagt om een categorische samenvatting.
Maak een frequentietabel
s.value_counts() vermeldt categorieën van meest naar minst voorkomend. Gebruik normalize=True voor verhoudingen en dropna=False om een rij met ontbrekende waarden op te nemen. Voor tekst rapporteert describe() het aantal geregistreerde waarden, het aantal unieke waarden, een meest voorkomende waarde en het aantal daarvan.
In 200 enquêteantwoorden zijn 30 beoordelingen “laag”, 50 “gemiddeld” en 120 “hoog”. Elk aantal delen door 200 geeft 15%, 25% en 60%. Als dit de 200 mensen zijn die een vraag in een grotere enquête hebben beantwoord, beschrijven de percentages de respondenten op die vraag. Ontbrekende antwoorden veranderen de noemer wanneer ze worden meegeteld.
Behoud een betekenisvolle volgorde
Nominale categorieën zoals steden hebben geen inherente rangorde; sorteren op frequentie kan vergelijkingen vergemakkelijken. Ordinale categorieën hebben een natuurlijke volgorde die zichtbaar moet blijven:
order = ["low", "medium", "high"]
counts = s.value_counts().reindex(order, fill_value=0)
Een geordende categorische variabele legt de volgorde vast voor sortering, vergelijkingen en grafieken. De methode value_counts() sorteert nog steeds standaard op frequentie; gebruik sort=False of herindexeer de tellingen expliciet. Een grafiek die door de frequentie de volgorde “hoog”, “gemiddeld”, “laag” heeft, kan de schaal moeilijker herkenbaar maken.
Houd zeldzame labels en ontbrekende waarden gescheiden
Als veel categorieën een grafiek onleesbaar maken, behoud dan de meest voorkomende labels en verzamel de rest als “Other”:
top = s.value_counts().nlargest(5).index
grouped = s.where(s.isna() | s.isin(top), "Other")
De aanwezigheid van s.isna() houdt ontbrekende waarden ontbrekend. Zonder dit deel zouden ontbrekende waarden ook “Other” worden, waardoor ontbrekende antwoorden met echte zeldzame antwoorden worden gemengd. Rapporteer hoeveel labels en waarnemingen zijn samengevoegd. Controleer of een zeldzame categorie die belangrijk is voor de vraag niet in de samengevoegde groep is verdwenen.
Horizontale staafdiagrammen zijn geschikt voor lange labels. Zo sorteert sns.countplot(data=df, y="city", order=df["city"].value_counts().index) de aantallen per stad. Begin de as met aantallen bij nul, omdat de staaflengte het aantal waarnemingen weergeeft. Een cirkeldiagram wordt moeilijk te vergelijken als het veel sectoren bevat.
Zet numerieke bereiken om in categorieën met labels
bands = pd.cut(
df["minutes"], bins=[0, 30, 45, np.inf],
labels=["up to 30", "over 30 to 45", "over 45"],
include_lowest=True
)
De standaard rechts gesloten intervallen plaatsen 30 in de eerste klasse en 45 in de tweede. include_lowest=True neemt ook 0 op in de eerste klasse. Waarden buiten deze bereiken worden ontbrekend in het resultaat van de klasse-indeling, dus controleer negatieve tijdsduren voordat je het aantal ontbrekende waarden interpreteert. Leg de grenzen vast, want een label zoals “30–45” laat op zichzelf onduidelijk hoe 30 wordt behandeld.
Wijs bij nominale codes 1 en 2 toe aan hun regiolabels voordat je ze weergeeft. Het gemiddelde van regiocodes zou hun willekeurige nummering beschrijven, niet de verdeling van regio's.
Belangrijkste punten
- Frequentietabellen rapporteren categorieaantallen of verhoudingen; vermeld de noemer.
- Houd ordinale waarden in hun natuurlijke volgorde, ook als frequenties verschillen.
- Houd ontbrekende antwoorden apart als je zeldzame labels samenvoegt in de restcategorie.
- Laat de as met aantallen van een staafdiagram bij nul beginnen en maak lange labels leesbaar.
- Geef numerieke klassen expliciete grenzen en controleer hun grenspunten.
3.4 Uitschieters markeren en beslissen over de verwerking
Een uitschieter ligt volgens een genoemde regel en context ver van het grootste deel van de gegevens. Het kan een registratiefout, een echte zeldzame gebeurtenis of een lid van een afzonderlijke groep zijn. Een markering is het begin van een onderzoek.
Bereken IQR-grenzen
De IQR-regel markeert waarden onder of boven deze grenzen:
Voor bezorgtijden 18, 22, 25, 25, 27, 29, 31, 34, 38, 41 en 95 is Q1 25 en Q3 36. De IQR is 11, dus de ondergrens is 8,5 en de bovengrens is 52,5. De bestelling van 95 minuten wordt gemarkeerd.
q1, q3 = s.quantile([0.25, 0.75])
iqr = q3 - q1
flag = (s < q1 - 1.5 * iqr) | (s > q3 + 1.5 * iqr)
Dit zijn de standaardgrenzen die ten grondslag liggen aan uitschieterpunten in een boxplot. Een waarde precies op een grens ligt erbinnen. Bij een lange staart naar rechts kan de regel veel echte hoge waarden markeren.
Begrijp maskering en robuuste scores
Een z-score meet de afstand tot het gemiddelde in standaardafwijkingen:
Een veelgebruikte markering is een absolute z-score groter dan 3. Hier is het gemiddelde 35 en de steekproefstandaardafwijking ongeveer 21,02, dus 95 geeft een z-score van ongeveer 2,85. De extreme waarde heeft juist het centrum en de spreiding verhoogd waarmee ze wordt beoordeeld. Door dit effect, maskering genoemd, kan een ongebruikelijke waarde aan de regel ontsnappen. De regel past ook beter bij ongeveer symmetrische dan bij scheve verdelingen.
De mediane absolute afwijking, of MAD, is de mediaan van de absolute afstanden tot de mediaan. Deze maat gebruikt resistente grootheden. Een gemodificeerde z-score is:
Hier is de mediaan 29 en de MAD 5. Voor 95 minuten is de gemodificeerde score ongeveer 8,90, boven de gebruikelijke absolute drempel van 3,5. Als de MAD nul is, is deze deling niet gedefinieerd; onderzoek de herhaalde waarden en gebruik een andere verantwoorde controle in plaats van een oneindige score als meetresultaat te rapporteren.
Onderzoek voordat je gegevens verandert
Domeinregels komen eerst. Een negatieve verstreken tijdsduur is onder deze definitie een fout, ongeacht de statistische score. Inspecteer bij een mogelijke extreme waarde de volledige rij, de tijdstempels, afstand, groep en bron. Een storm of een lange route kan een trage bezorging verklaren.
| Onderbouwing | Mogelijke maatregel |
|---|---|
| De bron stelt de juiste waarde vast | Corrigeer de waarde in code en leg de wijziging vast |
| Een record is aantoonbaar fout en de waarde is niet te herstellen | Verwijder het record of markeer het als ontbrekend en leg het effect vast |
| De waarde is echt | Behoud de waarde; gebruik resistente samenvattingen of een bruikbare schaal |
| De conclusie hangt sterk van de waarde af | Vergelijk resultaten met en zonder de waarde |
Resultaten met en zonder de waarneming vergelijken is een gevoeligheidsanalyse. Extreme waarden begrenzen op een gekozen percentiel, winsoriseren genoemd, is een andere bewuste transformatie; rapporteer de grens en dat waarden zijn gewijzigd. Inspecteer ook ongebruikelijke combinaties: twee afzonderlijk aannemelijke metingen kunnen samen een zeldzaam punt in een spreidingsdiagram vormen.
Belangrijkste punten
- IQR-grenzen markeren waarden buiten Q1 − 1,5 IQR en Q3 + 1,5 IQR.
- Extreme waarden kunnen het gemiddelde en de standaardafwijking verhogen en zichzelf in z-scores maskeren.
- Gemodificeerde z-scores gebruiken de mediaan en MAD; een MAD van nul vraagt om een andere aanpak.
- Domeinregels onderscheiden onmogelijke waarden van mogelijke extreme waarden.
- Onderzoek het volledige record en documenteer elke verwerking.
- Gebruik gevoeligheidsanalyses om te tonen wanneer extreme waarden een conclusie veranderen.
- Zoek zowel naar ongebruikelijke combinaties als naar extreme waarden van afzonderlijke variabelen.
4Verken verbanden tussen variabelen
Twee variabelen kunnen samen bewegen volgens een rechte lijn, langs een kromme of alleen doordat afzonderlijke groepen zijn samengevoegd. Gebruik spreidingsdiagrammen om de vorm te zien, correlatiecoëfficiënten om specifieke aspecten van samenhang samen te vatten en subgroepcontroles om de oorsprong ervan te onderzoeken. Voor de interpretatie zijn naast de schijnbare sterkte van het patroon ook de populatie, de bruikbare steekproefgrootte en het verzamelproces nodig.
4.1 Spreidingsdiagrammen die het verband tonen
Een spreidingsdiagram plaatst één waarneming bij elk paar numerieke waarden. Zet een mogelijke verklarende variabele op de horizontale as en de respons op de verticale as. De grafiek helpt je de vorm van een verband te zien voordat je die samenvat in een coëfficiënt.
Beschrijf vier kenmerken
Gebruik richting, vorm, sterkte en ongebruikelijke punten. Een positieve richting betekent dat de respons meestal stijgt als de horizontale variabele stijgt; negatief betekent dat die meestal daalt. De vorm kan recht, gekromd of in clusters verdeeld zijn. De sterkte beschrijft hoe nauw punten die vorm volgen; die kan ook bij een gekromde vorm sterk zijn.
Bij temperaturen van 8, 12, 15, 18, 21, 24, 27 en 30 °C zijn de dagelijkse aantallen fietsverhuringen 310, 420, 515, 600, 690, 760, 800 en 780. Het verband is in zijn geheel sterk en positief. Het is vrijwel lineair tot ongeveer 27 °C, vlakt daarna af en daalt licht. Als je het alleen als “positief” beschrijft, mis je de verandering bij hoge temperaturen.
sns.scatterplot(data=df, x="temp_c", y="rentals")
Maak dichtbevolkte grafieken leesbaar
Bij veel rijen bedekken punten elkaar: overlap van grafiekelementen verbergt waar waarnemingen zich concentreren. Kleinere markeringen en alpha=0.2 maken via transparantie een deel van de dichtheid zichtbaar. Een grafiek met zeshoekige klassen aggregeert waarnemingen in zeshoeken:
df.plot.hexbin(x="distance_km", y="minutes", gridsize=30)
Een tweedimensionale sns.histplot biedt een vergelijkbaar beeld met rechthoekige klassen. Een aselecte steekproef kan de drukte verminderen; leg de startwaarde vast zodat nieuwe uitvoeringen dezelfde deelverzameling tonen. Als een as maar enkele waarden aanneemt, spreiden kleine willekeurige puntverschuivingen gestapelde punten voor de zichtbaarheid. De verschuiving is een weergavekeuze en geen extra meetprecisie.
Voeg groepen toe en controleer een aangepaste lijn
Gebruik hue="season" voor kleur of sns.relplot(..., col="season") voor afzonderlijke deelgrafieken. Een samengevoegde puntenwolk kan afzonderlijke seizoensclusters bevatten. De markeringsgrootte kan een andere grootheid weergeven zolang de betekenis duidelijk blijft.
sns.regplot(data=df, x="temp_c", y="rentals") voegt een rechte kleinstekwadratenlijn en een gearceerde onzekerheidsband toe. Een lijn helpt het oog maar kan een kromming missen. lowess=True tekent een vloeiende kromme wanneer de benodigde bibliotheek statsmodels is geïnstalleerd. Inspecteer de waarnemingen voordat je een van beide weergaven kiest.
Voor een kleine selectie variabelen tekent een matrix van spreidingsdiagrammen de spreidingsdiagrammen voor alle paren en de afzonderlijke verdelingen. Gebruik bijvoorbeeld snavellengte in mm, vinlengte in mm, lichaamsgewicht in g en soort als kleurgroep. Ongeveer drie tot zes numerieke variabelen blijven leesbaar; veel meer variabelen leveren een muur van kleine deelgrafieken op.
Onderzoek opeenhoping en gedeelde tijdtrends
Logaritmische assen kunnen positieve waarden met grote onderlinge verhoudingen spreiden, zoals bevolking en totaal energiegebruik. Houd de schaal zichtbaar in de labels. Als één extreem punt een enorm asbereik bepaalt, onderzoek het dan en voeg een duidelijk gelabelde weergave van het grootste deel toe, zodat het resterende patroon zichtbaar is.
Twee variabelen kunnen ook een patroon vormen doordat beide door de tijd groeien. Geef punten een kleur op basis van de datum of zet elke reeks uit tegen de tijd. Die controle kan laten zien of het schijnbare verband grotendeels een gedeelde trend is.
Belangrijkste punten
- Beschrijf richting, vorm, sterkte en ongebruikelijke waarnemingen.
- Gebruik transparantie, kleinere punten, klasse-indeling of steekproeven met een vaste startwaarde om dichtheid zichtbaar te maken.
- Gebruik kleur of deelgrafieken om groepen binnen een samengevoegd patroon te onderzoeken.
- Inspecteer de kromming voordat je op een aangepaste rechte lijn vertrouwt.
- Controleer schalen, extreme punten en tijdtrends die de weergave kunnen overheersen.
4.2 Wat een correlatiecoëfficiënt meet
Een correlatiecoëfficiënt vat een aspect van samenhang samen. Kies de coëfficiënt voor het verband dat je wilt beschrijven en lees die naast een grafiek en het aantal bruikbare waarnemingen.
Pearson meet een rechtlijnig verband
De coëfficiënt van Pearson is de som van de producten van de gecentreerde waarden gedeeld door het product van de gecentreerde lengtes:
Het bereik is −1 tot 1. Het teken geeft de richting en de grootte geeft de lineaire sterkte. Perfect positieve of negatieve waarden betekenen dat alle bruikbare punten op een rechte lijn liggen, waarbij beide variabelen variatie hebben. De coëfficiënt heeft geen eenheid, blijft gelijk als de assen wisselen en blijft gelijk bij een positieve omzetting tussen meeteenheden.
Een coëfficiënt dicht bij nul betekent weinig lineaire samenhang. Voor invoerwaarden −3, −2, −1, 0, 1, 2, 3 en uitvoerwaarden gelijk aan hun kwadraten is de Pearsoncorrelatie precies nul, ondanks een perfect U-vormig verband. Correlatie verschilt ook van helling: een flauwe lijn kan een hoge correlatie hebben.
Rangmethoden beschrijven de volgorde
Spearmancorrelatie berekent de Pearsoncorrelatie op rangnummers en beschrijft monotone samenhang: waarden bewegen meestal consequent omhoog of omlaag, ook langs een kromme. Kendalls tau vergelijkt concordante paren waarnemingen, die voor beide variabelen dezelfde volgorde hebben, met discordante paren, die een tegengestelde volgorde hebben. Rangmethoden zijn minder gevoelig voor de grootte van extreme waarden dan Pearson.
Voor het voorbeeld met temperatuur en fietsverhuringen is Pearson 0,974, Spearman 0,976 en Kendall 0,929. Het spreidingsdiagram toont nog steeds de afvlakking boven ongeveer 27 °C. Een hoge coëfficiënt kan samengaan met een belangrijke kromming.
Bereken een matrix zorgvuldig
cols = ["temp_c", "rentals", "distance_km"]
corr = df[cols].corr(method="spearman")
sns.heatmap(corr, annot=True, fmt=".2f",
vmin=-1, vmax=1, center=0, cmap="vlag")
Voor een gemengd DataFrame selecteert df.corr(numeric_only=True) numerieke kolommen; sluit ook identificatiecodes en categoriecodes uit die geen betekenisvol numeriek verband hebben. Ontbrekende waarden worden per paar uitgesloten, dus matrixcellen kunnen verschillende deelverzamelingen beschrijven. Controleer het bruikbare aantal voor elk paar. De matrix is symmetrisch. De correlatie van een variabele met zichzelf is 1 waar die gedefinieerd is; een constante kolom heeft een ongedefinieerde correlatie en een ontbrekende rij, kolom en diagonaalwaarde.
Controleer de gevoeligheid voor de ligging van gegevenspunten
Voor invoerwaarden 1 tot en met 10 en uitvoerwaarden 3, 1, 4, 2, 5, 3, 4, 2, 5, 3 is Pearson ongeveer 0,307. Door één punt (30, 30) toe te voegen stijgt die tot 0,938; Spearman wordt ongeveer 0,462. Eén punt kan Pearson overheersen terwijl het grootste deel een zwak patroon behoudt.
Het kwartet van Anscombe maakt dezelfde les zichtbaar: vier datasets hebben een gemiddelde invoer van 9, een gemiddelde uitvoer van 7,50, een invoervariantie van 11, een correlatie rond 0,816 en een aangepaste lijn , maar hun grafieken tonen een puntenwolk, een kromme en verschillende invloedrijke punten. Rapporteer de waarde en het aantal naast een sterkteaanduiding; vakgebieden hebben verschillende conventies voor woorden zoals “sterk”.
Belangrijkste punten
- Pearson beschrijft lineaire samenhang, heeft geen eenheid en heeft waarden tussen −1 en 1.
- Een Pearsoncorrelatie van nul kan een sterk gekromd verband verbergen.
- Spearman en Kendall beschrijven de volgorde en zijn minder gevoelig voor de grootte van extreme waarden.
- Door ontbrekende waarden per paar te verwijderen, kunnen matrixcellen op verschillende steekproeven berusten.
- Een constante variabele heeft een ongedefinieerde correlatie.
- Grafieken en gevoeligheidsanalyses tonen kenmerken die identieke coëfficiënten kunnen verbergen.
4.3 Samenhang, oorzaken en misleidende vergelijkingen
Samenhang beschrijft hoe variabelen samen voorkomen in de waargenomen gegevens. De oorzaak vraagt om een afzonderlijke verklaring. Mogelijke bronnen zijn een causaal effect, omgekeerde causaliteit, een derde variabele, selectie en toeval.
Vraag wat het verband kan verklaren
Een verstorende variabele beïnvloedt beide variabelen en veroorzaakt of vertekent hun samenhang. Warm weer verhoogt de ijsverkoop en het aantal zwemongelukken. Minder ijs verkopen zou het weergerelateerde risico laten bestaan. Een mediërende variabele is anders: die ligt op het causale pad tussen de variabelen.
Omgekeerde causaliteit draait de voorgestelde richting om. Klanten die helppagina's vaker bezoeken, kunnen meer mislukte bestellingen hebben omdat mislukkingen hen naar die pagina's sturen. Het waargenomen verband geeft geen grond om minder mislukkingen te verwachten als de helppagina's worden verborgen.
Scheid subgroeppatronen van het samengevoegde resultaat
De Simpsonparadox treedt op als de samengevoegde vergelijking de richting omkeert die in elke subgroep te zien is. De gegevens over behandelingen van nierstenen uit een onderzoek uit 1986 illustreren de berekening:
| Groep | Behandeling A | Behandeling B |
|---|---|---|
| Kleine stenen | 81/87 = 93,1% | 234/270 = 86,7% |
| Grote stenen | 192/263 = 73,0% | 55/80 = 68,8% |
| Samengevoegd | 273/350 = 78,0% | 289/350 = 82,6% |
A heeft in beide groepen naar steengrootte het hoogste slaagpercentage. B heeft het hoogste samengevoegde aandeel omdat A vooral werd gebruikt bij de moeilijker te behandelen gevallen met grote stenen. Samengevoegde aandelen wegen de aandelen van subgroepen naar hun aantallen. Inspecteer de samenstelling en vergelijk betekenisvolle subgroepen voordat je een samengevoegd resultaat interpreteert.
Controleer tijd, selectie en aggregatie
Twee reeksen zonder onderling verband kunnen beide door de jaren stijgen en sterk gecorreleerd lijken. Zet ze uit tegen de tijd en inspecteer veranderingen van periode tot periode of verbanden binnen perioden. Het verband tussen de niveaus kan grotendeels hun gezamenlijke tijdtrend weerspiegelen.
Een geselecteerd bereik verandert ook wat zichtbaar is. Onder studenten die op hoge toelatingsscores zijn geselecteerd, is het scorebereik smal en kan de correlatie tussen score en cijfers veel zwakker zijn dan onder alle aanmelders. Beschrijf de geselecteerde populatie; de coëfficiënt ervan beantwoordt een andere vraag dan de coëfficiënt voor alle aanmelders.
Een correlatie tussen stadsgemiddelden heeft betrekking op steden. Die toepassen op individuele inwoners is de ecologische denkfout. Aggregatie kan samenhang versterken, verzwakken of omkeren omdat het patroon binnen groepen en de samenstelling tussen groepen niet hoeven overeen te komen.
Gebruik een brede zoektocht als bron van hypothesen
Met 20 numerieke variabelen zijn er 190 verschillende paren. Als je die paren en veel segmenten doorzoekt, krijgen toevalspatronen veel kansen om te verschijnen. Rapporteer hoe breed je hebt verkend en benoem een verrassend patroon vervolgens als hypothese voor nieuwe gegevens of een geplande toetsende analyse.
Gebruik formuleringen die aan de waarnemingen zijn gekoppeld: “Bestellingen tijdens regen hingen in deze periode samen met langere bezorgtijden.” Die uitspraak legt een verband vast. Een bewering dat regen het verschil veroorzaakte, zou ook bewijs vereisen dat concurrerende verklaringen uitsluit, zoals een andere samenstelling van routes of tijdstippen.
Belangrijkste punten
- Denk bij het verklaren van samenhang aan omgekeerde causaliteit, verstorende variabelen, selectie en toeval.
- Verstorende variabelen beïnvloeden beide variabelen; mediërende variabelen liggen op een causaal pad.
- Samengevoegde vergelijkingen kunnen vergelijkingen binnen subgroepen omkeren als de groepssamenstelling verschilt.
- Tijdtrends, geselecteerde bereiken en aggregatie veranderen de samenhang die wordt gemeten.
- Verbanden op groepsniveau vragen om interpretaties op groepsniveau.
- Gebruik verkennende patronen om hypothesen te vormen en rapporteer de omvang van de zoektocht.
5Vergelijk segmenten van de gegevens
Een samengevoegde samenvatting kan verschillen tussen steden, kanalen of perioden verbergen. Vergelijk groepsverdelingen, categorieaandelen en gebeurtenisfrequenties met hun noemers en steekproefgroottes zichtbaar. Controleer daarna of groepssamenstelling, ontbrekende uitkomsten of ongelijke tijdsdekking het schijnbare verschil verklaren. Een bruikbare vergelijking kiest de maat die bij de vraag past en houdt de basis van elk getal duidelijk.
5.1 Vergelijk centrum, spreiding en staarten tussen groepen
Een segment is een deelverzameling die wordt bepaald door een categorie, numerieke klasse of periode. Een bruikbare vergelijking toont hoe de volledige verdeling verschilt, met zicht op de hoeveelheid bewijs achter elke samenvatting.
Zet groepsgroottes naast samenvattingen
by_city = df.groupby("city")["minutes"].agg(
["count", "mean", "median", "std"]
)
Het aantal is hier het aantal geregistreerde tijdsduren. Als sommige tijdsduren ontbreken, rapporteer dan ook het aantal bestellingen en het ontbrekende aandeel zodat de basis van de tabel duidelijk is. Aggregaties met benoemde uitvoerkolommen kunnen kolommen bruikbare labels geven, zoals orders=("order_id", "count") en median_min=("minutes", "median").
Bekijk deze bezorgtijden:
| Stad | Tijden in minuten | Gemiddelde | Mediaan | Steekproefstandaardafwijking |
|---|---|---|---|---|
| Lyon | 24, 30, 27, 33, 29, 31 | 29,0 | 29,5 | 3,2 |
| Porto | 22, 25, 21, 40, 24 | 26,4 | 24,0 | 7,8 |
| Tartu | 19, 55 | 37,0 | 37,0 | 25,5 |
Tartu heeft het hoogste gemiddelde maar slechts twee waarnemingen. Eén lange bezorging bepaalt het resultaat sterk. Kleine groepen verschijnen vaak aan beide uiteinden van een ranglijst omdat hun samenvattingen sterker schommelen door afzonderlijke waarnemingen. Stel vóór het rangschikken een minimumaantal vast en houd kleine groepen zichtbaar als onvolledig bewijs.
Kies een weergave voor de verdeling
Een boxplot op een gedeelde numerieke as vergelijkt medianen, middelste helften en gemarkeerde extreme waarden. Een viooldiagram voegt de geschatte vorm toe. Bij kleine groepen tonen puntenstrookdiagrammen of zwermdiagrammen elke waarneming en maken ze de steekproefgrootte gemakkelijker zichtbaar.
Gebruik voor histogrammen deelgrafieken met dezelfde assen of genormaliseerde histogrammen over elkaar, zoals met stat="density", common_norm=False. Histogrammen van aantallen over elkaar tonen vooral welke groep meer records bevat. Met dichtheidshistogrammen over elkaar kan de vorm van elke groep op dezelfde basis worden vergeleken.
Twee groepen met hetzelfde gemiddelde kunnen heel verschillende staarten hebben. Een stad met vooral snelle bezorgingen en enkele zeer lange kan hetzelfde gemiddelde hebben als een stad met consequent gemiddelde tijden. Vergelijk naast het centrum ook de spreiding, percentielen en een relevant aandeel boven een drempel.
Benoem de referentie van een verschil
Het verschil tussen de gemiddelden van Tartu en Lyon is in deze steekproef 8 minuten. Ten opzichte van Lyon is het ongeveer 27,6%:
De referentie is de 29 minuten van Lyon. Als je de referentie omdraait, verandert het relatieve percentage, ook al blijft het absolute verschil 8 minuten. Rapporteer bij deze beschrijvende berekening de beperkte groepsaantallen; de berekening alleen kan geen stabiel verschil tussen steden vaststellen.
Controleer de samenstelling binnen groepen
df.groupby(["city", "vehicle"])["minutes"].median().unstack()
Deze tabel met steden per voertuigtype kan laten zien of een verschil tussen steden voortkomt uit de samenstelling naar voertuigtype. Een draaitabel met dezelfde groepering en mediaan geeft dezelfde vergelijking. Inspecteer ook de aantallen voor deze kleinere cellen: een groep opsplitsen kan het bewijs schaarser maken, ook al verduidelijkt het het patroon.
Belangrijkste punten
- Rapporteer groepsaantallen bij centrum en spreiding, inclusief de basis van elke telling.
- Gebruik gedeelde schalen en normalisatie binnen groepen om verdelingen te vergelijken.
- Inspecteer naast centrummaten ook staarten en aandelen boven een drempel.
- Benoem de referentie wanneer je een relatief verschil rapporteert.
- Controleer de samenstelling van subgroepen en aantallen in kleine cellen voordat je groepen rangschikt.
5.2 Aandelen, gebeurtenisfrequenties en de juiste noemer
Aantallen beantwoorden hoe vaak gebeurtenissen hebben plaatsgevonden. Gebeurtenisfrequenties beantwoorden hoe vaak gebeurtenissen plaatsvonden ten opzichte van het aantal mogelijkheden. Als groepen in grootte verschillen, kan de keuze van de noemer het beeld van de vergelijking veranderen.
Lees een kruistabel in de bedoelde richting
Een kruistabel telt combinaties van twee categorieën:
pd.crosstab(df["region"], df["channel"], margins=True)
Noord heeft 30 appbestellingen en 20 webbestellingen; Zuid heeft 60 appbestellingen en 90 webbestellingen. Zuid heeft meer appbestellingen, maar het grotere totaal aan bestellingen verandert de vergelijking van de aandelen.
| Vraag | Noemer | Resultaat |
|---|---|---|
| Welk aandeel gebruikt binnen Noord de app? | Alle 50 bestellingen uit Noord | 60% |
| Welk aandeel gebruikt binnen Zuid de app? | Alle 150 bestellingen uit Zuid | 40% |
| Welk aandeel van alle appbestellingen komt uit Noord? | Alle 90 appbestellingen | 33,3% |
normalize="index" deelt door rijtotalen; normalize="columns" deelt door kolomtotalen. normalize="all" gebruikt het eindtotaal. Lees de vraag hardop voordat je de normalisatie kiest. Bij rijnormalisatie telt elke rij op tot 1, bij kolomnormalisatie elke kolom.
Houd onbekende uitkomsten ontbrekend
Een gemiddelde van booleaanse waarden geeft het aandeel True-waarden. Bij een indicator voor te late bezorging vragen ontbrekende tijden om een speciale behandeling:
df["late"] = df["minutes"].astype("Float64") > 45
rates = df.groupby("city")["late"].mean()
known = df.groupby("city")["late"].count()
Het datatype Float64 ondersteunt ontbrekende waarden en houdt ontbrekende tijden als ontbrekende indicatorwaarden. Het groepsgemiddelde schat dan het aandeel te laat onder de geregistreerde tijden. Bij gewone drijvendekommagetallen is NaN > 45 False, waardoor onbekende tijden als op tijd zouden meetellen en het aandeel zou dalen. Vermeld de noemer met bekende uitkomsten en rapporteer naast het aandeel hoeveel waarden ontbreken.
Onderscheid twee soorten procentuele verandering
Een aandeel te late bezorgingen dat stijgt van 4% naar 5% stijgt met 1 procentpunt. De relatieve stijging gebruikt het oorspronkelijke aandeel als referentie:
Schrijf “steeg met 1 procentpunt, een relatieve stijging van 25%”. Alleen “steeg met 1%” laat de betekenis onduidelijk. Toon bij een aandeel op basis van een kleine cel ook het aantal: 1 te late bestelling op 2 geeft 50%, maar één extra bestelling op tijd verandert het aandeel in een derde.
Vergelijk aandelen in een uitkomst met de groepsgrootte
Als Noord 25% van alle bestellingen levert maar 40% van de klachten, is Noord oververtegenwoordigd onder de klachten. Dat vergelijkt het aandeel in de klachten met het aandeel in de bestellingen. Dat is een andere vraag dan het klachtaandeel binnen Noord, waarvoor je het aantal klachten uit Noord deelt door het aantal bestellingen uit Noord.
Gebruik gegroepeerde staven, 100% gestapelde staven of een hittekaart met labels om verhoudingen te tonen. Een naar rijen genormaliseerde tabel met regio's en kanalen als gestapelde staven vergelijkt de samenstelling naar kanaal binnen regio's. Zet de noemer in de titel of het aslabel, zodat lezers die samenstelling kunnen onderscheiden van de regionale samenstelling van elk kanaal.
Belangrijkste punten
- Rijaandelen, kolomaandelen en aandelen in het eindtotaal beantwoorden verschillende vragen.
- Vergelijk gebeurtenisfrequenties met het aantal mogelijkheden in hetzelfde segment.
- Houd onbekende uitkomsten ontbrekend wanneer je booleaanse indicatoren voor gebeurtenisfrequenties maakt.
- Verschillen in procentpunten trek je van elkaar af; voor relatieve veranderingen deel je door de referentiewaarde.
- Toon aantallen naast gebeurtenisfrequenties, vooral bij kleine cellen.
- Vergelijk het aandeel van een groep in een uitkomst met het aandeel in het geheel om oververtegenwoordiging te beoordelen.
5.3 Vergelijkbare perioden door de tijd vergelijken
Periodetotalen hangen af van zowel de activiteit als de gedekte tijd. Controleer periodegrenzen, ontbrekende datums en het normale seizoenspatroon voordat je een stijging of daling beschrijft. Vergelijk segmenten met een maat die past bij hun grootte.
Aggregeer per kalenderperiode
Met ingelezen besteltijdstempels kun je als volgt maandelijkse aantallen maken:
monthly = (
df.set_index("order_date")
.resample("MS")["order_id"].count()
)
"MS" gebruikt de eerste dag van elke kalendermaand als label. Gebruik "ME" voor labels aan het maandeinde in de huidige versie van pandas. Combineer voor een maandelijkse tabel per stad pd.Grouper(key="order_date", freq="MS") met de groepering op stad en gebruik .size().unstack(). De methode telt rijen, dus stel eerst vast dat een rij een bestelling is.
Controleer de gedekte tijd voordat je totalen vergelijkt
Stel dat er van 1 augustus tot en met 12 oktober 100 bestellingen per dag zijn. De maandtotalen zijn 3.100 in augustus, 3.000 in september en 1.200 in het geregistreerde deel van oktober. Het totaal van oktober lijkt veel lager, maar elke waargenomen dag heeft dezelfde activiteit.
Deel elk totaal door het aantal waargenomen dagen: 31, 30 en 12. Alle drie de daggemiddelden zijn 100. Vergelijk zulke aantallen per dag of laat onvolledige perioden weg. De noemer moet de werkelijke dekking weergeven: een niet-geregistreerde dag kun je niet zonder meer behandelen als een dag zonder activiteit.
Zelfs volledige maanden hebben verschillende lengtes. Ze kunnen ook een verschillend aantal drukke weekdagen bevatten. Als de activiteit op zaterdag hoog is, vergelijk dan dezelfde weekdagen of frequenties die rekening houden met de verdeling van weekdagen voordat je een maandelijks verschil interpreteert.
Onderscheid een cyclus van een blijvende verandering
Seizoenspatroon is een terugkerend patroon, zoals een wekelijkse of jaarlijkse cyclus. daily.rolling(7).mean() vlakt een venster van zeven dagen af in een dagelijkse reeks met regelmatige tussenpozen. Het maakt een wekelijkse cyclus minder prominent terwijl langzamere veranderingen behouden blijven. Vergelijk december met de vorige december wanneer de vraag gaat over de verandering ten opzichte van een jaar eerder bij een seizoensgebonden activiteit.
Enkele ongebruikelijk hoge dagen kunnen in een kort venster op een trend lijken. Toon voldoende geschiedenis om de normale bewegingsruimte te begrijpen en behoud de niet-afgevlakte waarden als die een belangrijke gebeurtenis helpen verklaren.
Controleer ontbrekende perioden en vergelijk het verloop van segmenten
Een aantal van nul na resampling kan betekenen dat er geen gebeurtenissen zijn geregistreerd of dat de verzameling is uitgevallen. Een plotselinge niveauverandering kan een nieuwe appversie of een gewijzigde definitie weerspiegelen. Controleer de dekking en verzamelgeschiedenis bij de gegevensbron voordat je die punten als gedragsveranderingen behandelt.
Toon elk segment als een lijn op gedeelde assen, met eenheden en een vaste kleur per groep. Grote groepen kunnen grafieken met aantallen overheersen. Aandelen, gebeurtenisfrequenties of een index ten opzichte van de beginwaarde van elke groep kunnen veranderingen in kleinere groepen zichtbaar maken; vermeld welke maat wordt getoond.
Een cohort groepeert klanten op basis van hun startmoment. Door klanten die in maart en april begonnen te volgen naar de tijd sinds hun eerste bestelling, kun je veranderingen binnen de klantgeschiedenis onderscheiden van veranderingen in de totale samenstelling van het klantenbestand.
Belangrijkste punten
- Controleer of de dekking volledig is en gebruik actuele frequentiecodes voor kalenderperioden.
- Vergelijk totalen met aandacht voor de lengte van de periode en de verdeling van weekdagen.
- Gebruik de waargenomen dekking voor gebeurtenisfrequenties en onderzoek ontbrekende perioden voordat je ze als nullen behandelt.
- Vergelijk seizoensperioden en bekijk voldoende geschiedenis om bewegingen te interpreteren.
- Gebruik gebeurtenisfrequenties per segment of geïndexeerde reeksen als groepsgroottes verschillen.
- Cohorten onderscheiden de tijd sinds de start van veranderingen in de totale samenstelling van het klantenbestand.
6Rapporteer verkennende bevindingen op een reproduceerbare manier
Verkenning wordt bruikbaar voor anderen wanneer de bevindingen duidelijke vragen beantwoorden en de onderbouwing controleerbaar is. Selecteer de grafieken en getallen die de resultaten verklaren, onderscheid waarnemingen van voorgestelde oorzaken en maatregelen en vermeld de beperkingen die de interpretatie beïnvloeden. Zorg voor een overzichtelijk notebook, actuele exports en voldoende informatie over herkomst en verwerking zodat een bevoegde lezer het werk kan herhalen.
6.1 Bevindingen die de vraag beantwoorden
Een bruikbare bevinding verbindt een vraag met bewijs. Ze geeft de omvang van een patroon, de populatie en periode die het beschrijft en de beperkingen die de interpretatie beïnvloeden. Bouw het rapport op rond vragen in plaats van de volgorde waarin grafieken zijn gemaakt.
Onderbouw een bevinding
Bijvoorbeeld: “Van januari tot en met september 2026 was de mediane bezorgtijd 29 minuten; 8% van de 48.200 bestellingen duurde langer dan 45 minuten. Het aandeel te late bezorgingen was het hoogst op vrijdag- en zaterdagavond: 14%, tegenover 6% op andere avonden.”
Deze uitspraak benoemt de periode, centrummaat, drempel, noemer en vergelijking. Gebruik voldoende precisie voor de beslissing. “29 minuten” is gemakkelijker te gebruiken dan “29,4545 minuten” als de extra cijfers geen praktische informatie toevoegen. Bij een scheve verdeling van tijdsduren verklaren een mediaan en een hoog percentiel de ervaring vaak beter dan alleen een gemiddelde.
Scheid wat er gebeurde van waarom en wat je kunt doen
| Soort uitspraak | Voorbeeld | Rol |
|---|---|---|
| Waarneming | “Te late bezorgingen kwamen vaker voor op regenachtige avonden.” | Beschrijft een waargenomen samenhang |
| Interpretatie | “Regen vertraagt bezorgers.” | Stelt een causale verklaring voor |
| Aanbeveling | “Plan extra bezorgers in op regenachtige avonden.” | Stelt een maatregel voor op basis van die verklaring |
Een aanbeveling hangt af van aannames over de oorzaak en het effect van de maatregel. Houd die aannames zichtbaar en benoem welk aanvullend bewijs nodig is. Een waarneming kan bruikbaar zijn terwijl de verklaring nog een hypothese is.
Laat een grafiek één bevinding uitleggen
Selecteer de paar grafieken die de vragen beantwoorden en de verrassingen die ertoe doen. Bewaar andere bruikbare verkennende weergaven in een bijlage of notebook. Geef een rapportgrafiek een titel die de bevinding vermeldt, zoals “Te late bezorgingen pieken op vrijdag- en zaterdagavond.” Geef assen labels met eenheden, sorteer categorieën waar passend en houd de kleur van elk segment consistent tussen grafieken. Vermeld de gegevensbron en periode.
Rapporteer ook tegenstrijdig bewijs. Als een samengevoegde grafiek op verbetering wijst maar één groot segment verslechterde, is het segmentresultaat van belang voor de interpretatie. Alleen grafieken selecteren die een verwacht verhaal ondersteunen, zou informatie verbergen die de lezer nodig heeft.
Orden een beknopt rapport
Een duidelijke volgorde is: vraag en context; gegevensbron, periode, aantal rijen en betekenis van een rij; kwaliteitsproblemen en opschoningsbeslissingen; drie tot vijf onderbouwde kernbevindingen; beperkingen; vervolgstappen. Elke bevinding moet een vraag beantwoorden of een belangrijke verrassing verklaren.
Beperkingen geven aan wat de gegevens bestrijken, wat is uitgesloten en waarom, hoeveel ontbreekt en dat de patronen samenhang beschrijven. Vermeld bijvoorbeeld dat 37 geannuleerde bestellingen uit een vergelijking van voltooide bezorgingen zijn verwijderd. Vervolgstappen kunnen zijn: een hypothese controleren met nieuwe gegevens, een ontbrekende variabele verzamelen, een probleem in het bronsysteem oplossen of een vraag voor latere modellering onderzoeken.
Belangrijkste punten
- Geef bij elke bevinding onderbouwing, omvang, populatie en periode.
- Houd waarnemingen, interpretaties en aanbevelingen gescheiden.
- Selecteer en label grafieken rond bevindingen en houd tegenstrijdig bewijs zichtbaar.
- Rapporteer een bruikbare precisie, noemers, ontbrekende waarden en uitsluitingen.
- Sluit af met concrete vervolgvragen of maatregelen die door de analyse worden ondersteund.
6.2 Deel resultaten die anderen opnieuw kunnen uitvoeren
Een gedeelde analyse heeft zowel leesbare resultaten nodig als een weg terug naar de code en invoer die ze hebben voortgebracht. Bereid een definitief notebook voor waarvan de volgorde, uitvoer en ondersteunende bestanden overeenstemmen.
Schoon het definitieve notebook op en voer het uit
Verwijder ongebruikte en dubbele cellen, houd afhankelijkheden in uitvoeringsvolgorde en voeg Markdown toe die beslissingen tussen codesecties uitlegt. Bewaar het meer experimentele werk afzonderlijk wanneer dat nuttig is. Start de kernel opnieuw en voer vóór elke export alle cellen uit. Inspecteer zowel fouten als gewijzigde uitvoer: ook een geslaagde uitvoering kan laten zien dat een eerder opgeschreven getal is verouderd.
Genereer gerapporteerde getallen vanuit code:
s = df["minutes"]
print(f"Median delivery time: {s.median():.0f} minutes")
Een getal dat in een alinea is getypt, kan onveranderd blijven nadat de gegevens zijn vernieuwd. Houd de weergegeven uitspraak gekoppeld aan de berekening zodat de volgende uitvoering die bijwerkt.
Exporteer rapporten, figuren en tabellen
Een HTML-export is zonder Python-omgeving in een browser te lezen:
jupyter nbconvert --to html --execute report.ipynb
De optie execute voert het notebook vóór de conversie uit. Controleer zowel het resulterende rapport als het notebook. Publicatiehulpmiddelen zoals Quarto bieden een andere weg naar een leesbaar rapport.
Sla figuren en tabellen op vanuit code zodat nieuwe uitvoeringen de bestanden vernieuwen:
fig.savefig("figures/late_by_hour.png", dpi=200,
bbox_inches="tight")
summary.to_csv("output/city_summary.csv")
Maak de doelmappen aan bij de inrichting van het project. Een schermafbeelding bewaart de uitvoer van één moment, maar heeft geen automatische koppeling met de volgende berekening.
Voeg de herkomst en uitvoeringsinstructies toe
Leg de gegevensbron, extractiedatum, het invoerbestand of de versie, het aantal rijen, filters, softwareversies en startwaarden voor toevalsgeneratoren vast. Deze gegevens verklaren welke invoer en instellingen een bevinding hebben opgeleverd. Verzamel veranderlijke instellingen bovenaan in het notebook, zodat een maandelijkse update één duidelijk beginpunt heeft.
Een project kan ruwe en verwerkte gegevens, notebooks, figuren en geëxporteerde tabellen scheiden. Voeg een README toe met het doel, de verwachte werkmap en de uitvoeringsstappen, plus een bestand met de pakketomgeving. Houd notebook, instructies en omgeving bij elkaar wanneer je de opnieuw uitvoerbare analyse deelt. Als de toegang tot invoer moet worden beheerst, vermeld dan hoe een bevoegde lezer de bijbehorende gegevensversie verkrijgt.
Controleer wat de uitvoer onthult
Inspecteer vóór het delen elke uitvoercel en export op persoonsgegevens. Voorvertoningen van tabellen kunnen namen, e-mailadressen en exacte locaties tonen, ook als de uiteindelijke grafiek is geaggregeerd. Verwijder, maskeer of aggregeer identificerende kolommen waar passend en volg de afspraken en regels voor gegevensbescherming die op de dataset van toepassing zijn.
Belangrijkste punten
- Schoon het definitieve notebook op en controleer het met een nieuwe herstart en uitvoering van alle cellen.
- Bereken gerapporteerde getallen in code en sla figuren en tabellen via code op.
- Voer het notebook vóór de export uit zodat het rapport actuele uitvoer bevat.
- Voeg gegevensherkomst, instellingen, omgeving en duidelijke uitvoeringsinstructies toe.
- Inspecteer alle gedeelde uitvoer op persoonsgegevens.
Verkennende data-analyse in Python: voorbeelden
1Zet een brede vraag om in een opnieuw uitvoerbare analyse
12 stappen
- 1IntroductieGeef de analyse een duidelijk uitgangspunt
Een team vraagt: “Hoe betrouwbaar is onze reparatieservice?” Je hebt een tabel met reparatietaken en een notebook. Bepaal voordat je een grafiek maakt wat het team moet weten en wat elke rij je kan vertellen. Je zet de vraag om in concrete vragen, bepaalt het detailniveau en richt het werk zo in dat een nieuwe notebooksessie het kan herhalen.
- 2UitlegStel vragen die een vergelijking suggereren
Begin met de beslissing: misschien moet het team vaststellen waar lange wachttijden voorkomen. Bruikbare vragen zijn “Wat is de gebruikelijke reparatietijd?”, “Welk aandeel overschrijdt onze servicedrempel?” en “Hoe verschillen tijden per apparaatmodel?” Elke vraag benoemt een grootheid of vergelijking. Houd ruimte voor nieuwe vragen wanneer een grafiek een onverwachte groep of een kwaliteitsprobleem laat zien.
- 3VoorbeeldStel vast wat de rijen voorstellen
Het bestand bevat 900 taakrijen en 300 unieke opdracht-ID's. Een opdracht kan meerdere taken omvatten. De verhouding is gemiddeld 3 taken per opdracht, maar afzonderlijke opdrachten kunnen verschillende aantallen taken hebben. Rijen tellen beantwoordt een vraag over taken. Voor een vraag over het aantal opdrachten zijn unieke opdracht-ID's of een tabel op opdrachtniveau nodig, met een verantwoorde regel om taakinformatie te combineren.
- 4UitdagingKies de telling die bij de vraag past
Het team wil het aandeel opdrachten met vertraging weten. De tabel heeft meerdere taakrijen per opdracht. Beantwoordt het gemiddelde van een vertragingsindicator op taakniveau die vraag?
---reveal---
Het geeft het aandeel vertraagde taken en geeft opdrachten met meerdere taken meer gewicht. Bepaal eerst wanneer een opdracht als vertraagd telt, combineer taakinformatie op opdrachtniveau en deel vertraagde opdrachten door de opdrachten die meetellen.
- 5VerbandKeer terug naar kwaliteitscontroles als een patroon je verrast
Verkenning verloopt in een cyclus: vragen, inlezen, gegevens in kaart brengen, verdelingen, verbanden, vergelijkingen en bevindingen. Stel dat één apparaatmodel 1.000 keer langer lijkt te duren. Keer terug naar de kolomdefinities en broneenheden voordat je een prestatieverschil verklaart. De verrassing heeft een kwaliteitsvraag opgeleverd die de volgende analysestap kan veranderen.
- 6KernpuntScheid ontdekking van een geplande toets
Een patroon dat je vindt na een zoektocht door veel grafieken is een aanwijzing voor vervolgonderzoek. Toetsende analyse controleert een vooraf opgestelde hypothese, bij voorkeur met nieuwe waarnemingen. Controleer ook wie vertegenwoordigd is: beoordelingen van klanten die vrijwillig feedback gaven beschrijven die respondenten. Het verzamelproces bepaalt welk bewijs nodig is om de bevinding uit te breiden naar iedereen die geholpen is.
- 7UitlegBekijk wat de kernel onthoudt
Een notebookkernel bewaart variabelen tussen celuitvoeringen. Als je een gefilterde tabel maakt, de cel met de definitie verwijdert en de tabel blijft gebruiken voor grafieken, kan de huidige sessie nog steeds werken. Een nieuwe kernel kan die tabel niet opnieuw maken. Uitvoeringsnummers tonen de uitvoeringsvolgorde, maar de doorslaggevende controle is een herstart gevolgd door het uitvoeren van elke cel van boven naar beneden.
- 8VoorbeeldMaak afhankelijkheden zichtbaar
Orden het notebook als volgt: doel en vragen, imports, instellingen en daarna analysesecties. Zet veranderlijke paden, drempelwaarden en startwaarden in de instellingencel. Gebruik een relatief projectpad zoals
Path("data/raw/repairs.csv")en leg de werkmap vast. Houd ruwe bestanden ongewijzigd en leg correcties vast in code, zodat de volgende dataset dezelfde procedure volgt. - 9TipBeheers de onderdelen die tussen uitvoeringen verschillen
Leg pakketversies vast en sla een omgevingsbestand op. Bepaal de startwaarde van elke willekeurige stap; voor een tabel met minstens 200 rijen herhaalt
df.sample(n=200, random_state=17)de steekproef bij dezelfde invoer en software. Een vaste startwaarde kan een overschreven invoerbestand niet herstellen, dus leg ook de gegevensversie en extractiegegevens vast. - 10UitdagingZoek een onzichtbare afhankelijkheid
Een samenvattingscel wordt nu goed uitgevoerd. Na een herstart en uitvoering van alle cellen mislukt die omdat
job_totalsniet is gedefinieerd. Wat zegt dit en wat moet je herstellen?---reveal---
De oude kernel bevatte een variabele die de zichtbare reeks cellen niet aanmaakt. Herstel of verplaats de code die de variabele definieert naar een plek vóór de samenvatting en voer daarna het hele notebook opnieuw uit. Door de oude uitvoer op te slaan, bewaar je het resultaat zonder de afhankelijkheid te herstellen.
- 11UitdagingControleer een nieuw bestand voordat je dezelfde vraag beantwoordt
Het bestand van volgende maand komt binnen. Je vraag gaat over het tellen van opdrachten en de voorbereide tabel op opdrachtniveau hoort unieke opdracht-ID's te hebben. Hoe combineer je de controle van de rijbetekenis met een betrouwbare nieuwe uitvoering?
---reveal---
Lees de nieuwe versie in via de instellingencel en controleer met een assertie of de voorbereide opdrachtsleutel uniek is. Start de kernel opnieuw en voer alle cellen uit. Een mislukte controle legt een probleem met de invoer of voorbereiding bloot voordat herhaalde opdrachten het gerapporteerde aandeel vertekenen.
- 12SamenvattingHoud de vraag en de berekening bij elkaar
Je hebt nu een vraag die aan een beslissing is gekoppeld, een rijbetekenis die bepaalt wat je telt en een notebook met zichtbare afhankelijkheden. Gebruik dezelfde gewoonten bij het eerste overzicht: leg de invoerversie vast, inspecteer de structuur en laat controles de uitvoering stoppen als aannames niet kloppen. Bepaal wanneer een nieuw patroon verschijnt of het vraagt om een extra kwaliteitscontrole, een nieuwe vergelijking of een vervolghypothese.
2Inspecteer een nieuw bestand voordat je de patronen vertrouwt
13 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieBreng de gegevens onderbouwd in kaart
- 2UitlegInspecteer meer dan de eerste rijen
- 3VoorbeeldKies analysetypen op basis van kolombetekenissen
- 4UitdagingControleer wat een conversie heeft verloren
- 5UitlegMeet ontbrekende waarden voordat je een verwerking kiest
- 6VoorbeeldBekijk hoe verwijdering de samenstelling verandert
- 7KernpuntBeperk uitspraken over ontbrekende waarden tot het bewijs
- 8UitdagingInterpreteer aantallen duplicaten
- 9VoorbeeldScheid ontbrekende waarden van ongeldige geregistreerde waarden
- 10UitlegControleer overeenstemming tussen velden
- 11UitdagingKies een verantwoorde maatregel
- 12UitdagingKoppel het overzicht aan de volgende vergelijking
- 13SamenvattingHoud het overzicht bij de bevindingen
3Maak een volledig beeld van elke variabele
17 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieKijk verder dan één gemiddelde
- 2UitlegVergelijk centrum en spreiding
- 3VoorbeeldBereken de centrummaten
- 4VoorbeeldVoeg een maat voor de middelste spreiding toe
- 5UitdagingVoorspel het effect van een extreme waarde
- 6UitlegGebruik klassen om structuur zichtbaar te maken
- 7VoorbeeldLees welke vraag een cumulatieve grafiek beantwoordt
- 8UitdagingOnderzoek een opvallende tweede piek
- 9TipLees vloeiende krommen en schalen zorgvuldig
- 10VoorbeeldVat categorieën samen met een duidelijke basis
- 11UitlegHoud de restcategorie gescheiden van ontbrekende waarden
- 12UitdagingControleer een intervalgrens
- 13VoorbeeldBereken uitschietergrenzen
- 14KernpuntBekijk hoe een waarde zichzelf kan maskeren
- 15UitdagingBeslis op basis van bewijs over de verwerking
- 16UitdagingCombineer het beeld tot een bevinding
- 17SamenvattingKies een weergave die bij de vraag past
4Lees samenhang voordat je die verklaart
15 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieHoud de waarnemingen in beeld
- 2VoorbeeldBeschrijf meer dan de richting
- 3TipMaak dichtheid en groepen zichtbaar
- 4UitdagingKies een gerichte aanpassing van de grafiek
- 5UitlegBepaal wat Pearson meet
- 6VoorbeeldGebruik een gekromd voorbeeld om de betekenis te toetsen
- 7UitlegGebruik rangnummers voor een consistente volgorde
- 8UitdagingOnderzoek een coëfficiënt die door één punt wordt overheerst
- 9TipLees de steekproef achter een cel in een hittekaart
- 10UitlegNoem aannemelijke richtingen en gemeenschappelijke oorzaken
- 11VoorbeeldVergelijk binnen moeilijkheidsgroepen
- 12VoorbeeldBekijk de omkering in het samengevoegde resultaat
- 13UitdagingKies het interpretatieniveau
- 14UitdagingKies aanvullend bewijs voor een verrassend resultaat
- 15SamenvattingRapporteer het patroon en de resterende vraag
5Vergelijk groepen op dezelfde basis
15 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieMaak de basis van de vergelijking zichtbaar
- 2VoorbeeldGeef voldoende informatie om een gemiddelde te beoordelen
- 3VoorbeeldDruk een verschil uit met de referentie
- 4UitdagingZoek een verborgen verschil in verdeling
- 5VoorbeeldKies de richting van een percentage
- 6TipHoud ontbrekende uitkomsten buiten de False-groep
- 7UitdagingOnderscheid het verschil van de relatieve verandering
- 8UitdagingControleer of aantallen de vraag over frequenties beantwoorden
- 9UitlegAggregeer de periode die je wilt vergelijken
- 10VoorbeeldBereken activiteit gecorrigeerd voor de gedekte tijd
- 11VerbandOnderscheid een terugkerende cyclus van verandering
- 12UitdagingOnderzoek een nul voordat je die interpreteert
- 13KernpuntStem klantgeschiedenissen op elkaar af
- 14UitdagingCombineer controles van frequentie en dekking
- 15SamenvattingKoppel elke vergelijking aan de noemer
6Zet verkenning om in een controleerbaar rapport
11 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieHelp een lezer het resultaat te beoordelen
- 2VoorbeeldSchrijf een bevinding met omvang en reikwijdte
- 3UitlegScheid de onderdelen van een uitspraak
- 4TipSelecteer grafieken rond de vraag
- 5UitdagingHerstel een te brede bevinding
- 6UitlegMaak de laatste uitvoering de bron van het rapport
- 7VoorbeeldExporteer actuele bestanden
- 8UitlegLeg vast wat een latere analist moet laten overeenkomen
- 9UitdagingControleer alles wat je deelt
- 10UitdagingLos gewijzigde uitvoer vóór publicatie op
- 11SamenvattingLever bewijs met een weg terug naar de berekening
Verkennende data-analyse in Python: oefenvragen
Set 1: Begin met betrouwbare gegevens10 Oefenvragen
Vraag 1 van 10
len(df)?Toon antwoordVerberg antwoord
Vraag 2 van 10
Toon antwoordVerberg antwoord
Vraag 3 van 10
Toon antwoordVerberg antwoord
Vraag 4 van 10
clean zonder problemen, maar na een nieuwe herstart en uitvoering van alle cellen ontstaat bij die cel een NameError. Wat moet je eerst onderzoeken?Toon antwoordVerberg antwoord
Vraag 5 van 10
pd.to_numeric(s, errors="coerce") worden onderzocht?Toon antwoordVerberg antwoord
Vraag 6 van 10
s.duplicated(keep=False).sum() terug?Toon antwoordVerberg antwoord
keep=False neemt die eerste exemplaren mee, zodat je de volledige groepen kunt inspecteren.Vraag 7 van 10
Toon antwoordVerberg antwoord
between daarvoor False teruggeeft. Zo meng je twee verschillende kwaliteitsproblemen.Vraag 8 van 10
Toon antwoordVerberg antwoord
Vraag 9 van 10
Toon antwoordVerberg antwoord
Vraag 10 van 10
Toon antwoordVerberg antwoord
Set 2: Lees verdelingen en onderzoek extreme waarden10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
value_counts(normalize=True)?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
bins=[0, 20, 50, np.inf], include_lowest=True en de standaardinclusie van intervalgrenzen. Waar komen 0, 20 en 50 terecht?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 3: Interpreteer verbanden en groepsverschillen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
min_periods=400. Kan de cel voor x–y terecht 0,82 bevatten?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 4: Kies noemers en vergelijkbare perioden10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 5: Formuleer en deel verdedigbare bevindingen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
Aanbeveling
Assertie
B
Basisfrequentie
Beperking
Bevinding
C
Cohort
Consistentie
Correlatiematrix
D
Datatype
Domeinregel
Dubbel record
E
Ecologische denkfout
Empirische cumulatieve verdelingsfunctie
Export via code
F
Frequentietabel
G
Gebeurtenisfrequentie
Gegevenskwaliteitslogboek
Gegevenswoordenboek
Geldigheid
Gemiddelde
Gemodificeerde z-score
Gevoeligheidsanalyse
Groepsgrootte
H
Herkomst- en verwerkingsgeschiedenis
Histogram
Hypothese
I
Interkwartielafstand
Interpretatie
K
Kardinaliteit
Kendalls tau
Kerndichtheidsschatting
Kernel
Klasse
Kleine willekeurige puntverschuiving
Kolomnormalisatie
Kruistabel
L
Logaritmische schaal
M
Maskering
Matrix van spreidingsdiagrammen
Mediaan
Mediane absolute afwijking
Mediërende variabele
Monotone samenhang
N
Niet-willekeurig ontbreken
Nominale variabele
Notebook
O
Omgekeerde causaliteit
Omgevingsbestand
Ontbreken van gegevens
Onvolledige periode
Ophoping bij ronde of voorkeurswaarden
Ordinale variabele
Overlap van grafiekelementen
P
Pearsoncorrelatie
Percentiel
Procentpunt
R
Referentiewaarde
Relatief verschil
Reproduceerbaarheid
Resampling
Restcategorie
Rijnormalisatie
S
Scheefheid
Segment
Seizoenspatroon
Simpsonparadox
Sleutel
Spearmancorrelatie
Spreidingsdiagram
Standaardafwijking
Startwaarde voor de toevalsgenerator
Statisch rapport
T
Toetsende analyse
Tukey-grenzen
U
Uitschieter
V
Verborgen toestand
Verkennende data-analyse
Verstorende variabele
Volledig willekeurig ontbreken
Voortschrijdend gemiddelde
W
Waarneming
Waarnemingseenheid
Willekeurig ontbreken
Winsoriseren
Z
Z-score
Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.