Kaip taikyti sąlygas pandas DataFrames su where()
Python pandas DataFrame.where() funkcija sukurta padėti sąlygiškai tvarkyti duomenis DataFrames. Ji leidžia programuotojams pakeisti arba užmaskuoti vertes pandas DataFrame pagal sąlygą.
Kokia yra pandas DataFrame.where() sintaksė?
where() funkcija gali priimti iki penkių parametrų ir turi tokią sintaksę:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonTaikant DataFrame, tik vertės, atitinkančios nurodytą sąlygą (cond), liks nepakitusios. Visos kitos vertės bus pakeistos tomis, kurias nurodysite other parametre.
Kokie parametrai gali būti naudojami su pandas DataFrame.where()?
Pandas DataFrame.where() priima įvairius parametrus, kurie palengvina lanksčią duomenų tvarkymą ir keitimą:
| Parametras | Aprašymas | Numatytasis vertė |
|---|---|---|
cond
|
Sąlyga, kuri turi būti įvykdyta, kad DataFrame reikšmės liktų nepakitusios | |
other
|
Vertė, kuri pakeičia sąlygos neatitinkančias vertes | |
inplace
|
Nustačius True, operacija tiesiogiai pakeis DataFrame.
|
False
|
axis
|
Nurodo, kuriai ašiai taikoma sąlyga (axis=0 – eilutėms, axis=1 – stulpeliams)
|
None
|
level
|
Apibrėžia daugialypio indekso lygį, kuriam turėtų būti taikoma sąlyga. | None
|
Kaip naudoti pandas DataFrame.where()
where() funkcija gali būti naudinga įvairiais atvejais, kai reikia sąlyginio duomenų tvarkymo. Tai gali būti duomenų valymas arba naujų stulpelių kūrimas pagal sąlygas.
Vertės pakeitimas pagal sąlygas
Tarkime, kad turite duomenų rėmelį su įmonės pardavimo rezultatais ir norite rodyti tik teigiamus rezultatus. Neigiami rezultatai turėtų būti pakeisti skaičiumi 0. Tai galite padaryti naudodami pandas DataFrame.where(). Pirmiausia sukursime duomenų rėmelį:
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)pythonPateiktas kodas sukuria tokį duomenų rėmelį:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Naudodami where(), galite pakeisti visas neigiamas reikšmes 0. Įsitikinkite, kad įtrauktos tik stulpeliai su skaitinėmis reikšmėmis, kitaip tai neveiks.
# 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)pythonGautas duomenų rėmelis df_positive rodo tik teigiamus pardavimo rezultatus, o neigiamas reikšmes pakeičia 0:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Vertės maskavimas naudojant sąlygas
Pandas DataFrame.where() taip pat gali būti naudojamas verčių maskavimui. Tai reiškia, kad bus rodomos tik tam tikros DataFrame dalys. Toliau pateiktame pavyzdyje norime parodyti tik vertes, kurios viršija tam tikrą ribą (šiuo atveju 10000). Atminkite, kad turite įsitikinti, jog vertinate tik stulpelius su skaitmeniniais duomenimis:
# 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)pythonGautas duomenų rėmelis df_masked rodo tik vertes, kurios yra didesnės nei 10000. NaN naudojamas vietoj visų kitų verčių:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN