logo

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ą.

sql ddl komandas

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 pavyzdyjepd.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 pavyzdyjepd.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'>])>

Instagram privalumai asmeniniam naudojimui
>

>

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 pavyzdyjepd.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 pavyzdyjepd.melt>Funkcija taikoma norint atjungti stulpelius „Kursas“ ir „Amžius“, naudojant „Vardas“ kaip identifikatoriaus kintamąjį. Pradinis indeksas ignoruojamas dėlignore_index=True>parametras.

Python3




konvertuoti loginį į eilutę

# 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>