Python pandas DataFrame.where() -funktio on suun­ni­tel­tu auttamaan eh­dol­li­ses­sa tietojen kä­sit­te­lys­sä Da­taFra­mes-ke­hyk­sis­sä. Sen avulla oh­jel­moi­jat voivat korvata tai peittää pandas DataFrame -kehyksen arvoja ehdon pe­rus­teel­la.

Mikä on pandas DataFrame.where():n syntaksi?

where() funktio voi hyväksyä enintään viisi pa­ra­met­ria, ja sen syntaksi on seuraava:

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

Kun tätä so­vel­le­taan DataFrame-kehykseen, vain mää­ri­te­tyn ehdon (cond) täyttävät arvot säilyvät ennallaan. Kaikki muut arvot korvataan other mää­rit­tä­mil­lä­si arvoilla.

Mitä pa­ra­met­re­ja voidaan käyttää pandas DataFrame.where() kanssa?

Pandas DataFrame.where() hyväksyy erilaisia pa­ra­met­re­ja, jotka hel­pot­ta­vat joustavaa tietojen hallintaa ja muok­kaus­ta:

Parametri Kuvaus Ole­tusar­vo
cond Ehto, jonka on täy­tyt­tä­vä, jotta DataFrame-arvot pysyvät muut­tu­mat­to­mi­na
other Arvo, joka korvaa ehdot täyt­tä­mät­tö­mät arvot
inplace Kun asetetaan arvoon True, operaatio muokkaa DataFrame-taulukkoa suoraan. False
axis Määrittää, mihin akseliin ehto so­vel­le­taan (axis=0 riveille, axis=1 sa­rak­keil­le) None
level Määrittää mo­ni­ha­ke­mis­ton tason, johon ehto tulisi soveltaa. None

Kuinka käyttää pandas DataFrame.where()

where() voi olla hyö­dyl­li­nen eri­lai­sis­sa ti­lan­teis­sa, joissa tarvitaan eh­dol­lis­ta tietojen kä­sit­te­lyä. Tähän voi kuulua tietojen puh­dis­ta­mi­nen tai uusien sa­rak­kei­den luominen ehtojen pe­rus­teel­la.

Arvojen kor­vaa­mi­nen ehtojen pe­rus­teel­la

Oletetaan, että sinulla on DataFrame, joka sisältää yrityksen myyn­ti­tu­lok­set, ja haluat näyttää vain po­si­tii­vi­set tulokset. Ne­ga­tii­vi­set tulokset puo­les­taan tulisi korvata luvulla 0. Voit tehdä tämän pandas-kirjaston avulla DataFrame.where(). Luodaan ensin 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

Yllä oleva koodi tuottaa seuraavan DataFrame-kehyksen:

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

Käyt­tä­mäl­lä where() voit korvata kaikki ne­ga­tii­vi­set arvot 0llä. Varmista, että vain nu­mee­ri­sia arvoja si­säl­tä­vät sarakkeet ovat mukana, muuten se ei toimi.

# 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

Tuloksena oleva DataFrame, df_positive, näyttää vain po­si­tii­vi­set myyn­ti­tu­lok­set ja korvaa ne­ga­tii­vi­set arvot luvulla 0:

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

Arvojen peit­tä­mi­nen ehtojen avulla

Pandas DataFrame.where() voidaan käyttää myös arvojen peit­tä­mi­seen. Tämä tar­koit­taa, että vain tietyt osat DataFrame-tau­lu­kos­ta näytetään. Seu­raa­vas­sa esi­mer­kis­sä haluamme näyttää vain arvot, jotka ovat tietyn kyn­ny­sar­von (tässä ta­pauk­ses­sa 10000) ylä­puo­lel­la. Muista, että sinun on var­mis­tet­ta­va, että arvioit vain sa­rak­kei­ta, joissa on nu­mee­ris­ta dataa:

# 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

Tuloksena oleva DataFrame, df_masked, näyttää vain arvot, jotka ovat suurempia kuin 10000. NaN käytetään kaikkien muiden arvojen sijasta:

Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
Siirry pää­va­lik­koon