Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

isna() / notna() în pandas

Arată care valori lipsesc (NaN, None, NaT) dintr-un tabel; cu isna().sum() afli câte lipsesc în fiecare coloană.

Sintaxă
df.isna()
df.notna()
pd.isna(valoare)
df.isna().sum()

Ce face isna() / notna()

isna() întoarce un tabel de aceeași formă, cu True acolo unde valoarea lipsește și False în rest. notna() face invers. pandas consideră lipsă NaN, None, NaT (dată lipsă) și pd.NA. isnull() și notnull() sunt nume vechi pentru aceleași metode.

Cel mai des le folosești combinate: df.isna().sum() spune câte valori lipsesc pe fiecare coloană (True contează ca 1), iar df[df["email"].isna()] afișează doar rândurile fără email.

Un șir gol "" sau un spațiu nu sunt valori lipsă pentru pandas. Funcția pd.isna(x) verifică și o singură valoare.

Parametri

Parametru Descriere
(fără parametri) Metodele isna() și notna() pe DataFrame și Series nu primesc argumente. pd.isna(obj) primește o valoare, o listă, o serie sau un tabel.

Ce returnează

Un DataFrame sau o Series de valori bool, de aceeași formă. pd.isna pe o singură valoare întoarce un bool.

Exemple

Exemplul 1: Unde lipsesc valori

Mihai nu are oraș, iar Ioana nu are vârstă. isna() marchează aceste celule cu True, notna() marchează restul.

import pandas as pd

df = pd.DataFrame({
    "nume": ["Ana", "Mihai", "Ioana"],
    "oras": ["Iași", None, "Cluj"],
    "varsta": [25, 31, None],
})

print(df)
print()
print(df.isna())
print()
print(df.notna())

Rezultat

    nume  oras  varsta
0    Ana  Iași    25.0
1  Mihai   NaN    31.0
2  Ioana  Cluj     NaN

    nume   oras  varsta
0  False  False   False
1  False   True   False
2  False  False    True

   nume   oras  varsta
0  True   True    True
1  True  False    True
2  True   True   False

Exemplul 2: Câte lipsesc pe coloană și filtrarea rândurilor

isna().sum() numără valorile lipsă pe fiecare coloană. any(axis=1) spune dacă rândul are cel puțin o lipsă, iar ultima filtrare arată clienții fără email.

import pandas as pd

df = pd.DataFrame({
    "nume": ["Ana", "Mihai", "Ioana", "Radu"],
    "email": ["ana@exemplu.ro", None, None, "radu@exemplu.ro"],
    "telefon": ["0740111222", "0730222333", None, None],
})

print(df.isna().sum())
print()
print(df[df.isna().any(axis=1)])
print()
print(df[df["email"].isna()])

Rezultat

nume       0
email      2
telefon    2
dtype: int64

    nume            email     telefon
1  Mihai              NaN  0730222333
2  Ioana              NaN         NaN
3   Radu  radu@exemplu.ro         NaN

    nume email     telefon
1  Mihai   NaN  0730222333
2  Ioana   NaN         NaN

Exemplul 3: Ce înseamnă „lipsă” pentru pandas

None și NaN sunt lipsă, dar șirul gol nu. Ca să tratezi și șirurile goale ca lipsă, le înlocuiești întâi cu None.

import pandas as pd
import numpy as np

print(pd.isna(None), pd.isna(np.nan), pd.isna(""), pd.isna(0))

s = pd.Series(["Iași", "", None, "Cluj"])
print(s.isna().sum())
print(s.replace("", None).isna().sum())

Rezultat

True True False False
1
2

Greșeli frecvente

  • Verifici valorile lipsă cu df["oras"] == None sau == np.nan: comparația dă mereu False, pentru că NaN nu este egal nici cu el însuși. Folosește isna().
  • Crezi că șirurile goale sau "N/A" scrise în fișier sunt valori lipsă. "" nu este; la citire, read_csv transformă implicit în lipsă doar anumite texte ("NA", "N/A", câmp gol etc.).
  • Folosești df.isna().sum() și te aștepți la un singur număr: primești câte un număr pe coloană. Totalul este df.isna().sum().sum().

Comenzi înrudite

  • fillna() / ffill() / bfill(): Completează valorile lipsă cu o valoare fixă, cu valori diferite pe coloane, cu media sau cu valoarea anterioară ori următoare.
  • dropna(): Șterge rândurile (sau coloanele) care au valori lipsă: oricare, doar complet goale sau doar în anumite coloane.
  • Filtrare cu condiții (boolean indexing): Păstrează doar rândurile care îndeplinesc o condiție, cu operatorii &, |, ~ pentru condiții compuse și Series.between pentru intervale.
  • pd.read_csv(): Citește un fișier CSV (valori separate prin virgulă sau alt separator) într-un DataFrame.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: isna() / notna()

Ai o nelămurire despre utilizarea comenzii isna() / notna() sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.