V minulé lekci jsme se společně podívali na základy explorační datové analýzy a podrobněji jsme analyzovali proměnné každou zvlášť.
Následující lekce pokryje další část EDA - analýzu více proměnných současně a hledání vztahů mezi nimi.
Data k analýze jsou připravena v souboru salary.csv.
import pandas as pd
import seaborn as sns
%matplotlib inline
V dnešní lekci poprvé použijeme knihovnu seaborn. Seaborn je nadstavbou matplotlibu a přináší nám možnost vykreslit jeden velmi užitečný graf - tzv. heatmapu.
Nejprve si samozřejmě načteme data, která budeme dnes zpracovávat. Jedná se o informace o zaměstnancích, jejich věku, životním stylu, zkušenostech v oboru a platu. Našim cílem je zjistit, zda je mezi jednotlivými vlastnostmi zaměstnanců nějaký vztah.
Data, která dnes budeme analyzovat, jsou náhodně generovaná tak, aby alespoň některé ukázkové příklady hezky vycházely. Generování takových dat je samo o sobě náročný úkol.
data = pd.read_csv("static/salary.csv")
Načtení se zřejmě povedlo, ale jistotu získáme, až když si data prohlédneme.
Pro začátek uděláme klasickou sadu exploračních úkonů, abychom se s daty seznámili.
data
data.info()
data.isnull().sum()
data.describe()
data.hist(figsize=(20, 20));
Data se zdají být na první pohled v pořádku, neobsahují nulové hodnoty ani příliš mnoho odlehlých měření.
V datech máme následující informace:
Pro lepší představu o datech a také pro ukázku dalších technik a metod si do tabulky přidáme nový sloupec, který bude obsahovat měsíční mzdu v českých korunách.
data["salary_czk"] = data.salary * 23
data.describe()
Korelace znamená vzájemný vztah mezi dvěma veličinami nebo procesy. Ve statistice se tím nejčastěji myslí lineární vztah mezi dvěma proměnnými. Míra korelace se vyjadřuje korelačním koeficientem, který nabývá hodnot od -1 po 1.
Korelační koeficient 1 nebo -1 nejčastěji znamená, že je jedna proměnná přímo vypočítaná z druhé a pro další analýzu většinou nemá žádný přínos. V praxi se korelační koeficienty těmto krajním hodnotám jen přibližují a naznačují tím, že stojí za to vztah mezi nimi prozkoumat hlouběji.
Pozor na chybné závěry vyplývající z interpretace korelačních koeficientů. Korelace je nutnou, ale nikoli postačující podmínkou kauzality. Korelace znamená, že se dvě proměnné mění stejným způsobem, ale to nemusí znamenat, že nárůst jedné z nich zapříčiňuje nárůst druhé.
Příklad z Wikipedie:
Na webu spurious correlations je pak k nalezení celá řada podezřelých korelací, u nichž si kauzalitu lze představit jen těžko. Věděli jste například, že s klesajícím počtem svateb v Kentucky klesá i počet lidí, kteří se utopili po pádu z rybářské lodě? Náhoda? :)
Korelace lze identifikovat několika různými způsoby. Základní rozdělení je závislé na typu proměnných, které zkoumáme. Možné kombinace jsou:
První možnost je ta asi nejběžnější a proto je pro ni v pandasu vše připraveno a můžeme se rovnou podívat na všechny možné kombinace proměnných. K tomu nám poslouží scatter_matrix
z modulu pandas.plotting
.
from pandas.plotting import scatter_matrix
scatter_matrix(data, figsize=(20,20));