# Kā piemērot nosacījumus pandas DataFrames ar where()

Python pandas `DataFrame.where()` funkcija ir izstrādāta, lai palīdzētu ar **nosacījumu datu apstrādi** DataFrames. Tā ļauj programmētājiem aizstāt vai maskēt vērtības [pandas DataFrame](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe/), pamatojoties uz nosacījumu.

## Kāda ir pandas `DataFrame.where()` sintakse?

`where()` funkcija var pieņemt līdz pieciem parametriem un tai ir šāda sintakse:

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

Piemērojot DataFrame, tikai tās vērtības, kas atbilst norādītajam nosacījumam (`cond`), paliks nemainīgas. Visas pārējās vērtības tiks aizstātas ar to, ko norādīsiet `other` parametrā.

### Kādus parametrus var izmantot ar pandas `DataFrame.where()`?

Pandas `DataFrame.where()` pieņem dažādus parametrus, kas atvieglo elastīgu datu pārvaldību un modificēšanu:

<table>
  <thead>
    <tr>
      <th><strong>Parametrs</strong></th>
      <th><strong>Apraksts</strong></th>
      <th><strong>Noklusējuma vērtība</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Nosacījums, kas jāizpilda, lai DataFrame vērtības paliktu nemainīgas</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Vērtība, kas aizstāj vērtības, kas neatbilst nosacījumam</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Ja iestatīts uz `True`, operācija tieši mainīs DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Norāda, uz kuru asi attiecas nosacījums (`axis=0` rindām, `axis=1` kolonnām)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Nosaka daudzindeksa līmeni, kurā nosacījums ir piemērojams.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## Kā lietot pandas `DataFrame.where()`

`where()` funkcija var būt noderīga dažādos scenārijos, kuros nepieciešama nosacījumu **datu apstrāde**. Tas var ietvert datu tīrīšanu vai **jaunu kolonnu izveidi, pamatojoties uz nosacījumiem**.

### Vērtību aizstāšana, pamatojoties uz nosacījumiem

Pieņemsim, ka jums ir DataFrame ar uzņēmuma pārdošanas rezultātiem, un jūs vēlaties parādīt tikai pozitīvos rezultātus. Negatīvie rezultāti, savukārt, jāaizstāj ar `0`. To var izdarīt ar pandas `DataFrame.where()`. Vispirms izveidosim 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)
```

Iepriekš minētais kods rada šādu DataFrame:

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

Izmantojot `where()`, varat aizstāt visas negatīvās vērtības ar `0`. Pārliecinieties, ka ir iekļautas **tikai kolonnas ar skaitliskām vērtībām**, citādi tas nedarbosies.

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

Rezultātā iegūtais DataFrame, `df_positive`, parāda tikai pozitīvus pārdošanas rezultātus un aizstāj negatīvās vērtības ar `0`:

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

### Vērtību maskēšana, izmantojot nosacījumus

Pandas `DataFrame.where()` var izmantot arī, lai maskētu vērtības. Tas nozīmē, ka tiks parādītas tikai noteiktas DataFrame daļas. Turpmākajā piemērā mēs vēlamies parādīt tikai vērtības, kas pārsniedz noteiktu slieksni (šajā gadījumā `10000`). Atcerieties, ka jums ir jāpārliecinās, ka jūs novērtējat tikai kolonnu ar skaitliskajiem datiem:

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

Rezultātā iegūtais DataFrame, `df_masked`, parāda tikai vērtības, kas ir lielākas par `10000`. `NaN` tiek izmantots visu pārējo vērtību vietā:

```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/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe-kur/](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe-kur/) for AI/LLM consumption.