Kako uporabiti pogoje v pandas DataFrames s where()
Funkcija Python pandas DataFrame.where() je zasnovana za pomoč pri pogojnem manipuliranju podatkov v DataFrames. Programskim inženirjem omogoča zamenjavo ali maskiranje vrednosti v pandas DataFrame na podlagi pogoja.
Kakšna je sintaksa za pandas DataFrame.where()?
Funkcija where() lahko sprejme do pet parametrov in ima naslednjo sintakso:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonKo se uporabi za DataFrame, bodo le vrednosti, ki izpolnjujejo določen pogoj (cond), ostale nespremenjene. Vse druge vrednosti bodo nadomeščene s tistimi, ki jih določite v parametru other.
Kateri parametri se lahko uporabljajo s pandas DataFrame.where()?
Pandas DataFrame.where() sprejema različne parametre, ki omogočajo prilagodljivo upravljanje in spreminjanje podatkov:
| Parameter | Opis | Privzeta vrednost |
|---|---|---|
cond
|
Pogoj, ki mora biti izpolnjen, da vrednosti DataFrame ostanejo nespremenjene | |
other
|
Vrednost, ki nadomesti vrednosti, ki ne izpolnjujejo pogoja | |
inplace
|
Ko je nastavljeno na True, bo operacija neposredno spremenila 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čindeksa, na katero naj se pogoj nanaša. | None
|
Kako uporabljati pandas DataFrame.where()
Funkcija where() je lahko uporabna v različnih scenarijih, ki zahtevajo pogojno manipulacijo podatkov. To lahko vključuje čiščenje podatkov ali ustvarjanje novih stolpcev na podlagi pogojev.
Zamenjava vrednosti na podlagi pogojev
Predpostavimo, da imate DataFrame z rezultati prodaje podjetja in želite prikazati samo pozitivne rezultate. Negativne rezultate pa je treba nadomestiti 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)pythonZgornja koda ustvari naslednji DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Z uporabo where() lahko vse negativne vrednosti nadomestite s 0. Prepričajte se, da so vključeni samo stolpci s številčnimi vrednostmi, 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)pythonRezultatni 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 5000Maskiranje vrednosti z uporabo pogojev
Pandas DataFrame.where() se lahko uporablja tudi za maskiranje vrednosti. To pomeni, da se bodo prikazali samo določeni deli DataFrame. V naslednjem primeru želimo prikazati samo vrednosti, ki so nad določeno mejno vrednostjo (v tem primeru 10000). Ne pozabite, da morate preveriti, ali ocenjujete samo stolpce s številčnimi 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)pythonRezultatni 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