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