pd.DataFrame() în pandas

Series și DataFrame pandas 1.0+

Creează un tabel cu rânduri și coloane, dintr-un dicționar de liste, dintr-o listă de dicționare sau dintr-o listă de liste.

Sintaxă
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)

Ce face pd.DataFrame()

DataFrame este tabelul din pandas: fiecare coloană are un nume și un tip, iar fiecare rând are o etichetă în index. De cele mai multe ori îl obții citind un fișier (pd.read_csv), dar îl poți crea și direct din date Python.

Dintr-un dicționar de liste, cheile devin coloane, iar listele devin valorile lor. Dintr-o listă de dicționare, fiecare dicționar devine un rând; cheile care lipsesc dintr-un rând primesc NaN.

Atributul columns conține numele coloanelor, iar index etichetele rândurilor. Parametrul columns= din constructor alege și ordonează coloanele (sau le dă nume, când datele sunt o listă de liste).

Parametri

Parametru Descriere
data Datele: dicționar de liste, listă de dicționare, listă de liste, array NumPy sau alt DataFrame.
index Etichetele rândurilor. Implicit 0, 1, 2, …
columns Numele coloanelor. La un dicționar alege și ordonează coloanele; la o listă de liste le dă nume.
dtype Un singur tip impus tuturor coloanelor.
copy Dacă se copiază datele primite.

Ce returnează

Un obiect pd.DataFrame.

Exemple

Exemplul 1: Din dicționar de liste

Fiecare cheie devine o coloană. Toate listele trebuie să aibă aceeași lungime. elevi["nota"] returnează coloana ca Series.

import pandas as pd

elevi = pd.DataFrame({
    "nume": ["Ana", "Mihai", "Ioana"],
    "oraș": ["Iași", "Cluj", "Brașov"],
    "nota": [9.5, 8.0, 10.0],
})
print(elevi)
print(elevi.columns)
print(elevi["nota"])

Rezultat

    nume    oraș  nota
0    Ana    Iași   9.5
1  Mihai    Cluj   8.0
2  Ioana  Brașov  10.0
Index(['nume', 'oraș', 'nota'], dtype='str')
0     9.5
1     8.0
2    10.0
Name: nota, dtype: float64

Exemplul 2: Din listă de dicționare

Fiecare dicționar este un rând. Ioana nu are cheia preț, deci primește NaN, iar coloana devine float64.

import pandas as pd

comenzi = [
    {"client": "Ana", "produs": "carte", "preț": 45},
    {"client": "Mihai", "produs": "pix", "preț": 3},
    {"client": "Ioana", "produs": "caiet"},
]
df = pd.DataFrame(comenzi)
print(df)
print(df.dtypes)

Rezultat

  client produs  preț
0    Ana  carte  45.0
1  Mihai    pix   3.0
2  Ioana  caiet   NaN
client        str
produs        str
preț      float64
dtype: object

Exemplul 3: Listă de liste, cu columns și index

Când datele sunt liste de valori, columns dă numele coloanelor, iar index etichetele rândurilor.

import pandas as pd

randuri = [
    ["Iași", 1200, 1350],
    ["Cluj", 1500, 1420],
    ["Timișoara", 980, 1100],
]
df = pd.DataFrame(randuri, columns=["oraș", "ianuarie", "februarie"], index=["m1", "m2", "m3"])
print(df)
print(df.index)
print(df.loc["m2", "ianuarie"])

Rezultat

         oraș  ianuarie  februarie
m1       Iași      1200       1350
m2       Cluj      1500       1420
m3  Timișoara       980       1100
Index(['m1', 'm2', 'm3'], dtype='str')
1500

Greșeli frecvente

  • Liste de lungimi diferite în dicționar: primești ValueError: All arrays must be of the same length.
  • Crezi că columns= redenumește coloanele unui dicționar. Nu le redenumește: alege doar cheile date, iar un nume care nu există apare ca o coloană plină de NaN. Pentru redenumire folosește rename.
  • Accesezi o coloană cu punct (df.preț) când numele are spații sau coincide cu o metodă (df.count). Forma df["preț"] merge mereu.

Comenzi înrudite

  • pd.Series(): Creează o coloană de valori cu etichete (index): din listă, din dicționar sau dintr-o singură valoare.
  • DataFrame.set_index() / reset_index(): set_index face dintr-o coloană indexul rândurilor; reset_index mută indexul înapoi într-o coloană sau îl renumerotează.
  • pd.read_csv(): Citește un fișier CSV (valori separate prin virgulă sau alt separator) într-un DataFrame.
  • DataFrame.rename(): Schimbă numele coloanelor sau etichetele rândurilor, cu un dicționar {vechi: nou} sau cu o funcție precum str.lower.