# 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


# %% Zadatak 1

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

print("Skup podataka (početak):")
print(buka.head())
print("Tipovi kolona:")
print(buka.dtypes)


# %% Zadatak 2

print("Broj redova u podacima:", buka.shape[0])


# %% Zadatak 3

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

buka.dropna(inplace=True)

print("Broj redova u podacima nakon uklanjanja nedostajućih vrednosti:", 
      buka.shape[0])


# %% Zadatak 4

print("Broj različitih zajednica:", buka["Community"].unique().size)


# %% Zadatak 5

print("Najmanji broj pritužbi u mesecu:", buka["Total Complaints"].min())

print("Prosečan broj pritužbi u mesecu:", 
      np.around(buka["Total Complaints"].mean(), 2))

print("Najveći broj pritužbi u mesecu:", buka["Total Complaints"].max())


# %% Zadatak 6

buka_gekstrem = buka["Total Complaints"].max()

buka_gekstrem_podaci = buka.loc[
    buka["Total Complaints"] == buka_gekstrem,
]
print("Podaci za slučaj najvećeg broja pritužbi u mesecu:")
print(buka_gekstrem_podaci)


# %% Zadatak 7

print("Deskriptivne statistike za broj pritužbi u mesecu u Palu Altu:")
print(buka.loc[
    buka["Community"] == "Palo Alto", "Total Complaints"].describe())


# %% Zadatak 8

buka_zaj_agreg = (
    buka.loc[:, ["Community", "Total Number of Callers"]]
    .groupby(["Community"])
    .agg(np.mean)
)

print("Prosečan broj pozivalaca u mesecu po zajednicama")
print(buka_zaj_agreg.sort_values("Total Number of Callers", ascending=False))


# %% Zadatak 9

buka_2018 = buka.loc[
    buka["Year"] == 2018,
]

print("Skup podataka za 2018. godinu (početak):")
print(buka_2018.head(10))


# %% Zadatak 10

buka_2018 = buka_2018.drop(columns=["Community"])
print("Kolone skupa podataka za 2018. godinu nakon brisanja:")
print(buka_2018.columns)


# %% Zadatak 11

buka_2018["Month"] = buka_2018["Month"].replace(
    {
        1: "JAN",
        2: "FEB",
        3: "MAR",
        4: "APR",
        5: "MAY",
        6: "JUN",
        7: "JUL",
        8: "AUG",
        9: "SEP",
        10: "OCT",
        11: "NOV",
        12: "DEC",
    }
)

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

print("Skup podataka za 2018. godinu (početak):")
print(buka_2018.head(10))


# %% Zadatak 12

print("Agregirani podaci po mesecima za 2018. godinu:")
print(buka_2018.groupby(["Year", "Month"], sort=False).agg(np.sum))

