Jak aplikovat podmínky v pandas DataFrames pomocí where()
Funkce Python pandas DataFrame.where() je navržena tak, aby pomáhala s podmíněnou manipulací s daty v DataFrames. Umožňuje programátorům nahrazovat nebo maskovat hodnoty v pandas DataFrame na základě podmínky.
Jaká je syntaxe pro pandas DataFrame.where()?
Funkce where() může přijmout až pět parametrů a má následující syntaxi:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonPři použití na DataFrame zůstanou zachovány pouze hodnoty, které splňují zadanou podmínku (cond). Všechny ostatní hodnoty budou nahrazeny hodnotami, které zadáte v parametru other.
Jaké parametry lze použít s pandas DataFrame.where()?
Pandas DataFrame.where() přijímá různé parametry, které usnadňují flexibilní správu a úpravy dat:
| Parametr | Popis | Výchozí hodnota |
|---|---|---|
cond
|
Podmínka, která musí být splněna, aby hodnoty DataFrame zůstaly nezměněny | |
other
|
Hodnota, která nahrazuje hodnoty, které nesplňují podmínku | |
inplace
|
Při nastavení na True operace přímo změní DataFrame.
|
False
|
axis
|
Určuje, na kterou osu se podmínka vztahuje (axis=0 pro řádky, axis=1 pro sloupce)
|
None
|
level
|
Definuje úroveň multi-indexu, na kterou by se měla podmínka vztahovat. | None
|
Jak používat pandas DataFrame.where()
Funkce where() může být užitečná v různých scénářích, které vyžadují podmíněnou manipulaci s daty. Může se jednat například o čištění dat nebo vytváření nových sloupců na základě podmínek.
Nahrazení hodnot na základě podmínek
Předpokládejme, že máte DataFrame s výsledky prodeje společnosti a chcete zobrazit pouze kladné výsledky. Záporné výsledky by měly být nahrazeny hodnotou 0. Toho lze dosáhnout pomocí pandas DataFrame.where(). Nejprve vytvoří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)pythonVýše uvedený kód vytvoří následující DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Pomocí where() můžete nahradit všechny záporné hodnoty hodnotou 0. Ujistěte se, že jsou zahrnuty pouze sloupce s číselnými hodnotami, jinak to nebude fungovat.
# 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 pouze kladné výsledky prodeje a nahrazuje 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 5000Maskování hodnot pomocí podmínek
Pandas DataFrame.where() lze také použít k maskování hodnot. To znamená, že se zobrazí pouze určité části datového rámce. V následujícím příkladu chceme zobrazit pouze hodnoty, které jsou nad určitou prahovou hodnotou (v tomto případě 10000). Nezapomeňte, že musíte zkontrolovat, zda vyhodnocujete pouze sloupce s číselnými údaji:
# 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 pouze hodnoty větší než 10000. Místo všech ostatních hodnot se používá NaN:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN