# Kako uporabiti pogoje v pandas DataFrames s where()

Funkcija Python pandas `DataFrame.where()` je zasnovana za pomoč pri **pogojnem manipuliranju podatkov** v DataFrames. Programskim inženirjem omogoča zamenjavo ali maskiranje vrednosti v [pandas DataFrame](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-pandas-dataframe/) na podlagi pogoja.

## Kakšna je sintaksa za pandas `DataFrame.where()`?

Funkcija `where()` lahko sprejme do pet parametrov in ima naslednjo sintakso:

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

Ko se uporabi za DataFrame, bodo le vrednosti, ki izpolnjujejo določen pogoj (`cond`), ostale nespremenjene. Vse druge vrednosti bodo nadomeščene s tistimi, ki jih določite v parametru `other`.

### Kateri parametri se lahko uporabljajo s pandas `DataFrame.where()`?

Pandas `DataFrame.where()` sprejema različne parametre, ki omogočajo prilagodljivo upravljanje in spreminjanje podatkov:

<table>
  <thead>
    <tr>
      <th><strong>Parameter</strong></th>
      <th><strong>Opis</strong></th>
      <th><strong>Privzeta vrednost</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Pogoj, ki mora biti izpolnjen, da vrednosti DataFrame ostanejo nespremenjene</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Vrednost, ki nadomesti vrednosti, ki ne izpolnjujejo pogoja</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Ko je nastavljeno na `True`, bo operacija neposredno spremenila DataFrame.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Določa, na katero os se pogoj nanaša (`axis=0` za vrstice, `axis=1` za stolpce)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Določa raven večindeksa, na katero naj se pogoj nanaša.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## Kako uporabljati pandas `DataFrame.where()`

Funkcija `where()` je lahko uporabna v različnih scenarijih, ki zahtevajo pogojno **manipulacijo podatkov**. To lahko vključuje čiščenje podatkov ali **ustvarjanje novih stolpcev na podlagi pogojev**.

### Zamenjava vrednosti na podlagi pogojev

Predpostavimo, da imate DataFrame z rezultati prodaje podjetja in želite prikazati samo pozitivne rezultate. Negativne rezultate pa je treba nadomestiti s `0`. To lahko storite s pandas `DataFrame.where()`. Najprej ustvarimo DataFrame:

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

Zgornja koda ustvari naslednji DataFrame:

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

Z uporabo `where()` lahko vse negativne vrednosti nadomestite s `0`. Prepričajte se, da so vključeni **samo stolpci s številčnimi vrednostmi**, sicer to ne bo delovalo.

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

Rezultatni DataFrame, `df_positive`, prikazuje samo pozitivne prodajne rezultate in negativne vrednosti nadomesti s `0`:

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

### Maskiranje vrednosti z uporabo pogojev

Pandas `DataFrame.where()` se lahko uporablja tudi za maskiranje vrednosti. To pomeni, da se bodo prikazali samo določeni deli DataFrame. V naslednjem primeru želimo prikazati samo vrednosti, ki so nad določeno mejno vrednostjo (v tem primeru `10000`). Ne pozabite, da morate preveriti, ali ocenjujete samo stolpce s številčnimi podatki:

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

Rezultatni DataFrame, `df_masked`, prikazuje samo vrednosti, ki so večje od `10000`. `NaN` se uporablja namesto vseh drugih vrednosti:

```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/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-pandas-dataframe-kjer/](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-pandas-dataframe-kjer/) for AI/LLM consumption.