slogan3

Help me met het automatiseren van data-aggregatie en het maken van draaitabellen in Pandas

description

Met deze prompt kunnen gebruikers complexe datasets efficiënt samenvatten en analyseren door het automatiseren van aggregatie en het maken van draaitabellen in Pandas. Het lost het probleem van handmatige, foutgevoelige data-samenvatting op en maakt schaalbare, aanpasbare rapportage mogelijk. Gebruikers krijgen praktische codevoorbeelden en best practices voor flexibele dataherschikking en aggregatie, wat de productiviteit en analyse nauwkeurigheid verbetert.

prompt

Ik heb een Pandas DataFrame met de volgende data: <voer een beschrijving of voorbeeld van je DataFrame in>. Help me met het automatiseren van data-aggregatie en het maken van draaitabellen die belangrijke statistieken samenvatten per gespecif ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een overzicht en voorbeeldcode om je te helpen bij het automatiseren van data-aggregatie, het maken van draaitabellen en het aanpassen van statistieken in jouw Pandas DataFrame met verkoopgegevens. --- ### 1. Data-aggregatie uitvoeren Je kunt gebruik maken van de `.groupby()` methode om je data te groeperen op basis van categorieën zoals 'Regio', 'Product' of tijdsperioden ('Datum') en vervolgens aggregatiefuncties toepassen zoals som, gemiddelde, mediaan, etc. **Voorbeeld: Totale verkoop per regio en product** ```python import pandas as pd # Voorbeeld DataFrame # df = pd.read_csv('jouw_data.csv') # Groeperen op 'Regio' en 'Product' en totale verkoop berekenen aggregatie_resultaat = df.groupby(['Regio', 'Product'])['Verkoop'].sum().reset_index() print(aggregatie_resultaat) ``` --- ### 2. Tijdsgebaseerde aggregatie Voor tijdsperioden kun je de 'Datum' kolom omzetten naar datetime en groeperen op bijvoorbeeld maand of jaar. ```python # Datum kolom converteren naar datetime df['Datum'] = pd.to_datetime(df['Datum']) # Per maand groeperen df['Maand'] = df['Datum'].dt.to_period('M') maand_aggregatie = df.groupby('Maand')['Verkoop'].sum().reset_index() # Per jaar groeperen df['Jaar'] = df['Datum'].dt.year jaar_aggregatie = df.groupby('Jaar')['Verkoop'].mean().reset_index() print(maand_aggregatie) print(jaar_aggregatie) ``` --- ### 3. Aanpassen van aggregatiefuncties Je kunt meerdere functies toepassen door gebruik te maken van `.agg()`. ```python # Gemiddelde, som en mediaan per regio en product statistieken = df.groupby(['Regio', 'Product'])['Verkoop'].agg(['sum', 'mean', 'median']).reset_index() print(statistieken) ``` --- ### 4. Omgaan met ontbrekende waarden Ontbrekende waarden (NaN) kunnen worden behandeld door ze te vullen of te verwijderen. ```python # Vullen met 0 df['Verkoop'] = df['Verkoop'].fillna(0) # Of verwijderen df = df.dropna(subset=['Verkoop']) ``` --- ### 5. Resultaten herschikken voor rapportage (draaitabellen) Gebruik `pivot_table()` voor het maken van draaitabellen, bijvoorbeeld verkoop per regio en maand. ```python # Draaitabel: verkoop per regio en maand pivot = pd.pivot_table(df, values='Verkoop', index='Regio', columns='Maand', aggfunc='sum', fill_value=0) print(pivot) ``` ### 6. Automatisering en herbruikbaarheid Je kunt functies schrijven om deze stappen te automatiseren, bijvoorbeeld: ```python def maak_aggregatie(df, group_by_cols, agg_funcs): return df.groupby(group_by_cols)['Verkoop'].agg(agg_funcs).reset_index() # Voorbeeld: som en gemiddelde per regio en product resultaat = maak_aggregatie(df, ['Regio', 'Product'], ['sum', 'mean']) print(resultaat) ``` --- ### Samenvatting - Gebruik `.groupby()` met `.agg()` voor flexibele aggregaties. - Gebruik `.pivot_table()` voor rapportages in tabelvorm. - Behandel ontbrekende waarden met `.fillna()` of `.dropna()`. - Pas datumfuncties toe voor tijdsgebaseerde analyses. - Maak je scripts parametrisch om eenvoudig te aanpassen aan nieuwe analyses. --- Wil je een volledige voorbeeldcode op maat van je dataset en specifieke rapportage-doelen? Geef dan meer details, dan help ik je verder!
provider: deepseek
model: deepseek-chat
Zeker, ik help je graag met het automatiseren van data-aggregatie en draaitabellen voor je Pandas DataFrame. Hier is een complete uitleg met codevoorbeelden op maat van jouw dataset. ## 1. Basis Data Exploratie en Voorbereiding ```python import pandas as pd import numpy as np # Laad je DataFrame (voorbeeld) # df = pd.read_csv('jouw_bestand.csv') # Bekijk eerste rijen en info print(df.head()) print(df.info()) # Zet Datum kolom om naar datetime formaat df['Datum'] = pd.to_datetime(df['Datum']) # Controleer op ontbrekende waarden print("Ontbrekende waarden per kolom:") print(df.isnull().sum()) ``` ## 2. Behandeling van Ontbrekende Waarden ```python # Optie 1: Verwijder rijen met ontbrekende waarden df_clean = df.dropna() # Optie 2: Vul ontbrekende verkoopwaarden aan (gemiddelde per product-regio combinatie) df['Verkoop'] = df.groupby(['Regio', 'Product'])['Verkoop'].transform( lambda x: x.fillna(x.mean()) ) # Optie 3: Vul ontbrekende waarden met 0 (voor verkoop) df['Verkoop'] = df['Verkoop'].fillna(0) ``` ## 3. Data Aggregatie met groupby() ```python # Maandelijkse verkoop per regio en product maandelijkse_verkoop = df.groupby([ 'Regio', 'Product', pd.Grouper(key='Datum', freq='M') ])['Verkoop'].agg(['sum', 'mean', 'count', 'std']).reset_index() # Kwartaal samenvatting per regio kwartaal_verkoop = df.groupby([ 'Regio', pd.Grouper(key='Datum', freq='Q') ])['Verkoop'].agg({ 'Totaal_Verkoop': 'sum', 'Gemiddelde_Verkoop': 'mean', 'Aantal_Dagen': 'count', 'Max_Verkoop': 'max', 'Min_Verkoop': 'min' }).reset_index() ``` ## 4. Draaitabellen (Pivot Tables) met Aanpasbare Aggregaties ```python # Eenvoudige draaitabel - totale verkoop per regio en product pivot_basic = pd.pivot_table( df, values='Verkoop', index='Regio', columns='Product', aggfunc='sum', fill_value=0, margins=True, margins_name='Totaal' ) # Geavanceerde draaitabel met meerdere statistieken pivot_advanced = pd.pivot_table( df, values='Verkoop', index=['Regio'], columns=[pd.Grouper(key='Datum', freq='M')], aggfunc={ 'Verkoop': ['sum', 'mean', 'count', 'std'] }, fill_value=0 ) # Draaitabel met aangepaste aggregatiefuncties def bereik(x): return x.max() - x.min() def percentiel_90(x): return np.percentile(x, 90) pivot_custom = pd.pivot_table( df, values='Verkoop', index='Regio', columns='Product', aggfunc=[np.sum, np.mean, bereik, percentiel_90], fill_value=0 ) ``` ## 5. Tijdsperiode Analyse Automatiseren ```python # Functie voor automatische periode-aggregatie def aggregateer_per_periode(df, periode='M'): periode_mapping = { 'D': 'Dagelijkse', 'W': 'Wekelijkse', 'M': 'Maandelijkse', 'Q': 'Kwartaal', 'Y': 'Jaarlijkse' } result = df.groupby([ 'Regio', 'Product', pd.Grouper(key='Datum', freq=periode) ])['Verkoop'].agg(['sum', 'mean', 'count']).round(2) result.columns = ['Totaal', 'Gemiddelde', 'Aantal_Dagen'] return result # Gebruik voor verschillende periodes maandelijkse_data = aggregateer_per_periode(df, 'M') kwartaal_data = aggregateer_per_periode(df, 'Q') ``` ## 6. Geavanceerde Rapportage Functie ```python def genereer_rapport(df, groep_kolommen, agg_functies=None): """ Genereer automatisch samenvattingsrapport """ if agg_functies is None: agg_functies = { 'Verkoop': ['sum', 'mean', 'count', 'std', 'min', 'max'] } rapport = df.groupby(groep_kolommen).agg(agg_functies).round(2) # Hernoem kolommen voor betere leesbaarheid rapport.columns = ['_'.join(col).strip() for col in rapport.columns.values] return rapport # Voorbeelden van gebruik: # Per regio en product rapport_1 = genereer_rapport(df, ['Regio', 'Product']) # Per maand en regio rapport_2 = genereer_rapport(df, [pd.Grouper(key='Datum', freq='M'), 'Regio']) # Met aangepaste aggregaties custom_agg = { 'Verkoop': ['sum', 'mean', lambda x: np.percentile(x, 75)] } rapport_3 = genereer_rapport(df, ['Regio'], custom_agg) ``` ## 7. Resultaten Herschikken en Exporteren ```python # Reset index voor platte weergave resultaten = maandelijkse_verkoop.reset_index() # Sorteer resultaten resultaten = resultaten.sort_values(['Regio', 'Product', 'Datum'], ascending=[True, True, False]) # Export naar Excel met meerdere sheets with pd.ExcelWriter('verkoop_analyse.xlsx') as writer: pivot_basic.to_excel(writer, sheet_name='Overzicht') maandelijkse_verkoop.to_excel(writer, sheet_name='Maandelijkse_Details') rapport_1.to_excel(writer, sheet_name='Per_Product_Regio') # Export naar CSV resultaten.to_csv('maandelijkse_verkoop_analyse.csv', index=False, encoding='utf-8-sig') ``` ## 8. Automatische Samenvatting Rapport ```python def print_samenvatting(df): print("=== VERKOOPDATA SAMENVATTING ===") print(f"Periode: {df['Datum'].min().date()} tot {df['Datum'].max().date()}") print(f"Totaal verkoop: {df['Verkoop'].sum():,.0f}") print(f"Gemiddelde dagelijkse verkoop: {df['Verkoop'].mean():.2f}") print("\nTop 3 regio's:") print(df.groupby('Regio')['Verkoop'].sum().nlargest(3)) print("\nTop 3 producten:") print(df.groupby('Product')['Verkoop'].sum().nlargest(3)) # Gebruik de samenvatting functie print_samenvatting(df) ``` Deze codevoorbeelden geven je een complete toolkit voor het automatiseren van je data-analyse. Pas de aggregatiefuncties, groeperingen en tijdsperioden aan volgens je specifieke rapportagebehoeften.