Pandas Groupby Průměr

Pandas Groupby Prumer



Když sečteme dvě nebo více hodnot a jejich součet vydělíme celkovým počtem sečtených hodnot, výsledkem je průměr. Pandas Mean vrací průměr dat nebo hodnoty podél dané osy. Série s průměrem přes osu bude vrácena pandami, pokud je na datový rámec aplikována metoda mean(). Pandy vrátí číselnou hodnotu (jedno číslo), pokud je v řadě použito „mean()“. Funkce lze aplikovat na kategorie po vytvoření skupin kategorií. Je to jednoduchý nápad, ale vysoce účinná technika, která se často používá v datové vědě. Umožňuje nám vytvořit souhrn dat pro každou skupinu, aplikovat úpravy specifické pro skupinu a provádět filtraci dat. Pomocí funkce groupby() lze objekt rozdělit, použít funkci a poté kombinovat produkty. Pomocí toho lze seskupovat velké datové sady a se skupinami lze provádět operace.

Jak používat metodu groupby.mean() v Pandas?

Pro výpočet průměru datového rámce nebo průměru konkrétních sloupců datového rámce můžeme použít funkci groupby.mean(). Jak jej použít, si ukážeme na následujících příkladech.







Příklad # 01: Určení průměru sloupce s jedním celým číslem seskupením dat jednoho sloupce

Pomocí funkce pd.DataFrame() nejprve vytvoříme datový rámec, abychom mohli rozdělit data sloupce nebo sloupců datového rámce do skupin a poté zjistit jejich střední hodnotu. Před vytvořením datového rámce musíme importovat modul pandas spolu s knihovnou numpy.





Jak je vidět, vytvořili jsme náš datový rámec pomocí slovníku pandas. V našem datovém rámci df máme 3 sloupce, tj. „položky“, „výrobce“ a „množství“. Ve sloupci 'položky' máme uloženy hodnoty ('košile', 'kravata', 'kalhoty', 'košile', 'kravata', 'kalhoty', 'košile', 'kalhoty', 'kalhoty', ' tie'), zatímco  sloupce 'výrobce' a  'množství' obsahující hodnoty ('italie', 'francie', 'china', 'francie',  'china', 'italy', 'china', 'italy', 'francie', 'china') a (13, 16, 21, 32, 26, 41, 24, 42, 12, 15). Seskupíme hodnoty ve sloupci výrobce a určíme střední hodnotu množství pro každého jednotlivého výrobce.





Hodnota výrobce „čína“ má střední hodnotu množství 21,5, střední hodnota množství pro „francie“ je 20,0 a střední hodnota množství pro „Itálie“ je 32,0. Můžeme také určit index výstupu pomocí funkce reset_index s funkcí groupby.mean().



Příklad č. 02: Najděte průměr jednoho plovoucího sloupce seskupením dat jednoho sloupce

Viděli jsme, jak můžeme po seskupení dat najít průměr celého sloupce. Nyní zkusme jiný sloupec datového typu, jako je float. Pomocí funkce pd.DataFrame() bude vytvořen datový rámec s alespoň jedním sloupcem s plovoucími hodnotami.

Vložením slovníku do pd.DataFrame() jsme vytvořili datový rámec se třemi sloupci. Sloupec 'jméno' obsahuje jména některých náhodných hráčů ('Sam', 'Jay', 'Leo', 'Mike', 'Will', 'Billy', 'Jhonny', 'Lara', 'Hanna', 'Tony'), sloupec 'tým' představující tým, do kterého každý hráč patří ('A', 'A', 'B',  'A', 'B', 'A', 'C', 'B' ', 'C', 'C') a sloupec 'height' ukládá výšky každého hráče jako plovoucí hodnotu (5.6, 5.4, 6.3, 5.2, 5.5, 6.4, 5.6, 5.8, 6.0, 5.2). Seskupíme data do sloupce „tým“ a určíme střední hodnotu výšky pro každou odlišnou hodnotu „tým“.

Můžete vidět, že průměrná hodnota výšky hráčů týmu A je 5,65, zatímco průměrná výška hráčů týmu B a C je 5,866 a 5,6.

Příklad č. 03: Určete průměr více sloupců pomocí funkce groupby.mean().

V předchozích příkladech jsme určili průměr jednoho sloupce. Lze však také určit průměr mnoha sloupců pro každou skupinu. Po importu pand a numpy modulů vytvoříme datový rámec s více než jedním číselným sloupcem.

V nově vytvořeném datovém rámci jsou tři sloupce s popisky ‚název‘, ‚skóre‘ a ‚shody‘. Názvy sloupců s datovými hodnotami jako řetězec  ('Ron', 'Jim', 'Dany', 'Jim', 'Jim', 'Dany', 'Ron', 'Ron', 'Dany', 'Jim' ), zatímco „skóre“ a „shody“ se skládají z číselných údajů jako (3, 4, 2, 4, 1, 5, 2, 3, 1, 2) a (2, 3, 1, 2, 1, 3 , 4, 1, 2, 1). Nyní najdeme průměr sloupce „skóre“ a „shody“ po seskupení dat sloupce „název“. K tomu poslouží funkce groupby.mean().

Lze si všimnout, že skupina ‚Dany‘ má průměrné skóre 2,66 ve 2,00 zápasech. Skupina Jim má průměrné skóre 2,75 a průměrná hodnota odehraných zápasů je 1,75. Zatímco skupina ‚Ron‘ má průměrnou hodnotu skóre 2,66 a průměrná hodnota odehraných zápasů je 2,33.

Průměr skupiny kategorií podle objektu lze také vypočítat pomocí metody agg(). Střední hodnotu dodáme jako argument funkci agg(). Pro agregaci pomocí jedné nebo více operací napříč danou osou můžeme použít funkci agg().

Výstup je stejný jako předtím.

Příklad č. 04: Určete průměr konkrétních sloupců seskupením více sloupců

V příkladech 1, 2 a 3 jsme seskupili hodnoty nebo data jednoho sloupce. Nyní seskupíme více sloupců pomocí seznamu štítků sloupců uvnitř funkce groupby() a pak najdeme průměrnou hodnotu pro každou skupinu. Do funkce pd.Dataframe() bude předán slovník ‚d‘ jako vstup pro vytvoření datového rámce.

Vytvořili jsme požadovaný datový rámec. Ve sloupci 'sporty' jsou uloženy názvy některých sportů ('Badminton', 'fotbal', 'tenis', 'basketbal', 'fotbal', 'tenis', 'basketbal', 'fotbal', 'Badminton', ' basketbal, 'basketbal', 'tenis'), názvy zemí ('Čína', 'Rusko', 'Itálie', 'Španělsko', 'Rusko', 'Itálie', 'Čína', 'Itálie', ' Španělsko“, „Čína“, „Rusko“, „Itálie“) jsou uloženy ve sloupci „země“. Zatímco ve sloupci ‚výhra‘ máme uložen počet zápasů vyhraných každou zemí v každém sportu (13, 10, 6, 7, 10, 12, 7, 11, 8, 13, 11, 6). Použijme funkci groupby.mean() k nalezení střední hodnoty sloupce „výhra“ seskupením sloupců „sport“ a „země“.

Funkce úspěšně určila průměry hodnot sloupce „výhra“ pro každý sport v zemi. Seskupený datový rámec lze resetovat pomocí funkce reset_index(), která také vygeneruje nový index a poskytne mu vhodnou strukturu datového rámce.

Pro každý řádek datového rámce je přidán index. K uspořádání výsledků do atraktivní tabulky můžeme také použít funkci pivot().

Závěr

V tomto tutoriálu jsme diskutovali o tom, co je průměr nebo průměr čísel a jak najít střední hodnotu konkrétního sloupce (jednoho nebo více) po seskupení sloupce nebo sloupců datového rámce. V tomto článku jsme implementovali několik příkladů, abychom vás naučili, jak určit průměr jednoho sloupce typu celé číslo nebo float seskupením dat jednoho sloupce; jak určit průměr více sloupců pomocí funkce groupby.mean(); a také jak určit průměr konkrétních sloupců seskupením více sloupců.