slogan3

Help me mijn Pandas DataFrame documenteren en annoteren voor betere samenwerking

description

Helpt gebruikers de duidelijkheid en onderhoudbaarheid van hun data te verbeteren met goed gestructureerde documentatie en metadata, wat betere samenwerking en minder misverstanden in data projecten mogelijk maakt. Deze prompt biedt praktische methoden om annotaties direct in Pandas DataFrames op te nemen en te beheren, een aspect dat in bestaande prompts ontbreekt.

prompt

Ik heb een Pandas DataFrame met de volgende data: <voer een beschrijving of voorbeeld van je DataFrame in>. Help me gedetailleerde documentatie en annotaties te maken, inclusief kolombeschrijvingen, uitleg van datatypes en voorbeeldwaarden. Laat m ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3655 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3655 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3655 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3655 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3655 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3655 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3655 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Zeker, hier is een gedetailleerde handleiding in het Nederlands voor het documenteren van je Pandas DataFrame: # Documentatiehandleiding voor Pandas DataFrame ## 📋 Metadata Documentatie ### Kolombeschrijvingen: - **klant_id** (`int64`): Unieke identificatiecode van de klant - Voorbeeld: `12345`, `67890` - Constraints: Moet uniek zijn, niet-null waarden - **aankoopbedrag** (`float64`): Het bedrag van de aankoop in euro's - Voorbeeld: `49.99`, `150.50` - Constraints: Moet positief zijn, decimalen gescheiden door punt - **aankoopdatum** (`datetime64[ns]`): Datum en tijd van de aankoop - Voorbeeld: `2024-01-15 14:30:00` - Format: `YYYY-MM-DD HH:MM:SS` ## 🐍 Python Implementatie ### 1. Metadata toevoegen aan DataFrame attributen ```python import pandas as pd from datetime import datetime # Voorbeeld DataFrame aanmaken data = { 'klant_id': [101, 102, 103], 'aankoopbedrag': [49.99, 150.50, 25.00], 'aankoopdatum': [ datetime(2024, 1, 15, 14, 30), datetime(2024, 1, 16, 10, 15), datetime(2024, 1, 17, 16, 45) ] } df = pd.DataFrame(data) # Metadata toevoegen als attributen df.attrs['metadata'] = { 'dataset_naam': 'Klantenaankopen', 'beschrijving': 'Dataset met klantaankoopgegevens', 'aangemaakt_op': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'versie': '1.0', 'eigenaar': 'Jouw Team Naam' } df.attrs['kolom_beschrijvingen'] = { 'klant_id': 'Unieke identificatiecode van de klant (integer)', 'aankoopbedrag': 'Aankoopbedrag in euro\'s (float)', 'aankoopdatum': 'Datum en tijd van aankoop (datetime)' } df.attrs['datatype_info'] = { 'klant_id': 'int64 - Unieke identifier', 'aankoopbedrag': 'float64 - Monetair bedrag', 'aankoopdatum': 'datetime64[ns] - Tijdstempel' } ``` ### 2. Externe documentatie bestanden **metadata.yaml** (aanbevolen voor samenwerking): ```yaml dataset: naam: "Klantenaankopen" beschrijving: "Dataset met klantaankoopgegevens" versie: "1.0" aangemaakt: "2024-01-15" laatst_bijgewerkt: "2024-01-15" eigenaar: "Jouw Team Naam" kolommen: klant_id: type: "int64" beschrijving: "Unieke identificatiecode van de klant" constraints: ["niet-null", "uniek"] voorbeeld: 12345 aankoopbedrag: type: "float64" beschrijving: "Het bedrag van de aankoop in euro's" constraints: ["positief"] voorbeeld: 49.99 aankoopdatum: type: "datetime64[ns]" beschrijving: "Datum en tijd van de aankoop" format: "YYYY-MM-DD HH:MM:SS" voorbeeld: "2024-01-15 14:30:00" ``` ### 3. Automatische metadata validatie ```python def validate_metadata(df): """Valideert DataFrame metadata en structuren""" required_attrs = ['metadata', 'kolom_beschrijvingen', 'datatype_info'] for attr in required_attrs: if attr not in df.attrs: print(f"Waarschuwing: {attr} ontbreekt in metadata") # Controleer datatypes expected_dtypes = { 'klant_id': 'int64', 'aankoopbedrag': 'float64', 'aankoopdatum': 'datetime64[ns]' } for kolom, expected_type in expected_dtypes.items(): if df[kolom].dtype != expected_type: print(f"Waarschuwing: {kolom} heeft type {df[kolom].dtype}, verwacht {expected_type}") def update_metadata(df, wijzigingen=None): """Update metadata met wijzigingen""" if wijzigingen: df.attrs.update(wijzigingen) df.attrs['laatst_bijgewerkt'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') return df ``` ### 4. Metadata export functies ```python def export_metadata(df, bestandsnaam='metadata.json'): """Exporteert metadata naar JSON bestand""" import json metadata = { 'algemeen': df.attrs.get('metadata', {}), 'kolommen': df.attrs.get('kolom_beschrijvingen', {}), 'datatypes': {col: str(df[col].dtype) for col in df.columns}, 'statistieken': { 'aantal_rijen': len(df), 'aantal_kolommen': len(df.columns), 'ontbrekende_waarden': df.isnull().sum().to_dict() } } with open(bestandsnaam, 'w', encoding='utf-8') as f: json.dump(metadata, f, indent=2, ensure_ascii=False) def print_metadata_overzicht(df): """Print een overzicht van de metadata""" print("=== DATASET METADATA ===") for key, value in df.attrs.get('metadata', {}).items(): print(f"{key}: {value}") print("\n=== KOLOMBESCHRIJVINGEN ===") for kolom, beschrijving in df.attrs.get('kolom_beschrijvingen', {}).items(): print(f"{kolom}: {beschrijving} (type: {df[kolom].dtype})") ``` ## 🔄 Best Practices voor Onderhoud ### 1. Metadata bij wijzigingen bijwerken ```python # Voorbeeld: Nieuwe kolom toevoegen def voeg_kolom_toe(df, kolom_naam, data, beschrijving, datatype_info): df[kolom_naam] = data df.attrs['kolom_beschrijvingen'][kolom_naam] = beschrijving df.attrs['datatype_info'][kolom_naam] = datatype_info df.attrs['laatst_bijgewerkt'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') return df ``` ### 2. Versiebeheer ```python def update_versie(df, major=False, minor=True, patch=False): """Update versienummer volgens semantic versioning""" huidige_versie = df.attrs.get('metadata', {}).get('versie', '0.0.0') major_v, minor_v, patch_v = map(int, huidige_versie.split('.')) if major: major_v += 1 minor_v = 0 patch_v = 0 elif minor: minor_v += 1 patch_v = 0 elif patch: patch_v += 1 nieuwe_versie = f"{major_v}.{minor_v}.{patch_v}" df.attrs['metadata']['versie'] = nieuwe_versie return df ``` ### 3. Gebruik in Jupyter Notebooks ```python # Cel 1: Metadata setup %run metadata_setup.py # Extern script met metadata definities # Cel 2: Data laden en metadata toepassen df = pd.read_csv('aankoopdata.csv') df = apply_metadata_template(df) # Vooraf gedefinieerde functie # Cel 3: Metadata weergeven print_metadata_overzicht(df) ``` ## 📁 Projectstructuur aanbeveling ``` project/ ├── data/ │ ├── raw/ │ ├── processed/ │ └── metadata.yaml ├── scripts/ │ ├── metadata_management.py │ └── data_validation.py ├── docs/ │ └── DATA_DICTIONARY.md └── requirements.txt ``` Deze aanpak zorgt voor consistente, goed gedocumenteerde data die eenvoudig gedeeld en onderhouden kan worden binnen je team.