Mindig jó ötlet megvizsgálni az adatainkat, mielőtt elkezdjük az ábrázolást. Beolvashatjuk az adatokat egy pandas adatkeretbe, és megjeleníthetjük az első 10 sort:
import pandas as pd# Read in data and examine first 10 rows flights = pd.read_csv('data/formatted_flights.csv') flights.head(10)
A járatok érkezési késése percben van megadva, és a negatív értékek azt jelentik, hogy a járat korábban érkezett (kiderült, hogy a járatok gyakran hajlamosak korábban érkezni, csak soha nem akkor, amikor mi vagyunk rajta!). Több mint 300 000 járat van, amelyek minimális késése -60 perc, maximális késése pedig 120 perc. Az adatkeret másik oszlopa a légitársaság neve, amelyet összehasonlításokhoz használhatunk.
A hisztogram segítségével remekül el lehet kezdeni egyetlen változó vizsgálatát. A hisztogram a változót tárolókra osztja, minden tárolóban megszámolja az adatpontokat, és a tárolókat az x-tengelyen, a számokat pedig az y-tengelyen mutatja. A mi esetünkben a rekeszek a járatok késését jelképező időintervallumot jelentik, a számlálás pedig az adott intervallumba eső járatok számát. A binszélesség a hisztogram legfontosabb paramétere, és mindig ki kell próbálnunk néhány különböző binszélesség-értéket, hogy kiválaszthassuk az adatainkhoz legmegfelelőbbet.
Az alapvető hisztogram elkészítéséhez Pythonban használhatjuk a matplotlib vagy a seaborn programot. Az alábbi kód mindkét könyvtárban olyan függvényhívásokat mutat, amelyek egyenértékű ábrákat hoznak létre. A plot hívásoknál a binwidth-et a binsek számával adjuk meg. Ehhez a plothoz 5 perces binereket fogok használni, ami azt jelenti, hogy a binerek száma az adatok tartománya (-60 és 120 perc között) osztva a binwidth-tel, 5 perccel ( bins = int(180/5)).
A legtöbb alapvető hisztogramhoz, Én a matplotlib kódot választanám, mert az egyszerűbb, de a későbbiekben a seaborn distplot függvényt fogjuk használni különböző eloszlások létrehozására, és jó, ha ismerjük a különböző lehetőségeket.
Hogyan jöttem rá, hogy 5 perc a binwidth? Az egyetlen módja az optimális binwidth kitalálásának, ha több értéket is kipróbálsz! Az alábbiakban egy kódot találsz ugyanennek az ábrának a matplotlib-ben történő elkészítéséhez különböző binszélességekkel. Végső soron nincs helyes vagy helytelen válasz a binwidth-re, de én 5 percet választottam, mert szerintem ez reprezentálja legjobban az eloszlást.
A binwidth megválasztása jelentősen befolyásolja a kapott ábrát. A kisebb binszélességek rendezetlenné tehetik a grafikont, a nagyobb binszélességek viszont elfedhetik az adatok árnyalatait. A Matplotlib automatikusan kiválaszt egy ésszerű binwidth-et az Ön számára, de én magam szeretem megadni a binwidth-et, miután több értéket kipróbáltam. Nincs igazán jó vagy rossz válasz, próbáljon ki néhány lehetőséget, és nézze meg, melyik működik a legjobban az adott adataihoz.
A hisztogramok nagyszerű módja annak, hogy elkezdjük egy egyetlen kategóriából vett változó feltárását. Amikor azonban egy változó több kategóriára vonatkozó eloszlásait szeretnénk összehasonlítani, a hisztogramoknak olvashatósági problémái vannak. Ha például össze akarjuk hasonlítani az érkezési késések eloszlásait a légitársaságok között, nem működik jól az a megközelítés, hogy minden egyes légitársaság számára hisztogramokat készítünk ugyanazon a diagramon:
(Vegyük észre, hogy az y-tengelyt normalizáltuk, hogy figyelembe vegyük a légitársaságok közötti eltérő járatszámot. Ehhez adja meg a norm_hist = True argumentumot a sns.distplot függvényhíváshoz.)
Ez a diagram nem túl hasznos! A sok átfedő sáv szinte lehetetlenné teszi a légitársaságok közötti összehasonlítást. Nézzünk meg néhány lehetséges megoldást erre a gyakori problémára.
Megoldás #1: egymás melletti hisztogramok
A légitársaságok hisztogramjainak átfedése helyett egymás mellé helyezhetjük őket. Ehhez létrehozzuk az egyes légitársaságok érkezési késéseinek listáját, majd ezt listák listájaként átadjuk a plt.hist függvényhívásba. Meg kell adnunk, hogy az egyes légitársaságokhoz különböző színeket használjunk, és egy címkét, hogy meg tudjuk őket különböztetni egymástól. A kód, beleértve az egyes légitársaságok listáinak létrehozását, az alábbiakban található: