slogan3

description

Helpt ervoor te zorgen dat je dataset schoon en betrouwbaar is vóór analyse of modellering door systematisch ongeldige data te identificeren en te beheren. Deze aanpak vermindert fouten later in het proces, verbetert de nauwkeurigheid van modellen en maakt transparante rapportage van datakwaliteit mogelijk, wat beter is dan ad-hoc of handmatige validatie.

prompt

Help me een robuust data validatie framework te creëren voor mijn dataset om ongeldige, inconsistente of onverwachte data te detecteren en af te handelen vóór verdere verwerking. Dataset Beschrijving: <voer een korte beschrijving van je dataset in> Validatieregels: <specificeer de typen validatie die je wilt toepassen, zoals bere ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stappenplan om een robuust data validatie framework te creëren voor jouw dataset met aankooprecords en browsegedrag van klanten, inclusief implementaties in bijvoorbeeld Python met Pandas: 1. Data Inladen import pandas as pd df = pd.read_csv('jouw_dataset.csv') # Pas de bestandsnaam aan 2. Validatieregels Implementeren a. Salaris moet positief zijn positieve_salaris_mask = df['salaris'] > 0 b. Telefoonnummers volgens internationaal formaat # Bijvoorbeeld: +<landcode><nummer>, zoals +31 612345678 import re def is_internationaal_telefoonnummer(nummer): patroon = r'^\+\d{1,3}\s?\d{4,14}$' # Pas regex aan op je formaat return bool(re.match(patroon, str(nummer))) telefoon_mask = df['telefoon'].apply(is_internationaal_telefoonnummer) c. Data met ongeldige datums verwijderen # Bijvoorbeeld: datums in een kolom 'aankoopdatum' ongeldige_datum_mask = pd.to_datetime(df['aankoopdatum'], errors='coerce').isna() 3. Ongeldige Data Detecteren en Afhandelen a. Records met ongeldige datums verwijderen df_valid = df[~ongeldige_datum_mask] b. Markeer inconsistente invoer # Voeg kolommen toe die aangeven of een record geldig is df['salaris_valid'] = salaris_mask df['telefoon_valid'] = telefoon_mask df['aankoopdatum_valid'] = ~ongeldige_datum_mask c. Rapportage van ongeldige invoeren aantal_ongeldige_salaris = (~salaris_mask).sum() aantal_ongeldige_telefoon = (~telefoon_mask).sum() aantal_ongeldige_datum = ongeldige_datum_mask.sum() print(f"Ongeldige salarissen: {aantal_ongeldige_salaris}") print(f"Ongeldige telefoonnummers: {aantal_ongeldige_telefoon}") print(f"Ongeldige datums: {aantal_ongeldige_datum}") 4. Samenvatting en Terugkoppeling - Log alle ongeldige records voor review. - Verwijder of corrigeer ongeldige data afhankelijk van je beleid. - Implementeer automatische validatie bij binnenkomst van nieuwe data. Voor een meer geavanceerd framework kun je gebruik maken van: - Validatiebibliotheken zoals pydantic of cerberus. - Data pipeline tools zoals Apache Airflow of Prefect voor geautomatiseerde workflows. - Logging en reporting tools voor beter inzicht. Door deze stappen te volgen, zorg je voor een consistente en betrouwbare dataset voordat je verder gaat met analyse of verwerking.
provider: deepseek
model: deepseek-chat
Hier is een robuust data validatieframework voor uw dataset in Python met pandas: ```python import pandas as pd import re import numpy as np class DataValidator: def __init__(self): self.validation_errors = {} def valideer_salaris(self, df, kolom_naam='salaris'): """Valideert dat salaris positief is""" fouten_mask = df[kolom_naam] <= 0 fouten_count = fouten_mask.sum() if fouten_count > 0: self.validation_errors[kolom_naam] = { 'type': 'salaris_niet_positief', 'aantal': fouten_count, 'indices': df[fouten_mask].index.tolist() } return ~fouten_mask def valideer_telefoonnummer(self, df, kolom_naam='telefoon'): """Valideert internationaal telefoonnummer formaat""" # Regex voor internationaal formaat (+31 6 12345678 of +31612345678) telefoon_regex = r'^\+[1-9]\d{0,3}\s?\d{1,14}(\s?\d{1,13})?$' fouten_mask = ~df[kolom_naam].astype(str).str.match(telefoon_regex, na=False) fouten_count = fouten_mask.sum() if fouten_count > 0: self.validation_errors[kolom_naam] = { 'type': 'ongeldig_telefoonnummer', 'aantal': fouten_count, 'indices': df[fouten_mask].index.tolist() } return ~fouten_mask def valideer_datum(self, df, kolom_naam='datum'): """Valideert datumformaat en verwijdert ongeldige datums""" # Converteer naar datetime en identificeer ongeldige waarden df[kolom_naam] = pd.to_datetime(df[kolom_naam], errors='coerce') fouten_mask = df[kolom_naam].isna() fouten_count = fouten_mask.sum() if fouten_count > 0: self.validation_errors[kolom_naam] = { 'type': 'ongeldige_datum', 'aantal': fouten_count, 'indices': df[fouten_mask].index.tolist() } return ~fouten_mask def markeer_inconsistente_invoer(self, df, kolommen): """Markeert rijen met inconsistente invoer""" # Voorbeeld: markeer rijen waar bepaalde combinaties niet kloppen inconsistent_mask = df.duplicated(subset=kolommen, keep=False) df['inconsistent'] = inconsistent_mask return df def genereer_rapport(self): """Genereert validatierapport""" rapport = { 'totaal_fouten': sum(error['aantal'] for error in self.validation_errors.values()), 'fouten_per_kolom': {kolom: info['aantal'] for kolom, info in self.validation_errors.items()}, 'details': self.validation_errors } print("=== VALIDATIERAPPORT ===") print(f"Totaal aantal fouten: {rapport['totaal_fouten']}") print("\nFouten per kolom:") for kolom, aantal in rapport['fouten_per_kolom'].items(): print(f" {kolom}: {aantal} fouten") return rapport # Gebruiksvoorbeeld def main(): # Laad dataset df = pd.read_csv('jouw_dataset.csv') # Initialiseer validator validator = DataValidator() # Voer validaties uit geldige_salaris = validator.valideer_salaris(df) geldige_telefoon = validator.valideer_telefoonnummer(df) geldige_datum = validator.valideer_datum(df) # Verwijder records met ongeldige datums df_clean = df[geldige_datum].copy() # Markeer inconsistente invoer df_clean = validator.markeer_inconsistente_invoer(df_clean, ['klant_id', 'transactie_id']) # Genereer rapport rapport = validator.genereer_rapport() # Bewaar resultaten df_clean.to_csv('gevalideerde_dataset.csv', index=False) return df_clean, rapport if __name__ == "__main__": schone_data, validatie_rapport = main() ``` **Aanvullende aanbevelingen:** 1. **Uitbreidingsmogelijkheden**: ```python def valideer_email(self, df, kolom_naam='email'): email_regex = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' # Vergelijkbare implementatie als telefoonnummer ``` 2. **Configuratiebestand**: Maak een JSON/YAML-bestand voor validatieregels: ```json { "salaris": {"min": 0, "max": 1000000}, "telefoon": {"formaat": "internationaal"}, "datum": {"formaat": "YYYY-MM-DD"} } ``` 3. **Logging**: Voeg gedetailleerde logging toe voor audit trails: ```python import logging logging.basicConfig(filename='validatie.log', level=logging.INFO) ``` Dit framework biedt een schaalbare oplossing met duidelijke rapportage en flexibele afhandeling van ongeldige data.