slogan3

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

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!