Python pandas DataFrame.where() funkt­sioon on loodud, et aidata tin­gi­mus­liku andmete tööt­le­mi­sega Da­taF­ra­mes. See võimaldab prog­ram­mee­ri­ja­tel asendada või mas­kee­rida väärtusi pandas DataFrame’is tingimuse alusel.

Mis on pandas DataFrame.where() süntaks?

Funkt­sioon where() võib vastu võtta kuni viis pa­ra­meet­rit ja selle süntaks on järgmine:

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

Kui seda ra­ken­da­takse DataFrame’ile, jäävad alles ainult need väärtused, mis vastavad määratud tin­gi­mu­sele (cond). Kõik muud väärtused asen­da­takse sellega, mida mää­rat­lete pa­ra­meet­ris other.

Milliseid pa­ra­meetreid saab kasutada pandas DataFrame.where()-ga?

Pandas DataFrame.where() akt­sep­tee­rib erinevaid pa­ra­meetreid, mis hõl­bus­ta­vad paind­likku andmete haldamist ja muutmist:

Pa­ra­mee­ter Kirjeldus Vaikimisi väärtus
cond Tingimus, mis peab olema täidetud, et DataFrame väärtused jääksid muu­tu­ma­tuks
other Väärtus, mis asendab tin­gi­mus­tele mit­te­vas­ta­vad väärtused
inplace Kui väär­tu­seks on seatud True, muudab ope­rat­sioon otse DataFrame’i. False
axis Määrab, millisele teljele tingimus kehtib (axis=0 ridadele, axis=1 veer­gu­dele) None
level Määrab mitme indeksiga taseme, millele tingimus peaks kehtima. None

Kuidas kasutada pandas DataFrame.where()

Funkt­sioon where() võib olla kasulik mit­me­su­gus­tes olu­kor­da­des, kus on vaja tin­gi­mus­likku andmete tööt­le­mist. See võib hõlmata andmete pu­has­ta­mist või uute veergude loomist tin­gi­muste alusel.

Väärtuste asen­da­mine tin­gi­muste alusel

Oletame, et teil on DataFrame, mis sisaldab ettevõtte müü­gi­tu­le­musi, ja soovite kuvada ainult po­si­tiiv­seid tulemusi. Ne­ga­tiiv­sed tulemused tuleks aga asendada numbriga 0. Seda saab teha pandas DataFrame.where() abil. Esmalt loome DataFrame’i:

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

Eespool olev kood loob järgmise and­mes­tiku:

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

Kasutades where(), saate asendada kõik ne­ga­tiiv­sed väärtused numbriga 0. Veenduge, et kaasatud on ainult numb­ri­liste väär­tus­tega veerud, vastasel juhul see ei tööta.

# 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

Saadud andmestik df_positive kuvab ainult po­si­tiiv­seid müü­gi­tu­le­musi ja asendab ne­ga­tiiv­sed väärtused numbriga 0:

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

Väärtuste mas­kee­ri­mine tin­gi­muste abil

Pandas DataFrame.where() saab kasutada ka väärtuste mas­kee­ri­miseks. See tähendab, et kuvatakse ainult DataFrame’i teatud osad. Järgmises näites tahame näidata ainult väärtusi, mis ületavad teatud künnise (antud juhul 10000). Pange tähele, et peate veenduma, et hindate ainult numb­ri­liste andmetega veerge:

# 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

Saadud andmestik df_masked kuvab ainult väärtusi, mis on suuremad kui 10000. Kõigi teiste väärtuste asemel ka­su­ta­takse NaN:

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