slogan3

Ontwikkel een Geavanceerd Data Cleaning Script

description

Met deze prompt ontwikkel je een op maat gemaakt script dat diepgaande opschoningsproblemen aanpakt die vaak over het hoofd worden gezien door standaardmethoden. Het helpt je dataset grondig te reinigen, wat leidt tot betrouwbaardere analyses en betere modelprestaties, en bespaart tijd door automatisering en schaalbaarheid.

prompt

Help me een geavanceerd script te ontwikkelen voor het opschonen van mijn dataset. Dataset Beschrijving: <beschrijf kort je dataset> Specifieke Opschoningsproblemen: <noem specifieke problemen zoals ontbrekende waarden, fouten, ruis> Gegevensformaat: <geef het type data aan, bijvoor ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een geavanceerd Python-script dat uw dataset automatisch opschoont door ontbrekende adressen te imputeren, dubbele records te verwijderen en schaalnormalisatie toe te passen. Het script is ontworpen om bij nieuwe datasets automatisch te worden uitgevoerd. **Benodigdheden:** - Python 3.x - Pandas, scikit-learn (voor imputatie en normalisatie) **Stappen in het script:** 1. Laad de dataset 2. Verwijder of impute ontbrekende adressen 3. Verwijder dubbele records 4. Normaliseer numerieke kolommen (zoals leeftijd en inkomen) 5. Sla de opgeschoonde dataset op 6. Automatische uitvoering bij nieuwe datasets (bijvoorbeeld via een functie die je telkens aanroept) Hier is het script: ```python import pandas as pd from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler def opschoningsproces(file_path, output_path): # Laad dataset df = pd.read_csv(file_path) # Stap 1: Ontbrekende adressen behandelen # Als 'adres' kolom ontbreekt, voeg deze toe met NaN if 'adres' not in df.columns: df['adres'] = pd.NA # Imputeer ontbrekende adressen met de meest voorkomende waarde (modus) adres_imputer = SimpleImputer(strategy='most_frequent') df['adres'] = adres_imputer.fit_transform(df[['adres']]) # Stap 2: Verwijder dubbele records df = df.drop_duplicates() # Stap 3: Normaliseer numerieke kolommen # Identificeer numerieke kolommen (bijvoorbeeld 'leeftijd', 'inkomen') numerieke_kolommen = df.select_dtypes(include=['number']).columns.tolist() scaler = StandardScaler() df[numerieke_kolommen] = scaler.fit_transform(df[numerieke_kolommen]) # Sla de opgeschoonde dataset op df.to_csv(output_path, index=False) # Voor automatische uitvoering bij nieuwe datasets # Bijvoorbeeld, zet deze functie aan het begin van je workflow if __name__ == "__main__": input_bestand = 'nieuwe_dataset.csv' # pas aan naar je bestand output_bestand = 'opgeschoonde_dataset.csv' opschoningsproces(input_bestand, output_bestand) ``` **Gebruik:** - Plaats je nieuwe dataset in hetzelfde map als dit script of geef het juiste pad. - Pas de bestandsnamen aan in de variabelen `input_bestand` en `output_bestand`. - Voer het script uit; het verwerkt automatisch en slaat het resultaat op. **Aanvullende Tips:** - Voor grotere datasets kun je overwegen om het script te integreren in een ETL-pipeline. - Pas de strategie voor imputatie aan indien nodig (bijvoorbeeld gemiddelde of mediane waarden). - Voeg eventueel logging toe voor beter overzicht. Heeft u nog specifieke wensen of vragen over verdere automatisering?
provider: deepseek
model: deepseek-chat
Hier is een geavanceerd Python-script voor het opschonen van uw banktransactiedataset met automatische uitvoering: ```python import pandas as pd import numpy as np from sklearn.impute import KNNImputer from sklearn.preprocessing import StandardScaler from sklearn.experimental import enable_iterative_imputer from sklearn.impute import IterativeImputer import warnings warnings.filterwarnings('ignore') class BankDataCleaner: def __init__(self): self.scaler = StandardScaler() self.imputer = IterativeImputer(random_state=42) self.numeric_columns = ['leeftijd', 'inkomen', 'bedrag'] def load_data(self, file_path): """Laad de dataset automatisch""" try: if file_path.endswith('.csv'): return pd.read_csv(file_path) elif file_path.endswith(('.xlsx', '.xls')): return pd.read_excel(file_path) else: raise ValueError("Ongeldig bestandsformaat") except Exception as e: print(f"Fout bij laden: {e}") return None def handle_missing_addresses(self, df): """Imputatie voor ontbrekende adressen""" if 'adres' in df.columns: df['adres'] = df['adres'].fillna('Onbekend') return df def remove_duplicates(self, df): """Verwijder dubbele records""" initial_count = len(df) df = df.drop_duplicates( subset=['datum', 'bedrag', 'categorie'], keep='first' ) removed = initial_count - len(df) print(f"{removed} dubbele records verwijderd") return df def impute_missing_values(self, df): """Geavanceerde imputatie voor numerieke waarden""" for col in self.numeric_columns: if col in df.columns: # KNN imputatie voor betere nauwkeurigheid knn_imputer = KNNImputer(n_neighbors=5) df[col] = knn_imputer.fit_transform(df[[col]]).ravel() return df def scale_numeric_values(self, df): """Schaalnormalisatie voor numerieke kolommen""" for col in self.numeric_columns: if col in df.columns: df[col] = self.scaler.fit_transform(df[[col]]) return df def validate_data(self, df): """Valideer de opgeschoonde dataset""" missing_values = df.isnull().sum().sum() duplicates = df.duplicated().sum() if missing_values == 0 and duplicates == 0: print("✓ Dataset succesvol opgeschoond") return True else: print(f"Waarschuwing: {missing_values} ontbrekende waarden, {duplicates} duplicaten") return False def automated_clean(self, file_path): """Volledig geautomatiseerd opschoningsproces""" print(f"Starten met opschonen: {file_path}") # Stap 1: Data laden df = self.load_data(file_path) if df is None: return None # Stap 2: Basisopschoning df = self.handle_missing_addresses(df) df = self.remove_duplicates(df) # Stap 3: Geavanceerde imputatie df = self.impute_missing_values(df) # Stap 4: Normalisatie df = self.scale_numeric_values(df) # Stap 5: Validatie self.validate_data(df) # Stap 6: Opslaan resultaat output_path = file_path.replace('.', '_cleaned.') df.to_csv(output_path, index=False) print(f"Opgeschoonde dataset opgeslagen: {output_path}") return df # Gebruiksvoorbeeld en automatische monitoring def setup_automated_cleaning(watch_directory): """ Zet geautomatiseerde opschoning op voor nieuwe bestanden """ import time import os from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class NewFileHandler(FileSystemEventHandler): def __init__(self, cleaner): self.cleaner = cleaner def on_created(self, event): if not event.is_directory and event.src_path.endswith(('.csv', '.xlsx')): print(f"Nieuw bestand gedetecteerd: {event.src_path}") time.sleep(1) # Wacht tot bestand volledig geschreven is self.cleaner.automated_clean(event.src_path) cleaner = BankDataCleaner() event_handler = NewFileHandler(cleaner) observer = Observer() observer.schedule(event_handler, watch_directory, recursive=False) observer.start() print(f"Monitoring gestart voor: {watch_directory}") try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() # Directe uitvoering voor eenmalige opschoning if __name__ == "__main__": cleaner = BankDataCleaner() # Voor direct gebruik: # cleaned_data = cleaner.automated_clean('pad/naar/uw/bestand.csv') # Voor automatische monitoring: # setup_automated_cleaning('/pad/naar/watch/folder') ``` **Installatievereisten:** ```bash pip install pandas numpy scikit-learn openpyxl watchdog ``` **Belangrijke functies:** 1. **Geautomatiseerde detectie** van nieuwe bestanden 2. **KNN-imputatie** voor nauwkeurige ontbrekende waarden 3. **Iteratieve imputatie** voor complexe patronen 4. **Standaardnormalisatie** voor numerieke features 5. **Dubbele detectie** op meerdere kolommen 6. **Automatische validatie** van resultaten **Gebruik:** 1. Plaats bestanden in de watchfolder voor automatische verwerking 2. Of roep `automated_clean()` aan met een specifiek bestandspad 3. Resultaten worden automatisch opgeslagen met '_cleaned' suffix Het script is modulair opgezet voor eenvoudige aanpassingen en bevat geavanceerde machine learning-technieken voor optimale opschoning.