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ă deNaN. Pentru redenumire foloseșterename. - Accesezi o coloană cu punct (
df.preț) când numele are spații sau coincide cu o metodă (df.count). Formadf["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.