# učitavanje biblioteka za rad sa Serije
from pandas import Series
import numpy as np
# Serije možemo dobiti iz:
# liste
s1 = Series([1,2,'abc',4,5])
# numeričkog niza
array = np.array([1,2,3,4,5,9])
s2 = Series(array)
# rečinka
d = {1:'a','drugi podatak':0.2,3:'tri'}
s3 = Series(d)
s4 = Series([[1,'lisa',2],0.5,5], index=[0.1,'string',6])
print((s1))
print('tip podatka s1 je: ', type(s1))
print('tip podatka 1. i 3. elementa iz s1 : ', type(s1[0]), ',',type(s1[2]))
print((s2))
print('tip podatka s2 je: ', type(s2))
print('tip podatka elementa iz s2 : ', type(s1[0]))
print((s3))
print('tip podatka s2 je: ', type(s3))
print('tip podatka elementa s3 sa indeksom 1 : ',s3[1],'je', type(s3[1]))
print('tip podatka elementa s3 sa indeksom 2 : ', s3[2], 'je', type(s3[2]))
print(s4)
# Kako dobiti vrednosti koje se nalaze u podatku tipa Series?
s3.values
# Vrednost prvog indeksa
s3.values[0]
# Dodela nove vrednosti prvom indeksu
s3.values[0]='aaa'
s3.values[0]
# Kako dobiti indekse koji se nalaze u podatku tipa Series?
s1.index
s3.index
# Kako pristupiti elementima podatka tipa Series ?
# prvo ćemo odstampati s1 i s3 radi lakseg pracenja narednog koda
print('s1: ')
print(s1)
print() # štampamo prazan red radi lakšeg praćenja koda
print('s3: ')
print(s3)
# pristupanje elementima podatka tipa Series može se učiniti na dva načina
# korišćenjem [] kao kod NumPy nizova
print()
print('Prvi element s3 - element sa indeksom 0 je: ',s3[0])
print()
# korišćenjem iloc[index elementa koji želimo, kada su indeksi brojevi]
print('Drugi element s3 je : ',s3.iloc[1])
#print(s3.iloc['drugi podatak':]) #- ova naredba daće grešku pošto je iloc predviđena za brojno indeksiranje
# korišćenjem loc[ime indeksa elementa koji želimo]
print()
print('Element s3 čiji je indeks "drugi podatak" je: ',s3.loc['drugi podatak'])
print('Prvi element u s1: ', s1.loc[0]) # ova naredba se izvršava bez greške,
# print(s3.loc[0]) # ova naredba je pogrešna jer nula nije naziv nijednog indeksa u s3
# Kako iseći deo podatka tipa Series?
# tzv. slicing Series
# vrši se na sledeći način: ime_Series[indeks elementa koji se prvi uzima : indeks elementa do kojeg se vrši isecanje]
# ukoliko je izostavljen indeks pre: podrazumeva se da se kreće od prvog elementa u nizu, a ako je izostavljen indeks posle :
# podrazumeva se da se uzimaju elementi do kraja Series
print(s1[0:2])
print()
print(s1.iloc[0:2])
print()
print(s3['drugi podatak':])
print()
print(s3.loc['drugi podatak':])
print()
# isecanje dela Series se može primenjivati sa sa iloc i loc