Funkcija Python pandas DataFrame.where() je zasnovana za pomoč pri pogojnem ma­ni­pu­li­ra­nju podatkov v Da­ta­Fra­mes. Pro­gram­skim in­že­nir­jem omogoča zamenjavo ali ma­ski­ra­nje vrednosti v pandas DataFrame na podlagi pogoja.

Kakšna je sintaksa za pandas DataFrame.where()?

Funkcija where() lahko sprejme do pet pa­ra­me­trov in ima naslednjo sintakso:

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
python

Ko se uporabi za DataFrame, bodo le vrednosti, ki iz­pol­nju­je­jo določen pogoj (cond), ostale ne­spre­me­nje­ne. Vse druge vrednosti bodo na­do­me­šče­ne s tistimi, ki jih določite v parametru other.

Kateri parametri se lahko upo­ra­blja­jo s pandas DataFrame.where()?

Pandas DataFrame.where() sprejema različne parametre, ki omogočajo pri­la­go­dlji­vo upra­vlja­nje in spre­mi­nja­nje podatkov:

Parameter Opis Privzeta vrednost
cond Pogoj, ki mora biti izpolnjen, da vrednosti DataFrame ostanejo ne­spre­me­nje­ne
other Vrednost, ki nadomesti vrednosti, ki ne iz­pol­nju­je­jo pogoja
inplace Ko je na­sta­vlje­no na True, bo operacija ne­po­sre­dno spre­me­ni­la DataFrame. False
axis Določa, na katero os se pogoj nanaša (axis=0 za vrstice, axis=1 za stolpce) None
level Določa raven ve­č­in­de­ksa, na katero naj se pogoj nanaša. None

Kako upo­ra­blja­ti pandas DataFrame.where()

Funkcija where() je lahko uporabna v različnih sce­na­ri­jih, ki zahtevajo pogojno ma­ni­pu­la­ci­jo podatkov. To lahko vključuje čiščenje podatkov ali ustvar­ja­nje novih stolpcev na podlagi pogojev.

Zamenjava vrednosti na podlagi pogojev

Pred­po­sta­vi­mo, da imate DataFrame z rezultati prodaje podjetja in želite prikazati samo pozitivne rezultate. Negativne rezultate pa je treba na­do­me­sti­ti s 0. To lahko storite s pandas DataFrame.where(). Najprej ustvarimo 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

Zgornja koda ustvari naslednji DataFrame:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South         -5000         25000
2     East            3000         -7000
3     West         -1000            5000

Z uporabo where() lahko vse negativne vrednosti na­do­me­sti­te s 0. Pre­pri­čaj­te se, da so vključeni samo stolpci s šte­vilč­ni­mi vre­dnost­mi, sicer to ne bo delovalo.

# 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

Re­zul­ta­tni DataFrame, df_positive, prikazuje samo pozitivne prodajne rezultate in negativne vrednosti nadomesti s 0:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South                 0         25000
2     East            3000                 0
3     West                 0            5000

Ma­ski­ra­nje vrednosti z uporabo pogojev

Pandas DataFrame.where() se lahko uporablja tudi za ma­ski­ra­nje vrednosti. To pomeni, da se bodo prikazali samo določeni deli DataFrame. V na­sle­dnjem primeru želimo prikazati samo vrednosti, ki so nad določeno mejno vre­dno­stjo (v tem primeru 10000). Ne pozabite, da morate preveriti, ali oce­nju­je­te samo stolpce s šte­vilč­ni­mi podatki:

# 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

Re­zul­ta­tni DataFrame, df_masked, prikazuje samo vrednosti, ki so večje od 10000. NaN se uporablja namesto vseh drugih vrednosti:

Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
Go to Main Menu