#!/usr/bin/env python # coding: utf-8 # In[1]: from datetime import datetime print(f'Päivitetty {datetime.now().date()} / Aki Taanila') # # Määrällisen muuttujan luokiteltu jakauma # # Tässä muistiossa käytän **seaborn**-funktioita **histplot** ja **displot**. # # Kaavioiden muotoiluun käytän **matplotlib.pyplot**-funktioita. Jos kaipaat lisää muotoiluja, niin lue https://matplotlib.org/stable/tutorials/introductory/pyplot.html # In[2]: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set_style('whitegrid') tips = sns.load_dataset('tips') # Esimerkkidata ravintolaseurueiden tipeistä tips # ## Luokiteltu jakauma # # **histplot** esittää määrällisen muuttujan luokitellun jakauman histogrammina. # # Lisätietoa https://seaborn.pydata.org/generated/seaborn.histplot.html # In[3]: plt.figure(figsize=(4, 3)) # bins-parametrilla voin määrittää luokkien lukumäärän sns.histplot(data=tips, x='total_bill', bins=6) # **bins**-parametrilla voin määrittää luokkien lukumäärien sijasta myös täsmälliset luokkarajat listana. Luokkarajoja tulkitaan seuraavasti: # * Luokkien alarajat sisältyvät luokkaan, mutta ylärajat eivät. # * Poikkeuksena viimeisen luokan yläraja sisältyy luokkaan. # In[4]: bins = [0, 10, 20, 30, 40, 60] plt.figure(figsize=(4, 3)) sns.histplot(data=tips, x='total_bill', bins=bins) plt.xlabel('laskun loppusumma') plt.ylabel('lukumäärä') # ## Usean muuttujan histogrammit samaan kuvioon # In[5]: # Lista muuttujista muuttujat = ['total_bill', 'tip'] # Kuvio, joka sisältää muuttujat-listan määrittämän määrän kaavioita fig, axs = plt.subplots(nrows=1, ncols=len(muuttujat), figsize=(8, 3)) # Käydään muuttujat-lista läpi: i=järjestysnumero, muuttuja=muuttujan nimi for i, muuttuja in enumerate(muuttujat): sns.histplot(data=tips, x=muuttuja, ax=axs[i]) axs[i].set_ylabel('') axs[0].set_ylabel('lukumäärä') # ylabel vain ensimmäiselle kaaviolle axs[0].set_xlabel('laskun loppusumma') axs[1].set_xlabel('juomaraha') # ## displot # # **displot** mahdollistaa histogrammien tarkastelun muiden kategoristen muuttujien määrittämissä ryhmissä. **kind**-parametrin arvo **'hist'** määrittää että kaaviolajina on **histplot**. # # Seuraavassa tarkastelen tipin (**tip**) suuruutta sukupuolen (**sex**) ja tupakoinnin (**smoker**) määrittämissä ryhmissä. # # Lisätietoa https://seaborn.pydata.org/generated/seaborn.displot.html # # **displot** tuottaa **Facetgrid**-luokan olion, jolla on omat funktionsa otsikointien ym. ominaisuuksien muotoiluun. # Lisätietoa https://seaborn.pydata.org/generated/seaborn.FacetGrid.html # In[6]: g = sns.displot(data=tips, x='tip', row='sex', col='smoker', kind='hist', bins=8, height=2.5) g.set_axis_labels('juomaraha', 'lukumäärä') axes = g.axes.flatten() # Litistetään 2x2 kaaviomatriisin kaaviot listaksi axes[0].set_title('tupakoiva mies') axes[1].set_title('tupakoimaton mies') axes[2].set_title('tupakoiva nainen') axes[3].set_title('tupakoimaton nainen')