# Kas ir Pandas fillna() un kā to lietot

Python pandas `DataFrame.fillna()` funkcija tiek izmantota, lai **aizstātu trūkstošās vērtības DataFrame**. Tas var palīdzēt vienkāršot datu tīrīšanas procesus vai būt noderīgs rīks, veicot analīzes.

## Kāda ir pandas `fillna()` sintakse?

`fillna()` funkcija pieņem **līdz pieciem parametriem** un ir strukturēta šādi:

```python
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
```

### Svarīgi parametri `fillna()`

`DataFrame.fillna()` funkcijas darbību var pielāgot, izmantojot dažādus parametrus:

<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>`value`</td>
      <td>Skalāra vērtība vai vārdnīca (vai sērija), kas aizstāj NaN</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`method`</td>
      <td>Norāda aizpildīšanas metodi; aizpildīšana uz priekšu (`ffill`) vai aizpildīšana atpakaļ (`bfill`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Nosaka, uz kuras ass veikt darbību (0 vai `index` rindām, 1 vai `columns` kolonnām)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Ja `True`, izmaiņas tiek veiktas tieši sākotnējā DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`limit`</td>
      <td>Visa skaitlis, kas ierobežo aizvietojamo NaN vērtību skaitu.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

Note Nākamajās Pandas versijās `method` parametrs **visticamāk vairs netiks atbalstīts**. Ja tas notiks, varat izmantot `obj.ffill()` vai `obj.bfill()`, jo šīs funkcijas darbojas tāpat kā `method` parametrs.

## Kā lietot Pandas `DataFrame.fillna()`

Pandas `fillna()` funkciju var izmantot vairākos dažādos veidos:

### NaN vērtību aizstāšana ar fiksētu vērtību

Vispirms izveidosim DataFrame:

```python
import pandas as pd
# Sample DataFrame with different values
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
```

DataFrame izskatās šādi:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
```

Note Pandās vērtība `None` DataFrames un Series tiek interpretēta kā `NaN`

Lai aizstātu trūkstošās vērtības ar 0, varat izmantot pandas `fillna()` funkciju:

```python
# Replacing missing values with zero
df_filled = df.fillna(0)
print(df_filled)
```

Rezultātā visas NaN vērtības ir aizstātas ar 0:

```none
A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0
```

### Izmantojot priekšējo aizpildīšanas metodi `ffill`

Ja vēlaties aizpildīt NaN vērtības ar vērtību, kas atrodas tieši pirms tām kolonnā, kurā tās atrodas, varat kā parametru nodot metodi `ffill`:

```python
# Replace all NaN values with the value that precedes them
df_ffill = df.fillna(method='ffill')
print(df_ffill)
```

Šajā piemērā NaN vērtības A un C ailēs ir aizpildītas ar iepriekšējām vērtībām tajā pašā ailē. Tā kā B ailē rindai 0 nebija iepriekšējās vērtības, NaN vērtība tiek saglabāta:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0
```

### Izmantojot atpakaļpildīšanas metodi `bfill` rindām

NaN vērtības var arī aizpildīt ar nākamajām vērtībām, pamatojoties uz to rindu pozīciju. Lai to izdarītu, jums ir jāizmanto `bfill` metode un jāiestata `axis` parametrs uz 1:

```python
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
```

Rezultāts parāda, ka NaN vērtības 0. un 2. rindā ir aizstātas ar vērtībām, kas seko tām tajā pašā rindā. Tomēr NaN vērtība pirmajā rindā paliek nemainīga, jo tā ir pēdējā vērtība šajā rindā:

```none
A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
```


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe-fillna/](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/python-pandas-dataframe-fillna/) for AI/LLM consumption.