course
Formatul lat e ușor de citit, dar multe sarcini de analiză și vizualizare funcționează mai bine cu date în format lung.
Funcția pandas.melt() reconfigurează un DataFrame transformând una sau mai multe coloane în rânduri, păstrând neschimbate coloanele identificatoare selectate. Asta îți face datele mai ușor de filtrat, grupat, vizualizat și analizat.
În acest tutorial, îți voi arăta cum să folosești funcția pandas.melt(). Îți voi arăta și cum se compară cu opțiuni precum pivot(), stack() și wide_to_long(). Dacă abia începi cu Python, îți recomand să urmezi Introducere în Python, cursul care acoperă abilități precum tipuri de date, liste, funcții de bază și pachete.
Cum folosești pandas.melt()
Funcția pandas.melt() convertește un DataFrame din format lat în format lung, transformând anteturile coloanelor în valori într-o coloană nouă.
Sintaxa este următoarea:
pandas.melt(
frame,
id_vars=None,
value_vars=None,
var_name=None,
value_name="value",
col_level=None,
ignore_index=True
)
Unde:
-
frame: DataFrame-ul de reconfigurat. Necesar doar când foloseștipandas.melt(). -
id_vars: Coloana sau lista de coloane care rămân neschimbate. Aceste coloane identifică fiecare rând după reconfigurare. -
value_vars: Coloana sau lista de coloane de „desfăcut” (unpivot). Dacă e omis, pandas transformă toate coloanele care nu sunt înid_vars. -
var_name: Numele noii coloane care stochează numele coloanelor originale. Implicit este”variable”dacă nu e specificat. -
value_name: Numele noii coloane care stochează valorile. Implicit este”value”dacă nu e specificat. -
col_level: Opțional, specifică nivelul care va fi transformat atunci când lucrezi cu coloane MultiIndex. -
ignore_index: Dacă esteTrue(implicit), creează un nou index secvențial. Dacă esteFalse, păstrează indexul original.
Îți arăt un exemplu ca să vezi cum reconfigurează sintaxa de mai sus datele.
Să presupunem că ai setul de date de mai jos, unde vânzările lunare pentru fiecare produs sunt stocate în coloane separate.

Poți folosi pandas.melt() pentru a converti coloanele lunilor în rânduri.
# Convert the DataFrame from wide format to long format
products_sales_2025_melted = products_sales_2025.melt(
# Keep the Product and Category columns unchanged
id_vars=["Product", "Category"],
# Convert the month columns into rows
value_vars=["January", "February", "March", "April", "May", "June"],
# Name of the new column that stores the original column names
var_name="Month",
# Name of the new column that stores the corresponding sales values
value_name="Sales"
)
# Display the reshaped DataFrame
products_sales_2025_melted.head(10)
DataFrame-ul rezultat stochează acum fiecare lună ca rând separat.

Exemple uzuale de pandas.melt()
Acum că ai înțeles cum funcționează sintaxa pandas.melt(), îți arăt cum se comportă fiecare parametru în parte. Vom folosi tabelul de mai sus în exemplele următoare.
Transformă doar anumite coloane
Parametrul value_vars îți permite să specifici ce coloane să desfaci. În loc să transformi fiecare lună, poți converti doar coloanele de care ai nevoie.
În acest exemplu, sunt transformate doar coloanele January și February. Restul coloanelor cu luni sunt ignorate.
# Convert only the January and February columns into rows
product_sales_3month = products_sales_2025.melt(
id_vars="Product",
value_vars=["January", "February",]
)
product_sales_3month.head(20)

Păstrează coloanele identificatoare
Folosește parametrul id_vars ca să păstrezi neschimbate una sau mai multe coloane, în timp ce restul coloanelor sunt reconfigurate.
În exemplul de mai jos, „Product” și „Category” rămân neschimbate, iar coloanele cu vânzări lunare sunt convertite în rânduri.
# Keep the Product and Category columns while melting the monthly sales
product_sales_cat = products_sales_2025.melt(
id_vars=["Product", "Category"]
)
product_sales_cat.head()

Redenumește coloanele de ieșire
Dacă ai observat, coloanele de ieșire se numesc implicit variable și value. Folosește argumentele var_name și value_name pentru a le da nume descriptive.
De exemplu, am redenumit coloana variabilă în „Month” și valorile în „Sales” în rezultatul de mai jos.
# Keep the Product and Category columns while melting the monthly sales
# Rename Month and Sales columns
product_sales_cat = products_sales_2025.melt(
id_vars=["Product", "Category"],
var_name="Month",
value_name="Sales"
)
product_sales_cat.head()

Păstrează indexul original
Implicit, pandas.melt() creează un index nou, secvențial. Setează ignore_index=False pentru a păstra indexul inițial al rândurilor.
# Keep the original row index after reshaping
product_sales_index = products_sales_2025.melt(
id_vars=["Product", "Category"],
var_name="Month",
value_name="Sales",
ignore_index=False
)
product_sales_index.head(10)

În exemplul de mai sus, etichetele originale ale rândurilor (0–5) se repetă pentru fiecare lună, în loc să fie înlocuite cu un nou index secvențial.
Când ar trebui să folosești pandas.melt()?
pandas.melt() este util când datele tale sunt în format lat și trebuie transformate într-un format lung pentru analiză sau vizualizare. Găsesc funcția importantă și pentru următoarele cazuri de utilizare:
-
Convertește datele late în format lung: Multe seturi de date stochează valori înrudite în mai multe coloane. Deși acest format e ușor de citit, poate îngreuna analiza.
pandas.melt()combină acele coloane într-una singură, păstrând coloanele identificatoare, creând o structură mai curată pentru procesarea ulterioară. -
Pregătește datele pentru plotare: Multe biblioteci de plotare, precum Seaborn, funcționează cel mai bine cu date în format lung la crearea graficelor. În loc să combini manual mai multe coloane, poți folosi
pandas.melt()pentru a reconfigura datele în formatul așteptat de aceste biblioteci. -
Pregătește datele pentru analiză statistică: Multe operații pandas, inclusiv
groupby(), agregări, filtrări și statistici sumare, devin mai simple când măsurătorile sunt stocate într-o singură coloană, nu răspândite pe mai multe. Dacă îți reconfigurezi datele cupandas.melt(), reduci cantitatea de cod necesară pentru a analiza variabile diferite. -
Creează seturi de date „tidy”: Un set de date „tidy” stochează fiecare variabilă în propria coloană și fiecare observație în propriul rând. Dacă setul tău de date conține măsurători repetate pe mai multe coloane,
pandas.melt()este adesea cea mai rapidă cale de a-l converti într-un format „tidy”.
Îți recomand să urmezi cursul nostru Introducere în vizualizarea datelor cu Seaborn ca să înveți cum să creezi și să personalizezi diverse ploturi în Python, inclusiv scatter, count, bar și box plot.
pandas.melt() vs. alte funcții de reconfigurare
Pandas oferă mai multe funcții pentru reconfigurarea datelor, fiecare servind unui scop diferit. Hai să explorăm diferențele dintre ele.
pandas.melt() vs. pivot()
Tabelul de mai jos arată diferența dintre funcțiile pandas.melt() și pivot().
|
|
|
|
Convertește datele late în date lungi. |
Convertește datele lungi în date late. |
|
Transformă coloanele în rânduri. |
Transformă valorile rândurilor în coloane. |
|
Util pentru pregătirea datelor pentru analiză și vizualizare. |
Util pentru rezumarea sau prezentarea datelor într-un raport. |
Prin urmare, alege melt() când măsurătorile sunt răspândite pe mai multe coloane sau pivot() când vrei să distribui valorile rândurilor pe coloane.
pandas.melt() vs. stack()
Deși ambele funcții reconfigurează datele, iată cum diferă.
|
|
|
|
Reconfigurează coloane obișnuite în rânduri. |
Mută unul sau mai multe niveluri de coloane în index. |
|
Produce un DataFrame standard. |
Produce o Series sau un DataFrame cu MultiIndex. |
|
Mai ușor de citit și folosit pentru majoritatea sarcinilor de analiză. |
Mai potrivit pentru operații de reconfigurare bazate pe index. |
Poți folosi stack() când ai nevoie să lucrezi cu indici ierarhici sau obiecte MultiIndex.
pandas.melt() vs. wide_to_long()
Ambele funcții convertesc datele late în format lung, dar sunt concepute pentru situații diferite, așa cum se arată mai jos.
|
|
|
|
Flexibilă și funcționează cu aproape orice DataFrame. |
Proiectată pentru seturi de date cu tipare consistente de denumire a coloanelor. |
|
Potrivită pentru reconfigurare generală. |
Ideală pentru măsurători repetate precum Sales_2023, Sales_2024 și Sales_2025. |
Dacă setul tău de date are denumiri neregulate ale coloanelor, folosește melt(). Dacă coloanele urmează o convenție previzibilă, folosește wide_to_long() pentru a reconfigura datele cu mai puțin cod.
Greșeli frecvente cu pandas.melt()
Deși pandas.melt() este ușor de folosit, iată cele mai frecvente capcane pe care le-am întâlnit și cum le poți rezolva.
-
Uitarea id_vars: Dacă nu specifici
id_vars, pandas tratează fiecare coloană care nu e listată învalue_varsca o coloană de valori. Asta poate reconfigura coloane pe care intenționai să le păstrezi ca identificatori. Pentru a remedia, identifică întotdeauna coloanele care descriu unic fiecare înregistrare și pasează-le înid_vars. -
Transformarea neintenționată a unor coloane: Dacă omiți
value_vars, pandas transformă toate coloanele care nu sunt incluse înid_vars. Asta poate include coloane pe care nu doreai să le reconfigurezi. Așadar, specifică mereuvalue_varscând vrei să transformi doar un subset de coloane. -
Neînțelegerea formei rezultatului: După transformare, numărul de rânduri crește pentru că fiecare coloană selectată devine un rând separat pentru fiecare înregistrare. De exemplu, un DataFrame cu 10 rânduri și 12 coloane de luni produce 120 de rânduri după transformarea coloanelor de luni. Prin urmare, verifică mereu forma înainte și după reconfigurare pentru a confirma că datele au fost transformate corect.
-
Confuzia între formatele lat și lung: Amintește-ți că, în formatul lat, valori similare sunt stocate în mai multe coloane. În formatul lung, valori similare sunt stocate într-o singură coloană, cu o altă coloană care identifică variabila.
Bune practici pentru folosirea pandas.melt()
Pentru ca codul tău de reconfigurare să fie mai ușor de înțeles și menținut, îți recomand să urmezi aceste bune practici când folosești funcția pandas.melt():
-
Identifică mai întâi coloanele identificatoare: Decide care coloane trebuie să rămână neschimbate, apoi pasează-le în
id_vars. -
Redenumește coloana generată: Folosește
var_nameșivalue_nameîn loc să te bazezi pe numele implicite „variable” și „value”. -
Verifică numărul de rânduri după transformare: Asigură-te că numărul de rânduri corespunde așteptărilor tale, mai ales când transformi multe coloane.
-
Folosește pivot() pentru a reface forma inițială: Dacă ai nevoie să restaurezi formatul lat original după analiză, folosește funcția
pivot().
Urmează cursul nostru Writing Efficient Python Code ca să înveți să scrii cod eficient, ușor de depanat și de întreținut.
Concluzie
pandas.melt() este funcția standard din pandas pentru convertirea datelor în format lat în date în format lung. Iar odată ce înțelegi rolurile id_vars și value_vars, poți controla ce coloane rămân ca identificatori și care sunt convertite în rânduri.
Pentru o înțelegere solidă a Python, poți afla mai multe din traseele noastre de abilități Fundamentele datelor în Python și Fundamentele programării în Python.
Întrebări frecvente
Când ar trebui să folosesc pandas.melt()?
Folosește-o când datele tale au valori repetate răspândite pe coloane și vrei un DataFrame în format lung pentru analiză sau vizualizare.
Ce sunt var_name și value_name?
Acești parametri redenumesc coloanele generate care stochează denumirile originale ale coloanelor și valorile lor corespunzătoare.
Modifică pandas.melt() DataFrame-ul original?
Nu. Returnează un nou DataFrame reconfigurat și îl lasă pe cel original neschimbat.
Care este diferența dintre melt() și pivot()?
melt() convertește datele late în format lung, în timp ce pivot() convertește datele lungi înapoi în format lat.
Care este diferența dintre melt() și stack()?
melt() reconfigurează coloanele în rânduri păstrând un DataFrame obișnuit. stack() mută coloanele în index și creează o structură ierarhică (MultiIndex).