# Kuinka soveltaa ehtoja pandas DataFrames -kehyksissä where()-funktiolla

Python pandas `DataFrame.where()` -funktio on suunniteltu auttamaan **ehdollisessa tietojen käsittelyssä** DataFrames-kehyksissä. Sen avulla ohjelmoijat voivat korvata tai peittää [pandas DataFrame](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe/) -kehyksen arvoja ehdon perusteella.

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

`where()` funktio voi hyväksyä enintään viisi parametria, ja sen syntaksi on seuraava:

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

Kun tätä sovelletaan DataFrame-kehykseen, vain määritetyn ehdon (`cond`) täyttävät arvot säilyvät ennallaan. Kaikki muut arvot korvataan `other` määrittämilläsi arvoilla.

### Mitä parametreja voidaan käyttää pandas `DataFrame.where()` kanssa?

Pandas `DataFrame.where()` hyväksyy erilaisia parametreja, jotka helpottavat joustavaa tietojen hallintaa ja muokkausta:

<table>
  <thead>
    <tr>
      <th><strong>Parametri</strong></th>
      <th><strong>Kuvaus</strong></th>
      <th><strong>Oletusarvo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Ehto, jonka on täytyttävä, jotta DataFrame-arvot pysyvät muuttumattomina</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Arvo, joka korvaa ehdot täyttämättömät arvot</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Kun asetetaan arvoon `True`, operaatio muokkaa DataFrame-taulukkoa suoraan.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Määrittää, mihin akseliin ehto sovelletaan (`axis=0` riveille, `axis=1` sarakkeille)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Määrittää monihakemiston tason, johon ehto tulisi soveltaa.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

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

`where()` voi olla hyödyllinen erilaisissa tilanteissa, joissa tarvitaan ehdollista **tietojen käsittelyä**. Tähän voi kuulua tietojen puhdistaminen tai **uusien sarakkeiden luominen ehtojen perusteella**.

### Arvojen korvaaminen ehtojen perusteella

Oletetaan, että sinulla on DataFrame, joka sisältää yrityksen myyntitulokset, ja haluat näyttää vain positiiviset tulokset. Negatiiviset tulokset puolestaan tulisi korvata luvulla `0`. Voit tehdä tämän pandas-kirjaston avulla `DataFrame.where()`. Luodaan ensin 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)
```

Yllä oleva koodi tuottaa seuraavan DataFrame-kehyksen:

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

Käyttämällä `where()` voit korvata kaikki negatiiviset arvot `0`llä. Varmista, että **vain numeerisia arvoja sisältävät sarakkeet** ovat mukana, muuten se ei toimi.

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

Tuloksena oleva DataFrame, `df_positive`, näyttää vain positiiviset myyntitulokset ja korvaa negatiiviset arvot luvulla `0`:

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

### Arvojen peittäminen ehtojen avulla

Pandas `DataFrame.where()` voidaan käyttää myös arvojen peittämiseen. Tämä tarkoittaa, että vain tietyt osat DataFrame-taulukosta näytetään. Seuraavassa esimerkissä haluamme näyttää vain arvot, jotka ovat tietyn kynnysarvon (tässä tapauksessa `10000`) yläpuolella. Muista, että sinun on varmistettava, että arvioit vain sarakkeita, joissa on numeerista dataa:

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

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

```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/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-jossa/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-jossa/) for AI/LLM consumption.