Help me met het implementeren van geavanceerde Pandas DataFrame filtering en conditionele selectie
description
Met deze prompt leer je krachtige filtertechnieken die verder gaan dan eenvoudige selecties. Dit helpt je om complexe data-analyses te maken, precies de relevante data te isoleren, en je analyse efficiënter en overzichtelijker te maken. Door voorbeeldcode en uitleg begrijp je beter wanneer en hoe je verschillende filtermethoden toepast.
prompt
Ik heb een Pandas DataFrame met de volgende gegevens: <voer een beschrijving of voorbeeld van je DataFrame in>. Help me om geavanceerde filter- en selectietechnieken toe te passen, zoals conditionele filters met meerdere criteria ...
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=3654 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3654 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3654 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3654 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3654 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3654 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3654 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Ik help je graag met geavanceerde filter- en selectietechnieken in Pandas! Omdat je geen specifieke DataFrame hebt ingevoerd, zal ik werken met een voorbeeld-DataFrame en generieke technieken demonstreren.
Laten we eerst een voorbeeld-DataFrame maken:
```python
import pandas as pd
import numpy as np
# Voorbeeld DataFrame
data = {
'naam': ['Anna', 'Bob', 'Charlie', 'Diana', 'Erik', 'Fiona'],
'leeftijd': [25, 32, 45, 29, 38, 22],
'stad': ['Amsterdam', 'Rotterdam', 'Utrecht', 'Amsterdam', 'Den Haag', 'Rotterdam'],
'salaris': [50000, 65000, 80000, 55000, 72000, 48000],
'afdeling': ['IT', 'HR', 'IT', 'Finance', 'IT', 'HR'],
'ervaring_jaren': [2, 5, 12, 4, 8, 1]
}
df = pd.DataFrame(data)
print("Originele DataFrame:")
print(df)
```
## 1. Conditionele filters met meerdere criteria
### Gebruik van logische operatoren:
```python
# Personen in Amsterdam met salaris > 55000
filtered_1 = df[(df['stad'] == 'Amsterdam') & (df['salaris'] > 55000)]
print("\nAmsterdam, salaris > 55000:")
print(filtered_1)
# IT-afdeling OF leeftijd < 30
filtered_2 = df[(df['afdeling'] == 'IT') | (df['leeftijd'] < 30)]
print("\nIT-afdeling OF leeftijd < 30:")
print(filtered_2)
# Complexe voorwaarden met haakjes
filtered_3 = df[((df['afdeling'] == 'IT') | (df['afdeling'] == 'Finance')) & (df['ervaring_jaren'] > 3)]
print("\nIT/Finance met >3 jaar ervaring:")
print(filtered_3)
```
## 2. Gebruik van query()-expressies
```python
# Query met string-expressies
query_result_1 = df.query('leeftijd >= 30 and salaris < 70000')
print("\nQuery: leeftijd >= 30 en salaris < 70000:")
print(query_result_1)
# Query met variabelen
min_salaris = 60000
query_result_2 = df.query(f'salaris > {min_salaris} and stad in ["Amsterdam", "Rotterdam"]')
print(f"\nQuery: salaris > {min_salaris} in Amsterdam/Rotterdam:")
print(query_result_2)
# Query met @ voor variabelen
stad_zoek = "Utrecht"
query_result_3 = df.query('stad == @stad_zoek and ervaring_jaren >= 5')
print(f"\nQuery: stad {stad_zoek} met >=5 jaar ervaring:")
print(query_result_3)
```
## 3. Dynamische selectie op basis van datatypes
```python
# Selecteer alleen numerieke kolommen
numeric_cols = df.select_dtypes(include=[np.number])
print("\nAlleen numerieke kolommen:")
print(numeric_cols.head())
# Selecteer alleen string/object kolommen
string_cols = df.select_dtypes(include=[object])
print("\nAlleen string kolommen:")
print(string_cols.head())
# Selecteer alles behalve numerieke kolommen
non_numeric = df.select_dtypes(exclude=[np.number])
print("\nNiet-numerieke kolommen:")
print(non_numeric.head())
```
## 4. Filteren op basis van waardenreeksen
```python
# Filter op specifieke waarden in een kolom
steden_lijst = ['Amsterdam', 'Rotterdam']
filtered_cities = df[df['stad'].isin(steden_lijst)]
print("\nPersonen in Amsterdam of Rotterdam:")
print(filtered_cities)
# Uitsluiten van bepaalde waarden
exclude_afdelingen = ['HR']
filtered_dept = df[~df['afdeling'].isin(exclude_afdelingen)]
print("\nPersonen niet in HR-afdeling:")
print(filtered_dept)
# Filteren met string methoden
contains_a = df[df['naam'].str.contains('a', case=False)]
print("\nNamen die 'a' bevatten:")
print(contains_a)
```
## 5. Geavanceerde combinatietechnieken
```python
# Loc met voorwaarden
result = df.loc[(df['leeftijd'] > 25) & (df['salaris'] > 50000), ['naam', 'stad', 'salaris']]
print("\nGeselecteerde kolommen voor leeftijd >25 en salaris >50000:")
print(result)
# Query met sorting
sorted_result = df.query('afdeling == "IT"').sort_values('salaris', ascending=False)
print("\nIT-afdeling gesorteerd op salaris (hoog naar laag):")
print(sorted_result)
# Dynamische filtering met functies
def custom_filter(row):
return row['ervaring_jaren'] > 5 and row['salaris'] < 75000
custom_result = df[df.apply(custom_filter, axis=1)]
print("\nAangepast filter: >5 jaar ervaring en <75000 salaris:")
print(custom_result)
```
## 6. Performance tips voor grote datasets
```python
# Gebruik query() voor betere performance bij grote datasets
# (query() is geoptimaliseerd en gebruikt minder geheugen)
# Gebruik .isin() in plaats van multiple OR conditions
# Slecht: df[(df['stad'] == 'A') | (df['stad'] == 'B') | (df['stad'] == 'C')]
# Goed: df[df['stad'].isin(['A', 'B', 'C'])]
# Gebruik categorieën voor string kolommen met beperkte unieke waarden
df['afdeling'] = df['afdeling'].astype('category')
df['stad'] = df['stad'].astype('category')
```
Deze technieken geven je veel flexibiliteit bij het filteren en selecteren van data. Pas de voorwaarden aan op basis van jouw specifieke DataFrame-structuur en filterbehoeften!