Een bruikbare dataset voor de Pro League opbouwen

Een goede statistische tabel begint met een structuur die dubbels voorkomt en de herkomst van gegevens bewaart. Voor de Pro League moet je seizoen, competitie, fase, wedstrijd, ploeg en gebeurtenis onderscheiden. Deze werkfiche geeft een herbruikbare opzet en een klein synthetisch voorbeeld. Ze levert geen werkelijk wedstrijdbestand en verleent geen algemene gebruiksrechten op gegevens van een aanbieder.

Een vaste betekenis voor iedere rij kiezen

Een wedstrijdentabel bevat één rij per ontmoeting. Een tabel met ploegen binnen een wedstrijd bevat meestal twee rijen. Een gebeurtenissentabel kan honderden rijen voor dezelfde ontmoeting bevatten. Die niveaus zonder afspraak mengen veroorzaakt dubbeltellingen. Definieer voor iedere tabel een sleutel en beschrijf de relaties. Een vaste identificatie werkt beter dan alleen datum plus ploegnamen, omdat uitstel de datum verandert zonder een nieuwe wedstrijd te maken. Na een correctie moeten alle bijbehorende rijen aan dezelfde ontmoeting gekoppeld blijven.

Informatie met een eigen geldigheidsperiode scheiden

Bewaar clubs met vaste identificaties en houd naamvarianten in een aparte tabel. Competitie en seizoen krijgen verschillende velden. De Pro League kan haar format aanpassen; een fase die in één seizoen bestond, hoort niet vanzelf bij het volgende. Stadions, trainers en selecties hebben eveneens een geldigheidsperiode. Vervang bij het verrijken van oude wedstrijden niet de volledige historie door de huidige clubsituatie. Anders lijkt het alsof een vroegere wedstrijd in het huidige stadion of onder de huidige trainer werd gespeeld.

Een kleine structuur vóór de grote import testen

Drie fictieve wedstrijden leveren drie rijen in de wedstrijdentabel en zes rijen in een volledige ploeg-wedstrijdtabel. Die zes rijen betekenen geen zes aparte ontmoetingen. Een koppeling met verschillende gebeurtenissen vermenigvuldigt het aantal rijen verder. Je moet gebeurtenissen daarom eerst op het gekozen niveau samenvoegen voordat je wedstrijdtotalen optelt. De identificaties in de tabel zijn oefenwaarden. Ze testen relaties en voorwaarden, maar horen niet bij echte Belgische wedstrijden en zijn geen officieel toegekende wedstrijdnummers.

Fictief rekenvoorbeeld: berekende waarden, geen actuele clubstatistieken
Fictieve tabelSleutelRijen bij drie wedstrijdenHoofdcontrole
wedstrijdenmatch_id3Eén rij per ontmoeting
ploeg_wedstrijdmatch_id + ploeg_id6Twee ploegen per volledige wedstrijd
gebeurtenissenevent_idVariabelVerwijst naar bekende wedstrijd
versiesbron + ophaaldatumVariabelHerkomst terugvindbaar

Een leesbaar gegevenswoordenboek schrijven

Vermeld per kolom het type, de eenheid, toegelaten waarden en de betekenis van ontbrekende informatie. Een score kan vóór de aftrap onbekend zijn, in een bron ontbreken of door een administratieve beslissing zijn vervangen. Bewaar daarvoor verschillende statussen. Sla datums op met hun tijdzone en scheid geplande en werkelijke uren wanneer beide bestaan. Gebruik taalversies en zichtbare ploegnamen niet als interne clubidentificatie. Een heldere definitie voorkomt problemen wanneer de tabel later wordt vertaald, uitgebreid of in een ander programma wordt geopend.

Gegevensdekking en gebruiksvoorwaarden controleren

Een open verzameling kan uitsluitend bepaalde competities en seizoenen bevatten. Het bestaan ervan bewijst niet dat alle Pro League-wedstrijden beschikbaar zijn. Controleer de inventaris, gebruiksvoorwaarden en vereiste bronvermelding voordat je gegevens opnieuw gebruikt. Een officieel resultatenportaal is ook niet automatisch een vrij herverdeelbaar bestand. Je kunt je methode en synthetische voorbeelden publiceren zonder te beweren dat je een volledige databank bezit. Scheid de herkomst van feiten, eventueel gelicentieerde invoer en de berekeningen die je zelf uitvoert.

Correcties bewaren zonder de eerste versie kwijt te raken

Bewaar de ontvangen ruwe gegevens, de ophaaldatum en een genormaliseerde versie voor berekeningen. Registreer een gewijzigde uitslag, tijd of gebeurtenis met de reden van de correctie. Een analyse moet kunnen verwijzen naar precies de versie waarop haar uitkomsten steunen. Controleer na iedere import unieke sleutels, verschillende tegenstanders, bestaande verwijzingen en consistente scores. Zet ongeldige rijen apart met een verklaring. Alle fouten stilzwijgend verwijderen maakt een bestand misschien netjes, maar verhindert een betrouwbare controle van wat uiteindelijk ontbreekt.

Praktische controlelijst

Maak vóór de eerste import één wedstrijdrecord en de twee bijbehorende team-wedstrijdregels. Koppel daar bewust drie gebeurtenissen aan en bekijk hoe het aantal rijen groeit. Deze kleine proef maakt de verschillende gegevensniveaus zichtbaar en helpt bepalen waar aggregatie nodig is. Zo ontdek je een dubbele telling voordat die een volledig gepubliceerd klassement of een reeks teamgemiddelden beïnvloedt.

  1. Definieer sleutel en rijniveau van iedere tabel vóór de import.
  2. Behoud identificaties bij uitstel en latere correcties.
  3. Vergelijk het aantal rijen vóór en na iedere koppeling.
  4. Scheid ontbrekend, niet van toepassing en werkelijk nul.
  5. Beschrijf dekking, gebruiksvoorwaarden en bronversies.

Een tweede lezer moet met dezelfde invoer dezelfde uitkomsten kunnen terugvinden, zonder jouw conclusie vooraf te kennen. Bewaar ook de uitgesloten rijen en de reden voor iedere uitsluiting. Zo blijft duidelijk waarom het aantal daadwerkelijk onderzochte wedstrijden kleiner kan zijn dan het aantal wedstrijden op de kalender.

Relaties en versies van de gegevensverzameling toetsen

Leg structurele controles vast die losstaan van de gewenste onderzoeksuitkomst. Een wedstrijdsleutel is uniek in de wedstrijdtabel. Een team-wedstrijdsleutel verbindt precies één club met één ontmoeting. Een volledige gewone wedstrijd heeft twee verschillende deelnemers. Is een deelnemer in de bron nog onbekend, geef dat dan met een status aan in plaats van een verzonnen clubnummer te gebruiken. Controleer verwijzingen voordat tabellen worden gekoppeld. Een ploeg die ontbreekt in het clubregister vraagt om onderzoek, niet om het automatisch verwijderen van de hele wedstrijd.

Scheid het ruwe bestand, de normalisatie en de gepubliceerde totalen. Een manifest kan bron, ophaaldatum, schemaversie, rijenaantal en bestandsvingerafdruk bevatten. Vergelijk bij een correctie de gewijzigde regels en herbereken de betrokken uitkomsten, terwijl de vorige versie beschikbaar blijft. Het oefenschema is een voorstel voor organisatie. Het belooft niet exact hetzelfde technische contract als dat van een bepaalde leverancier. Het verleent evenmin rechten om later verzamelde wedstrijdgegevens opnieuw te verspreiden. Die voorwaarden moeten bij iedere oorspronkelijke bron afzonderlijk worden gecontroleerd.

Veelgestelde vragen

Zijn twee rijen per ploeg ook twee wedstrijden?

Nee. Dezelfde ontmoeting wordt vanuit beide ploegen beschreven. Tel unieke wedstrijdidentificaties om het aantal wedstrijden te kennen, niet het ruwe aantal rijen in die tabel.

Is een open bestand noodzakelijk volledig?

Nee. Controleer eerst competities en seizoenen en daarna de verwachte wedstrijden. Een open verzameling kan gedeeltelijk zijn of speciaal voor een onderzoeksdoel geselecteerd zijn.

Waarom de ruwe invoer na het opschonen bewaren?

Zo kun je transformaties begrijpen, fouten herstellen en een analyse opnieuw uitvoeren. De schone versie helpt bij het rekenen; de ruwe versie bewaart herkomst en oorspronkelijke informatie.

Bronnen en controle