Help mij met het efficiënt implementeren van sampling en stratificatie in Pandas DataFrames
description
Helpt gebruikers bij het maken van representatieve en onbevooroordeelde steekproeven uit grote datasets, wat de kwaliteit van analyse en machine learning modellen verbetert. Biedt duidelijke, praktische codevoorbeelden en begeleiding bij het kiezen van de beste samplingmethode passend bij de dataset en taak. Bespaart tijd door sampling workflows te automatiseren en voorkomt veelvoorkomende fouten bij bevooroordeelde of inefficiënte sampling.
prompt
Ik heb een Pandas DataFrame met de volgende data: <voer een beschrijving of voorbeeld van je DataFrame in>. Help mij met het efficiënt toepassen van samplingmethoden zoals random sampling, gestratificeerde sampl ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3651 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3651 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3651 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3651 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3651 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3651 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3651 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Hier is een uitgebreide uitleg over samplingmethoden met Python-voorbeelden voor je Pandas DataFrame:
## 1. Eenvoudige Random Sampling
```python
import pandas as pd
import numpy as np
# Random sampling - 20% van de data
random_sample = df.sample(frac=0.2, random_state=42)
# Random sampling - 100 willekeurige rijen
random_sample = df.sample(n=100, random_state=42)
# Met vervanging (voor bootstrap sampling)
bootstrap_sample = df.sample(n=len(df), replace=True, random_state=42)
```
## 2. Gestratificeerde Sampling op Regio
```python
from sklearn.model_selection import train_test_split
# Eerst de strata definiëren
strata = df['Regio']
# Gestratificeerde split (80% train, 20% test)
train_df, test_df = train_test_split(
df,
test_size=0.2,
stratify=strata,
random_state=42
)
# Alternatief: handmatige implementatie
def stratified_sampling(df, stratum_col, sample_size):
samples = []
for stratum in df[stratum_col].unique():
stratum_data = df[df[stratum_col] == stratum]
stratum_sample = stratum_data.sample(
n=int(sample_size * len(stratum_data)),
random_state=42
)
samples.append(stratum_sample)
return pd.concat(samples)
# Gebruik: 30% sample per regio
stratified_sample = stratified_sampling(df, 'Regio', 0.3)
```
## 3. Systematische Sampling
```python
def systematic_sampling(df, step):
indices = np.arange(0, len(df), step)
return df.iloc[indices]
# Elke 5e rij selecteren
systematic_sample = systematic_sampling(df, 5)
# Percentage-based systematische sampling
def systematic_sample_percentage(df, percentage):
step = int(1 / percentage)
return systematic_sampling(df, step)
# 10% systematische sample
systematic_10pct = systematic_sample_percentage(df, 0.1)
```
## 4. Cluster Sampling (op Regio)
```python
# Selecteer willekeurig enkele regio's (clusters)
clusters = df['Regio'].unique()
selected_clusters = np.random.choice(clusters, size=2, replace=False) # 2 clusters
# Neem alle data van geselecteerde clusters
cluster_sample = df[df['Regio'].isin(selected_clusters)]
```
## Hoe kies je de juiste techniek?
**Random Sampling** gebruik je wanneer:
- Populatie homogeen is
- Geen duidelijke subgroepen aanwezig zijn
- Snel een representatieve sample nodig hebt
**Gestratificeerde Sampling** is ideaal wanneer:
- Belangrijke subgroepen aanwezig zijn (bv. verschillende regio's)
- Je representatie van alle strata wilt garanderen
- Subgroepen verschillende eigenschappen hebben
**Systematische Sampling** is geschikt wanneer:
- Data in willekeurige volgorde staat
- Je een eenvoudige, efficiënte methode nodig hebt
- Populatie homogeen is verdeeld
**Cluster Sampling** gebruik je wanneer:
- Natuurlijke groepen bestaan (zoals regio's)
- Dataverzameling per cluster efficiënter is
- Kostenbesparing belangrijk is
## Praktijkvoorbeeld voor ML:
```python
# Voor machine learning: gestratificeerde split op doelvariabele
X = df[['Leeftijd', 'Geslacht', 'Regio']]
y = df['Aankoopbedrag'] > 100 # binaire classificatie
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2,
stratify=y, # behoud verhouding hoog/laag aankoopbedrag
random_state=42
)
```
Kies altijd de methode die het beste past bij je onderzoeksvraag en de structuur van je data!