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

dropna() în pandas

Șterge rândurile (sau coloanele) care au valori lipsă: oricare, doar complet goale sau doar în anumite coloane.

Sintaxă
df.dropna(*, axis=0, how='any', thresh=None, subset=None, ignore_index=False)

Ce face dropna()

dropna() întoarce tabelul fără rândurile care conțin valori lipsă. Implicit (how="any") e suficientă o singură valoare lipsă ca rândul să dispară, ceea ce poate șterge mai mult decât te aștepți.

Trei parametri controlează ce se șterge: how="all" șterge doar rândurile complet goale, subset se uită doar la coloanele alese (de exemplu doar telefon), iar thresh=n păstrează rândurile care au cel puțin n valori existente. how și thresh nu se folosesc împreună.

Cu axis=1 se șterg coloanele cu valori lipsă în loc de rânduri. Metoda întoarce un tabel nou; parametrul inplace este depreciat în pandas 3.1, deci atribuie rezultatul: df = df.dropna().

Parametri

Parametru Descriere
axis 0 sau "index" (implicit) șterge rânduri; 1 sau "columns" șterge coloane.
how "any" (implicit): șterge dacă există cel puțin o lipsă. "all": șterge doar dacă toate valorile lipsesc.
thresh Numărul minim de valori nelipsă pe care trebuie să le aibă un rând ca să rămână. Nu se combină cu how.
subset Coloanele (la ștergerea de rânduri) în care se caută valori lipsă. Celelalte coloane sunt ignorate.
ignore_index Cu True (pandas 2.0+) rândurile rămase sunt renumerotate 0, 1, 2, …

Ce returnează

Un DataFrame nou, fără rândurile sau coloanele eliminate.

Exemple

Exemplul 1: how=”any” și how=”all”

Implicit rămâne doar Ana, singura fără lipsuri. Cu how="all" dispare doar rândul 3, care e complet gol.

import pandas as pd

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

print(df.dropna())
print()
print(df.dropna(how="all"))

Rezultat

  nume  oras  varsta
0  Ana  Iași    25.0

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

Exemplul 2: Doar anumite coloane: subset

Vrei doar clienții care au telefon. Lipsa emailului nu contează, deci rămân Ana și Ioana. ignore_index=True renumerotează rândurile.

import pandas as pd

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

print(df.dropna(subset=["telefon"], ignore_index=True))

Rezultat

    nume           email     telefon
0    Ana  ana@exemplu.ro  0740111222
1  Ioana             NaN  0730222333

Exemplul 3: thresh și ștergerea coloanelor

Cu thresh=2 rămân rândurile cu cel puțin două valori completate (Radu are doar una). Cu axis=1 și how="all" dispare coloana fax, care e complet goală.

import pandas as pd
import numpy as np

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

print(df.dropna(thresh=2))
print()
print(df.dropna(axis=1, how="all"))

Rezultat

    nume  oras  varsta  fax
0    Ana  Iași    25.0  NaN
1  Mihai   NaN    31.0  NaN

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

Greșeli frecvente

  • Rulezi df.dropna() pe un tabel cu multe coloane și pierzi aproape toate rândurile, pentru că fiecare rând are o lipsă undeva. Verifică întâi cu df.isna().sum() și folosește subset.
  • Te aștepți ca df.dropna() să modifice df. Metoda întoarce un tabel nou: df = df.dropna(). inplace=True este depreciat în pandas 3.1 și afișează un avertisment.
  • Combini how="all" cu thresh și primești TypeError: alege doar unul dintre ele.

Comenzi înrudite

  • isna() / notna(): Arată care valori lipsesc (NaN, None, NaT) dintr-un tabel; cu isna().sum() afli câte lipsesc în fiecare coloană.
  • fillna() / ffill() / bfill(): Completează valorile lipsă cu o valoare fixă, cu valori diferite pe coloane, cu media sau cu valoarea anterioară ori următoare.
  • duplicated() / drop_duplicates(): Găsește rândurile repetate și le elimină, după toate coloanele sau doar după cele alese, păstrând prima sau ultima apariție.
  • 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.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: dropna()

Ai o nelămurire despre utilizarea comenzii dropna() 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.