Python pandas DataFrame.where() funkcija sukurta padėti są­ly­giš­kai tvarkyti duomenis Da­taF­ra­mes. Ji leidžia prog­ra­muo­to­jams pakeisti arba už­mas­kuo­ti 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)
python

Taikant DataFrame, tik vertės, ati­tin­kan­čios nurodytą sąlygą (cond), liks ne­pa­ki­tu­sios. Visos kitos vertės bus pakeistos tomis, kurias nu­ro­dy­si­te other parametre.

Kokie pa­ra­met­rai gali būti naudojami su pandas DataFrame.where()?

Pandas DataFrame.where() priima įvairius pa­ra­met­rus, kurie pa­leng­vi­na lanksčią duomenų tvarkymą ir keitimą:

Pa­ra­met­ras Aprašymas Nu­ma­ty­ta­sis vertė
cond Sąlyga, kuri turi būti įvykdyta, kad DataFrame reikšmės liktų ne­pa­ki­tu­sios
other Vertė, kuri pakeičia sąlygos ne­ati­tin­kan­čias vertes
inplace Nustačius True, operacija tie­sio­giai pakeis DataFrame. False
axis Nurodo, kuriai ašiai taikoma sąlyga (axis=0 – eilutėms, axis=1 – stul­pe­liams) None
level Apibrėžia dau­gia­ly­pio 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 pa­kei­ti­mas pagal sąlygas

Tarkime, kad turite duomenų rėmelį su įmonės pardavimo re­zul­ta­tais ir norite rodyti tik teigiamus re­zul­ta­tus. Neigiami re­zul­ta­tai turėtų būti pakeisti skaičiumi 0. Tai galite padaryti naudodami pandas DataFrame.where(). Pir­miau­sia 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)
python

Pateiktas 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            5000

Naudodami where(), galite pakeisti visas neigiamas reikšmes 0. Įsi­ti­kin­ki­te, kad įtrauktos tik stul­pe­liai su skai­ti­nė­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)
python

Gautas duomenų rėmelis df_positive rodo tik teigiamus pardavimo re­zul­ta­tus, 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            5000

Vertės mas­ka­vi­mas naudojant sąlygas

Pandas DataFrame.where() taip pat gali būti nau­do­ja­mas verčių mas­ka­vi­mui. Tai reiškia, kad bus rodomos tik tam tikros DataFrame dalys. Toliau pa­teik­ta­me pavyzdyje norime parodyti tik vertes, kurios viršija tam tikrą ribą (šiuo atveju 10000). Atminkite, kad turite įsi­ti­kin­ti, jog vertinate tik stul­pe­lius su skait­me­ni­niais duo­me­ni­mis:

# 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

Gautas duomenų rėmelis df_masked rodo tik vertes, kurios yra didesnės nei 10000. NaN nau­do­ja­mas 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
Go to Main Menu