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

DataFrame.astype() și pd.to_numeric() în pandas

Schimbă tipul unei coloane (int, float, category, str); pd.to_numeric transformă textul în numere și poate pune NaN la valorile greșite.

Sintaxă
df.astype(dtype, errors='raise')
pd.to_numeric(arg, errors='raise', downcast=None)

Ce face DataFrame.astype() și pd.to_numeric()

astype() convertește valorile în alt tip: df["an"].astype(int), astype(float), astype("str") pentru text sau astype("category") pentru coloane cu puține valori care se repetă (orașe, categorii de produse), care ocupă mai puțină memorie. Pe un tabel poți da un dicționar: df.astype({"an": int, "oras": "category"}).

Dacă o singură valoare nu se poate converti (de exemplu textul „n/a” într-o coloană de numere), astype aruncă eroare. pd.to_numeric(s, errors="coerce") transformă ce poate în numere și pune NaN la rest, ca să vezi apoi ce valori au fost greșite.

O coloană de întregi nu poate avea NaN în tipul int64. Pentru întregi cu valori lipsă folosește tipul "Int64" (cu I mare), care afișează lipsurile ca <NA>.

Parametri

Parametru Descriere
dtype Tipul nou: int, float, "int64", "Int64", "str", "category", bool sau un dicționar {coloana: tip}.
errors (astype) "raise" (implicit) sau "ignore" (lasă datele neschimbate la eroare).
arg (to_numeric) Un Series, o listă sau o valoare.
errors (to_numeric) "raise" (implicit) sau "coerce": valorile care nu sunt numere devin NaN.
downcast (to_numeric) "integer", "signed", "unsigned" sau "float": alege cel mai mic tip numeric potrivit.

Ce returnează

Un obiect nou cu tipul schimbat (astype) sau un Series numeric (to_numeric).

Exemple

Exemplul 1: Conversii cu astype

Coloanele citite ca text devin numere, iar orașul devine categorie.

import pandas as pd

df = pd.DataFrame({
    "an": ["2024", "2025", "2026"],
    "pret": ["12.5", "14", "15.75"],
    "oras": ["Iași", "Cluj", "Iași"],
})
print(df.dtypes)
print()

df = df.astype({"an": int, "pret": float, "oras": "category"})
print(df.dtypes)
print()
print(df["pret"].sum())
print(df["oras"].cat.categories.tolist())
print(df["an"].astype("str").tolist())

Rezultat

an      str
pret    str
oras    str
dtype: object

an         int64
pret     float64
oras    category
dtype: object

42.25
['Cluj', 'Iași']
['2024', '2025', '2026']

Exemplul 2: Text cu valori greșite: pd.to_numeric(errors=”coerce”)

„n/a” și „12,5” (cu virgulă) nu sunt numere valide, deci devin NaN. Virgula se poate înlocui înainte cu punct.

import pandas as pd

lei = pd.Series(["120", "n/a", "12,5", "300"])

try:
    lei.astype(float)
except ValueError as e:
    print("astype:", e)

print(pd.to_numeric(lei, errors="coerce"))
print()

corectat = pd.to_numeric(lei.str.replace(",", "."), errors="coerce")
print(corectat)
print("Valori lipsă:", corectat.isna().sum())

Rezultat

astype: could not convert string to float: 'n/a'
0    120.0
1      NaN
2      NaN
3    300.0
dtype: float64

0    120.0
1      NaN
2     12.5
3    300.0
dtype: float64
Valori lipsă: 1

Exemplul 3: Întregi cu valori lipsă: tipul Int64

import pandas as pd

bucati = pd.Series([3, None, 5])
print(bucati.dtype)
print(bucati.astype("Int64"))

Rezultat

float64
0       3
1    <NA>
2       5
dtype: Int64

Greșeli frecvente

  • Convertești cu astype(int) o coloană cu NaN: primești IntCastingNaNError. Completează lipsurile cu fillna() sau folosește "Int64".
  • Numere scrise cu virgulă zecimală („12,5”) nu sunt înțelese de astype(float) sau to_numeric. Înlocuiește virgula cu .str.replace(",", ".") sau citește fișierul cu decimal="," în read_csv.
  • Uiți să atribui rezultatul: df["an"].astype(int) singur nu schimbă tabelul. Scrie df["an"] = df["an"].astype(int).

Comenzi înrudite

  • dtypes / select_dtypes(): dtypes arată tipul fiecărei coloane; select_dtypes păstrează doar coloanele de anumite tipuri (numere, text, date).
  • DataFrame.info(): Afișează un rezumat al tabelului: numărul de rânduri, coloanele, câte valori completate are fiecare, tipurile și memoria.
  • fillna() / ffill() / bfill(): Completează valorile lipsă cu o valoare fixă, cu valori diferite pe coloane, cu media sau cu valoarea anterioară ori următoare.
  • 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: DataFrame.astype() și pd.to_numeric()

Ai o nelămurire despre utilizarea comenzii DataFrame.astype() și pd.to_numeric() 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.