# Kuidas rakendada tingimusi pandas DataFrames'is funktsiooni where() abil

Python pandas `DataFrame.where()` funktsioon on loodud, et aidata **tingimusliku andmete töötlemisega** DataFrames. See võimaldab programmeerijatel asendada või maskeerida väärtusi [pandas DataFrame’is](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-pandas-dataframe/) tingimuse alusel.

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

Funktsioon `where()` võib vastu võtta kuni viis parameetrit ja selle süntaks on järgmine:

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

Kui seda rakendatakse DataFrame’ile, jäävad alles ainult need väärtused, mis vastavad määratud tingimusele (`cond`). Kõik muud väärtused asendatakse sellega, mida määratlete parameetris `other`.

### Milliseid parameetreid saab kasutada pandas `DataFrame.where()`-ga?

Pandas `DataFrame.where()` aktsepteerib erinevaid parameetreid, mis hõlbustavad paindlikku andmete haldamist ja muutmist:

<table>
  <thead>
    <tr>
      <th><strong>Parameeter</strong></th>
      <th><strong>Kirjeldus</strong></th>
      <th><strong>Vaikimisi väärtus</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Tingimus, mis peab olema täidetud, et DataFrame väärtused jääksid muutumatuks</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Väärtus, mis asendab tingimustele mittevastavad väärtused</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Kui väärtuseks on seatud `True`, muudab operatsioon otse DataFrame’i.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Määrab, millisele teljele tingimus kehtib (`axis=0` ridadele, `axis=1` veergudele)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Määrab mitme indeksiga taseme, millele tingimus peaks kehtima.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## Kuidas kasutada pandas `DataFrame.where()`

Funktsioon `where()` võib olla kasulik mitmesugustes olukordades, kus on vaja tingimuslikku **andmete töötlemist**. See võib hõlmata andmete puhastamist või **uute veergude loomist tingimuste alusel**.

### Väärtuste asendamine tingimuste alusel

Oletame, et teil on DataFrame, mis sisaldab ettevõtte müügitulemusi, ja soovite kuvada ainult positiivseid tulemusi. Negatiivsed tulemused tuleks aga asendada numbriga `0`. Seda saab teha pandas `DataFrame.where()` abil. Esmalt loome DataFrame’i:

```python
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)
```

Eespool olev kood loob järgmise andmestiku:

```none
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 negatiivsed väärtused numbriga `0`. Veenduge, et kaasatud on **ainult numbriliste väärtustega veerud**, vastasel juhul see ei tööta.

```python
# 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)
```

Saadud andmestik `df_positive` kuvab ainult positiivseid müügitulemusi ja asendab negatiivsed väärtused numbriga `0`:

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

### Väärtuste maskeerimine tingimuste abil

Pandas `DataFrame.where()` saab kasutada ka väärtuste maskeerimiseks. 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 numbriliste andmetega veerge:

```python
# 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)
```

Saadud andmestik `df_masked` kuvab ainult väärtusi, mis on suuremad kui `10000`. Kõigi teiste väärtuste asemel kasutatakse `NaN`:

```none
Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
```


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-pandas-dataframe-kus/](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-pandas-dataframe-kus/) for AI/LLM consumption.