Ce face DataFrame.plot() / Series.plot()
df.plot() și serie.plot() desenează un grafic direct din date, cu ajutorul bibliotecii matplotlib. Aceasta nu se instalează odată cu pandas: rulează întâi pip install matplotlib, altfel apare ImportError.
Tipul graficului se alege cu kind: "line" (implicit, bun pentru evoluții în timp), "bar" și "barh" (bare verticale/orizontale, pentru comparații), "hist" (histogramă, pentru distribuția valorilor), "pie", "scatter". Există și forma scurtă df.plot.bar(). Indexul devine axa X, iar fiecare coloană numerică devine o serie din grafic.
Graficul se salvează cu plt.savefig("fisier.png") (după import matplotlib.pyplot as plt) sau se deschide într-o fereastră cu plt.show(). În Jupyter apare direct sub celulă.
Parametri
| Parametru | Descriere |
|---|---|
kind |
Tipul graficului: "line", "bar", "barh", "hist", "box", "pie", "scatter", "area". |
x, y |
La DataFrame: coloanele folosite pe axe (implicit indexul pe X și toate coloanele numerice pe Y). |
title |
Titlul graficului. |
figsize |
Mărimea în inci, de exemplu (8, 4). |
bins |
La kind="hist": numărul de intervale. |
xlabel, ylabel |
Textul de pe axe. |
Ce returnează
Un obiect Axes din matplotlib (sau o listă de obiecte, cu subplots=True), pe care poți ajusta graficul.
Exemple
Exemplul 1: Grafic linie pentru vânzări pe luni
import pandas as pd
import matplotlib.pyplot as plt
vanzari = pd.DataFrame({"Iași": [120, 150, 90, 180], "Cluj": [100, 130, 160, 140]},
index=["ian", "feb", "mar", "apr"])
ax = vanzari.plot(kind="line", title="Vânzări pe luni (lei)", marker="o")
ax.set_xlabel("luna")
plt.savefig("vanzari.png")
print("Graficul a fost salvat în vanzari.png")
Rezultat (cu matplotlib instalat)
Graficul a fost salvat în vanzari.png
Exemplul 2: Grafic cu bare dintr-un groupby
import pandas as pd
import matplotlib.pyplot as plt
comenzi = pd.DataFrame({"oras": ["Iași", "Cluj", "Iași", "Brașov", "Cluj"],
"lei": [200, 350, 150, 120, 90]})
total = comenzi.groupby("oras")["lei"].sum().sort_values()
print(total)
total.plot(kind="bar", title="Total comenzi pe oraș", ylabel="lei")
plt.tight_layout()
plt.savefig("orase.png")
print("Salvat: orase.png")
Rezultat (cu matplotlib instalat)
oras
Brașov 120
Iași 350
Cluj 440
Name: lei, dtype: int64
Salvat: orase.png
Exemplul 3: Histogramă a notelor
plt.show() deschide o fereastră cu graficul; programul continuă după ce o închizi.
import pandas as pd
import matplotlib.pyplot as plt
note = pd.Series([5, 6, 6, 7, 7, 7, 8, 8, 9, 10, 10, 4])
note.plot(kind="hist", bins=7, title="Distribuția notelor")
print("Elevi:", len(note), "| media:", round(note.mean(), 2))
plt.show()
Rezultat (cu matplotlib instalat; graficul apare într-o fereastră)
Elevi: 12 | media: 7.25
Greșeli frecvente
- Nu ai instalat matplotlib și primești
ImportErrorladf.plot(). Ruleazăpip install matplotlib. - Rulezi scriptul din terminal și nu vezi nimic. În afara Jupyter, graficul apare doar cu
plt.show()sau se salvează cuplt.savefig(). - Apelezi
plt.savefig()dupăplt.show()și primești o imagine goală: după închiderea ferestrei graficul nu mai există. Salvează înainte deshow(). - Coloana de valori este text, nu număr.
plot()folosește doar coloanele numerice; transformă cuastype()saupd.to_numeric().
Comenzi înrudite
DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.value_counts(): Numără de câte ori apare fiecare valoare într-o coloană (sau fiecare combinație de valori pe rânduri), în ordine descrescătoare.DataFrame.resample(): Grupează o serie de timp pe intervale (săptămâni, luni) și calculează câte o valoare pe interval: sumă, medie, număr.pd.DataFrame(): 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.