Python | Pandas.melt()

Python | Pandas.melt()

Abychom usnadnili analýzu dat v tabulce, můžeme data přetvořit do počítačově přívětivější podoby pomocí Pandas v Pythonu. Pandas.melt() je jednou z funkcí, jak toho dosáhnout. Pandas.melt() uvolní datový rámec z širokého formátu na dlouhý.

Pandy se rozplývají () Funkce je užitečná k namasírování DataFrame do formátu, kde jeden nebo více sloupců jsou proměnné identifikátoru, zatímco všechny ostatní sloupce, považované za měřené proměnné, nejsou otočeny k ose řádku, takže zbývají pouze dva sloupce bez identifikátoru, proměnná a hodnota.

Syntaxe funkce Python Pandas.melt().

Syntax: pandas.melt(frame, id_vars=Žádné, value_vars=Žádné,

var_name=None, value_name=’value’, col_level=None)

Parametry:

  • rám: DataFrame
  • id_vars[n-tice, seznam nebo ndarray, volitelné] : Sloupce, které se mají použít jako proměnné identifikátoru.
  • value_vars[n-tice, seznam nebo ndarray, volitelné]: Sloupce, které chcete uvolnit. Pokud není zadán, použije všechny sloupce, které nejsou nastaveny jako id_vars.
  • var_name[skalární]: Název, který se má použít pro sloupec „proměnná“. Pokud je Žádná, použije frame.columns.name nebo ‚proměnná‘.
  • název_hodnoty[skalární, výchozí ‚hodnota‘]: Název, který se má použít pro sloupec „hodnota“.
  • col_level[int nebo řetězec, volitelné]: Pokud jsou sloupce MultiIndex, použijte tuto úroveň k roztavení.

Vytvoření ukázkového datového rámce

Zde jsme vytvořili ukázkový DataFrame, který použijeme v tomto článku.

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>

melt () dělat v Pandas Příklad

Níže je uveden příklad, jak můžeme různými způsoby používat funkci Pandas melt() v pandy :

Příklad 1: Pandas melt() Příklad

V tomto příkladu je pd.melt> Funkce se používá k odklopení sloupce „Kurz“ při zachování „Název“ jako proměnné identifikátoru. Výsledný DataFrame má tři sloupce: ‚Name‘, ‚variable‘ (obsahující název sloupce ‚Course‘) a ‚value‘ (obsahující odpovídající hodnoty ze sloupce ‚Course‘).

Python3




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

Výstup:

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

Příklad 2: Použití id_vars a value_vars k melt() Pandas DataFrame

V tomto příkladu je pd.melt> Funkce se používá k odklopení sloupců „Kurz“ a „Věk“ při použití „Jméno“ jako proměnné identifikátoru.

Python3




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

Výstup:

 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 

Příklad 3: Použití var_name a value_name k melt() Pandas DataFrame

V tomto příkladu je pd.melt> funkce se používá s přizpůsobenými názvy sloupců. Sloupec ‚Kurz‘ je neotočný, zatímco jako identifikátor je zachován ‚Název‘. Výsledný DataFrame má sloupce ‚Name‘, ‚ChangedVarname‘ (pro název roztaveného sloupce nastaven na ‚Course‘) a ‚ChangedValname‘ (obsahující odpovídající hodnoty ze sloupce ‚Course‘).

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'> )>

Výstup:

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

Příklad 4: Použití ignore_index s funkcí Pandas.melt().

V tomto příkladu je pd.melt> Funkce se použije k odklopení sloupců „Kurz“ a „Věk“ při použití „Jméno“ jako proměnné identifikátoru. Původní index je ignorován z důvodu ignore_index=True> parametr.

Python3




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

Výstup:

 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