Hoe voorwaarden toepassen in pandas DataFrames met where()
De Python pandas DataFrame.where() -functie is ontworpen om te helpen bij het conditioneel manipuleren van gegevens in DataFrames. Hiermee kunnen programmeurs waarden in een pandas DataFrame vervangen of maskeren op basis van een voorwaarde.
Wat is de syntaxis voor pandas DataFrame.where()?
De functie where() kan maximaal vijf parameters accepteren en heeft de volgende syntaxis:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonWanneer toegepast op een DataFrame, blijven alleen de waarden die aan de opgegeven voorwaarde (cond) voldoen ongewijzigd. Alle andere waarden worden vervangen door wat u opgeeft in de parameter other.
Welke parameters kunnen worden gebruikt met pandas DataFrame.where()?
Pandas DataFrame.where() accepteert verschillende parameters die flexibel gegevensbeheer en -wijziging mogelijk maken:
| Parameter | Beschrijving | Standaardwaarde |
|---|---|---|
cond
|
Voorwaarde waaraan moet worden voldaan om DataFrame-waarden ongewijzigd te laten | |
other
|
De waarde die waarden vervangt die niet aan de voorwaarde voldoen | |
inplace
|
Wanneer ingesteld op True, zal de bewerking het DataFrame direct wijzigen.
|
False
|
axis
|
Geeft aan op welke as de voorwaarde van toepassing is (axis=0 voor rijen, axis=1 voor kolommen)
|
None
|
level
|
Definieert het niveau van een multi-index waarop de voorwaarde moet worden toegepast. | None
|
Hoe pandas DataFrame.where() te gebruiken
De functie where() kan nuttig zijn in verschillende scenario’s waarin voorwaardelijke gegevensmanipulatie vereist is. Dit kan bijvoorbeeld het opschonen van gegevens zijn of het aanmaken van nieuwe kolommen op basis van voorwaarden.
Waarden vervangen op basis van voorwaarden
Stel dat u een DataFrame hebt met de verkoopresultaten van een bedrijf en u wilt alleen de positieve resultaten weergeven. Negatieve resultaten moeten daarentegen worden vervangen door 0. U kunt dit doen met pandas DataFrame.where(). Laten we eerst een DataFrame maken:
import pandas as pd
# Create a sample DataFrame
data = {
'Region': ['North', 'South', 'East', 'West'],
'Sales_Q1': [15000, -5000, 3000, -1000],
'Sales_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)pythonDe bovenstaande code produceert het volgende DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Met where() kunt u alle negatieve waarden vervangen door 0. Zorg ervoor dat alleen kolommen met numerieke waarden worden opgenomen, anders werkt het niet.
# Replacing values using conditions
df_positive = df.copy()
df_positive[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 0, 0)
print(df_positive)pythonHet resulterende DataFrame, df_positive, geeft alleen positieve verkoopresultaten weer en vervangt negatieve waarden door 0:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Waarden maskeren met behulp van voorwaarden
Pandas DataFrame.where() kan ook worden gebruikt om waarden te maskeren. Dit betekent dat alleen specifieke delen van een DataFrame worden weergegeven. In het volgende voorbeeld willen we alleen waarden weergeven die boven een bepaalde drempelwaarde liggen (in dit geval 10000). Vergeet niet dat u ervoor moet zorgen dat u alleen kolommen met numerieke gegevens evalueert:
# Only display values over 10000
df_masked = df.copy()
df_masked[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 10000)
print(df_masked)pythonHet resulterende DataFrame, df_masked, geeft alleen waarden weer die groter zijn dan 10000. NaN wordt gebruikt in plaats van alle andere waarden:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN