Ako aplikovať podmienky v pandas DataFrames s where()
Funkcia Python pandas DataFrame.where() je navrhnutá tak, aby pomáhala s podmienenou manipuláciou s údajmi v DataFrames. Umožňuje programátorom nahradiť alebo zamaskovať hodnoty v pandas DataFrame na základe podmienky.
Aká je syntax pre pandas DataFrame.where()?
Funkcia where() môže prijať až päť parametrov a má nasledujúcu syntax:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonPri použití na DataFrame zostanú nezmenené len hodnoty, ktoré spĺňajú špecifikovanú podmienku (cond). Všetky ostatné hodnoty budú nahradené hodnotami, ktoré špecifikujete v parametri other.
Aké parametre možno použiť s pandas DataFrame.where()?
Pandas DataFrame.where() akceptuje rôzne parametre, ktoré uľahčujú flexibilnú správu a úpravu údajov:
| Parameter | Popis | Predvolená hodnota |
|---|---|---|
cond
|
Podmienka, ktorá musí byť splnená, aby hodnoty DataFrame zostali nezmenené | |
other
|
Hodnota, ktorá nahrádza hodnoty, ktoré nespĺňajú podmienku | |
inplace
|
Ak je nastavená na True, operácia priamo upraví DataFrame.
|
False
|
axis
|
Určuje, na ktorú os sa podmienka vzťahuje (axis=0 pre riadky, axis=1 pre stĺpce)
|
None
|
level
|
Definuje úroveň multi-indexu, na ktorú sa má podmienka vzťahovať. | None
|
Ako používať pandas DataFrame.where()
Funkcia where() môže byť užitočná v rôznych scenároch, ktoré vyžadujú podmienenú manipuláciu s údajmi. Môže to zahŕňať čistenie údajov alebo vytváranie nových stĺpcov na základe podmienok.
Nahradenie hodnôt na základe podmienok
Predpokladajme, že máte DataFrame s výsledkami predaja spoločnosti a chcete zobraziť len kladné výsledky. Záporné výsledky by mali byť nahradené hodnotou 0. To môžete urobiť pomocou pandas DataFrame.where(). Najskôr vytvoríme DataFrame:
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)pythonVyššie uvedený kód vytvorí nasledujúci DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Pomocou where() môžete nahradiť všetky záporné hodnoty hodnotou 0. Uistite sa, že sú zahrnuté len stĺpce s číselnými hodnotami, inak to nebude fungovať.
# 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)pythonVýsledný DataFrame, df_positive, zobrazuje iba kladné výsledky predaja a nahradzuje záporné hodnoty hodnotou 0:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Maskovanie hodnôt pomocou podmienok
Pandas DataFrame.where() možno použiť aj na maskovanie hodnôt. To znamená, že sa zobrazia len určité časti DataFrame. V nasledujúcom príklade chceme zobraziť len hodnoty, ktoré presahujú určitú hranicu (v tomto prípade 10000). Nezabudnite, že musíte skontrolovať, či vyhodnocujete len stĺpce s číselnými údajmi:
# 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)pythonVýsledný DataFrame, df_masked, zobrazuje iba hodnoty, ktoré sú väčšie ako 10000. NaN sa používa namiesto všetkých ostatných hodnôt:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN