Python | Pandos.melt()

Python | Pandos.melt()

Kad būtų lengviau analizuoti duomenis lentelėje, galime pakeisti duomenis į kompiuteriui patogesnę formą naudodami Pandas programoje Python. Pandas.melt() yra viena iš funkcijų, leidžiančių tai padaryti. Pandas.melt() paverčia duomenų rėmelį iš plataus formato į ilgąjį formatą.

Pandos tirpsta () Funkcija yra naudinga įmasažuojant DataFrame į formatą, kuriame vienas ar keli stulpeliai yra identifikatoriaus kintamieji, o visi kiti stulpeliai, laikomi išmatuotais kintamaisiais, yra nepasukami į eilutės ašį, paliekant tik du neidentifikuojančius stulpelius – kintamąjį ir reikšmę.

Python Pandas.melt() Funkcijos sintaksė

Sintaksė: pandas.melt(frame, id_vars=Nėra, value_vars=Nėra,

var_name=Nėra, value_name='value', col_level=Nėra)

Parametrai:

  • rėmelis: DataFrame
  • id_vars [tuple, sąrašas arba ndarray, pasirinktinai]: Stulpelis (-iai), naudojamas (-i) kaip identifikatoriaus kintamieji.
  • value_vars [tuple, sąrašas arba ndarray, neprivaloma]: Stulpelis (-iai), kurį norite atšaukti. Jei nenurodyta, naudojami visi stulpeliai, kurie nėra nustatyti kaip id_vars.
  • var_name[skaliarinis]: Stulpelio „kintamasis“ pavadinimas. Jei Nėra, naudojamas frame.columns.name arba „kintamasis“.
  • vertės_pavadinimas [skaliarinis, numatytasis 'vertė']: Stulpelio „vertė“ pavadinimas.
  • col_level[int arba eilutė, neprivaloma]: Jei stulpeliai yra MultiIndex, naudokite šį lygį, kad ištirptumėte.

Pavyzdinio duomenų rėmelio kūrimas

Čia sukūrėme „DataFrame“ pavyzdį, kurį naudosime šiame straipsnyje.

Python3




# importing pandas as pd> import> pandas as pd> # creating a dataframe> df> => pd.DataFrame({> 'Name'> : {> 0> :> 'John'> ,> 1> :> 'Bob'> ,> 2> :> 'Shiela'> },> > 'Course'> : {> 0> :> 'Masters'> ,> 1> :> 'Graduate'> ,> 2> :> 'Graduate'> },> > 'Age'> : {> 0> :> 27> ,> 1> :> 23> ,> 2> :> 21> }})> df>

išlydyti () padaryti pandų pavyzdyje

Žemiau pateikiamas pavyzdys, kaip galime skirtingais būdais naudoti funkciją Pandas melt() Pandos :

1 pavyzdys: Pandos melt() Pavyzdys

Šiame pavyzdyje pd.melt> Funkcija naudojama stulpeliui „Kursas“ atjungti, išlaikant „Vardas“ kaip identifikatoriaus kintamąjį. Gautame „DataFrame“ yra trys stulpeliai: „Pavadinimas“, „kintamasis“ (su stulpelio pavadinimu „Kursas“) ir „vertė“ (su atitinkamomis stulpelio „Kursas“ reikšmėmis).

Python3




# Name is id_vars and Course is value_vars> pd.melt(df, id_vars> => [> 'Name'> ], value_vars> => [> 'Course'> ])>

Išvestis:

 Name variable value 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate 

2 pavyzdys: id_vars ir value_vars naudojimas Pandas DataFrame melt()

Šiame pavyzdyje pd.melt> Funkcija naudojama norint išjungti stulpelius „Kursas“ ir „Amžius“, naudojant „Vardas“ kaip identifikatoriaus kintamąjį.

Python3




# multiple unpivot columns> pd.melt(df, id_vars> => [> 'Name'> ], value_vars> => [> 'Course'> ,> 'Age'> ])>

Išvestis:

 Name variable value 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate 3 John Age 27 4 Bob Age 23 5 Shiela Age 21 

3 pavyzdys: Pandas DataFrame melt() naudojimas var_name ir value_name

Šiame pavyzdyje pd.melt> funkcija naudojama su pritaikytais stulpelių pavadinimais. Stulpelis „Kursas“ yra atsuktas, tačiau išsaugomas „Vardas“ kaip identifikatorius. Gautame „DataFrame“ yra stulpeliai „Name“, „ChangedVarname“ (išlydyto stulpelio pavadinimas nustatytas į „Course“) ir „ChangedValname“ (turi atitinkamos vertės iš stulpelio „Kursas“).

Python3




# Names of ‘variable’ and ‘value’ columns can be customized> pd.melt(df, id_vars> => [> 'Name'> ], value_vars> => [> 'Course'> ],> > var_name> => 'ChangedVarname'> , value_name> => 'ChangedValname'> )>

Išvestis:

 Name ChangedVarname ChangedValname 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate 

4 pavyzdys: ignore_index naudojimas su Pandas.melt() funkcija

Šiame pavyzdyje pd.melt> Funkcija taikoma norint atjungti stulpelius „Kursas“ ir „Amžius“, naudojant „Vardas“ kaip identifikatoriaus kintamąjį. Pradinis indeksas ignoruojamas dėl ignore_index=True> parametras.

Python3




# multiple unpivot columns with ignore_index> result> => pd.melt(df, id_vars> => [> 'Name'> ], value_vars> => [> 'Course'> ,> 'Age'> ], ignore_index> => True> )> print> (result)>

Išvestis:

 Name variable value 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate 3 John Age 27 4 Bob Age 23 5 Shiela Age 21