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)
python

Př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)
python

Výš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            5000

Pomocí 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)
python

Vý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            5000

Masková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)
python

Vý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
Přejít do hlavního menu