#008 Series, vremenska serija
Vremenske serije
Ovaj post posvećen je podacima za čiju analizu i procesiranje vremenski trenutak igra važnu ulogu. Primeri su signali/serije koje srećemo:
- u radu na berzi, dnevni kurs valute,
- prilikom merenja procesa koji se menjaju na dnevnom nivou: temperatura, zagađenost vazduha
- broj dnevnih putnika koje preveze jedna aviokompanija
- broj gostiju/turista koji posete jednu zemlju/grad/hotel u jednom danu.
Da bismo radili sa serijama (Series) koristićemo biblioteku Pandas. Serija predstavlja zapravo dva NumPy niza: .index i .values. Prvi koristimo da bismo sačuvali vremenski indeks. Ovo može da bude redni broj (0, 1, 2, 3 .. ili 10, 20, 30), datum-godina/mesec/dan ili vreme/sat/minut/sekund. Drugi deo predstavlja same vrednosti serije i nalazi se u “serija.values” nizu. Ovde dakle čuvamo podatke o temperaturi, broju turista i slično.
Pogledajmo kako možemo ručno napraviti neke jednostavne serije.
Ono što je važno napomenuti za serije jeste način na koji možemo pristupati samim elementima i prikazati seriju grafički.
Pozabavimo se sada nekim pravim, istorijske serijama. One su najčešće sačuvane u formatu .csv i prva kolona može da predstavlja datum. Pogledajmo stoga datoteku “daily-total-female-births.csv” (koristite desni klik i koristite save-as kako biste sačuvali datoteku). Radi se o datasetu gde je beležen broj ženske dece koje su rođene u jednom danu negde u Kaliforniji. Pređimo na naš kod:
Učitali smo seriju i uradili sledeće: shvatili smo da postoji format u Python-u koji struktuira datum-vreme i zove se timestamp, iscrtali smo seriju i videli da je za godinu dana prikazano koliko je dece rođeno svakog dana. Možemo opisati ovu seriju osnovnim statističkim parametrima. Pogledajmo naredbu .describe().
U slučaju da nas zanima samo jedan mesec, na primer jul, možemo da napravimo novu seriju – jul. Nju sada možemo nezavisno da analiziramo. Možemo odrediti koliko se najmanje dece rodilo i koji je datum to bio.
Rad sa serijama daje nam mogućnost da kreiramo neke naprednije grafike: histogram i boxplot.
Boxplot je vid grafičkog prikaza za naš primer koji daje za svaki mesec srednju vrednost – zelena horizontalna linija. U plavom pravougaoniku smešteno je 50% svih vrednosti. Takođe, mogu biti prikazani i outlier-i kao pojedinačne tačke. Boxplot je veoma koristan kada želimo da pratimo trend i da ispitamo da li imamo rast ili ne.
Kako je zapravo napravljen boxplot? Prvo je napravljena promenljiva grupe. Ona sadrži grupacije po mesecima – M (Month).
Sami proverite šta dobijate za sledeći ispis, pa će struktura grupe, po kojoj se vrše iteracije postati jasnija:
for x in grupe:
print (x[1].values)
print (x[1].index)
Promenljiva meseci predstavlja matricu od 12 kolona čije su vrednosti brojevi rođene dece u tim mesecima. Dakle, broj redova je 31. U slučaju da mesec ima manje dana, ove vrednosti su popunjene takozvanim NaN (Not a Number) vrednostima. Ovaj deo koda pojasnićemo i kasnije kada budemo detaljnije analizirali DataFrame tip podataka.