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
tags
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.