pivot tables

import seaborn as sns
import pandas as pd

df = sns.load_dataset('penguins')
df
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
0 Adelie Torgersen 39.1 18.7 181.0 3750.0 Male
1 Adelie Torgersen 39.5 17.4 186.0 3800.0 Female
2 Adelie Torgersen 40.3 18.0 195.0 3250.0 Female
3 Adelie Torgersen NaN NaN NaN NaN NaN
4 Adelie Torgersen 36.7 19.3 193.0 3450.0 Female
... ... ... ... ... ... ... ...
339 Gentoo Biscoe NaN NaN NaN NaN NaN
340 Gentoo Biscoe 46.8 14.3 215.0 4850.0 Female
341 Gentoo Biscoe 50.4 15.7 222.0 5750.0 Male
342 Gentoo Biscoe 45.2 14.8 212.0 5200.0 Female
343 Gentoo Biscoe 49.9 16.1 213.0 5400.0 Male

344 rows × 7 columns

df.pivot_table(index=['species', 'island', 'sex'],
               values=['body_mass_g', 'flipper_length_mm'],
              aggfunc='mean')
body_mass_g flipper_length_mm
species island sex
Adelie Biscoe Female 3369.318182 187.181818
Male 4050.000000 190.409091
Dream Female 3344.444444 187.851852
Male 4045.535714 191.928571
Torgersen Female 3395.833333 188.291667
Male 4034.782609 194.913043
Chinstrap Dream Female 3527.205882 191.735294
Male 3938.970588 199.911765
Gentoo Biscoe Female 4679.741379 212.706897
Male 5484.836066 221.540984
df.pivot_table(index=['species', 'island', 'sex'],
               values=['body_mass_g', 'flipper_length_mm'],
              aggfunc='min')
body_mass_g flipper_length_mm
species island sex
Adelie Biscoe Female 2850.0 172.0
Male 3550.0 180.0
Dream Female 2900.0 178.0
Male 3425.0 178.0
Torgersen Female 2900.0 176.0
Male 3325.0 181.0
Chinstrap Dream Female 2700.0 178.0
Male 3250.0 187.0
Gentoo Biscoe Female 3950.0 203.0
Male 4750.0 208.0