# Pomoćni sadržaj

# Korišćeni podaci
#
# Skup podataka "Aircraft Noise Complaint Data"
# - portal otvorenih podataka San Franciska (SAD)
# - podaci o pritužbama na avionsku buku za područje San Franciska (SAD)
#   - vlasnik podataka: NoiseAbatementOffice@flysfo.com
#   - odeljenje koje objavilo podatke: Airport (SFO)
#   - datum kreiranja: 9. 4. 2016.
#   - datum najnovijeg ažuriranja: 19. 12. 2020.
#   - format podataka: CSV i drugi
# 
# Internet strana:
# https://data.sfgov.org/Transportation/Aircraft-Noise-Complaint-Data/q3xd-hfi8


# %% Biblioteke

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


# %% Zadatak 1

buka = pd.read_csv("Aircraft_Noise_Complaint_Data.csv")

print("Skup podataka:")
print(buka)

print("Broj redova i kolona u podacima:", buka.shape)

print("Tipovi kolona:")
print(buka.dtypes)

print("Nedostajuće vrednosti u podacima:")
print(buka.isna().sum())

print("Uklanjanje nedostajućih vrednosti...")
buka.dropna(inplace=True)

print("Broj redova i kolona u podacima:", buka.shape)


# %% Zadatak 2

buka_odabir = buka.loc[(buka["Community"] == "Santa Cruz") & 
                       (buka["Year"] == 2016), 
                       ["Year", "Month", "Community", "Total Complaints"]]

print("Odabir iz skupa podataka za Santa Kruz i 2016. godinu:")
print(buka_odabir)

plt.figure()
plt.bar(buka_odabir["Month"], buka_odabir["Total Complaints"])

plt.title("Pritužbe u Santa Kruzu u 2016. godini")
plt.xlabel("Mesec")
plt.ylabel("Broj pritužbi")


# %% Zadatak 3

buka_agreg = (
    buka.loc[buka["Year"] == 2010, 
             ["Year", "Month", "Community", "Total Complaints"]]
    .groupby(["Year", "Month"])
    .agg(np.sum)
)

print("Agregirani podaci za 2010. godinu:")
print(buka_agreg)

plt.figure()
plt.barh(buka_agreg.index.get_level_values("Month"), 
         buka_agreg["Total Complaints"],
         height=0.5, color="green", edgecolor="black", linewidth=0.8)

plt.title("Pritužbe u 2010. godini")
plt.xlabel("Broj pritužbi")
plt.ylabel("Mesec")


# %% Zadatak 4

buka_mesta = (buka.loc[(buka["Year"] == 2012) & (buka["Month"] == 11), 
                       ["Year", "Month", "Community", "Total Complaints"]])

print("Podaci za novembar 2012. godine:")
print(buka_mesta)

plt.figure()
plt.pie(buka_mesta["Total Complaints"], 
        labels=buka_mesta["Community"], 
        rotatelabels=True)

plt.title("Pritužbe po zajednicama za novembar 2012. godine", pad=50)


# %% Zadatak 5

buka_period = buka.loc[(buka["Year"] >= 2010) &  
                       (buka["Year"] <= 2012), :]

print("Podaci za period od 2010. do 2012. godine:")
print(buka_period)

plt.figure()
plt.hist(buka_period["Total Number of Callers"])

plt.title("Histogram za broj pozivalaca u periodu od 2010. do 2012. godine")
plt.xlabel("Mesečni broj pozivalaca")
plt.ylabel("Učestalost")


# %% Zadatak 6

plt.figure()
plt.hist(buka_period["Total Number of Callers"], 
         bins=20, log=True, histtype="step")

plt.title("Histogram za broj pozivalaca u periodu od 2010. do 2012. godine")
plt.xlabel("Mesečni broj pozivalaca")
plt.ylabel("Učestalost")


# %% Zadatak 7

buka_g2009 = buka.loc[buka["Year"] == 2009, :]
buka_g2012 = buka.loc[buka["Year"] == 2012, :]

print("Podaci za 2009. godinu:")
print(buka_g2009)
print("Podaci za 2012. godinu:")
print(buka_g2012)

print("Maksimum za broj pritužbi u 2009. godini:")
print(buka_g2009["Total Complaints"].max())
print("Maksimum za broj pritužbi u 2012. godini:")
print(buka_g2012["Total Complaints"].max())

intervali = range(0, 600, 50)
print("Intervali:", intervali)

plt.figure()
plt.hist(buka_g2009["Total Complaints"], 
         bins=intervali, log=True, color="red", label="2009.", alpha=0.4)
plt.hist(buka_g2012["Total Complaints"], 
         bins=intervali, log=True, color="yellow", label="2012.", alpha=0.4)

plt.title("Histogrami za brojeve pritužbi u 2009. i 2012. godini")
plt.xlabel("Mesečni broj pritužbi")
plt.ylabel("Učestalost")
plt.legend(title="Godina")

