#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
1. Zaimportuj bibliotkę pandas jako pd.
"""
import pandas as pd

"""
2. Wczytaj zbiór danych `311.csv` do zmiennej data.
"""

data = pd.read_csv("311.csv", low_memory=False)

"""
3. Wyświetl 5 pierwszych wierszy z data.
"""
print(data.head())

"""
4. Wyświetl nazwy kolumn.
"""

print(data.columns)

"""
5. Wyświetl ile nasz zbiór danych ma kolumn i wierszy.
"""
shape = data.shape
print(shape)

"""
6. Wyświetl kolumnę 'City' z powyższego zbioru danych.
"""
print(data['City'])

"""
7. Wyświetl jakie wartoścu przyjmuje kolumna 'City'.
"""
data.City.unique()

"""
8. Wyświetl tabelę rozstawną kolumny City.
"""

t = data.City.value_counts()
print(t)
"""
9. Wyświetl tylko pierwsze 4 wiersze z wcześniejszego polecenia.
"""
t.head(4)

"""
10. Wyświetl, w ilu przypadkach kolumna City zawiera NaN.
"""

p = pd.DataFrame(data['City'].isnull())
t = p[p['City'] == True]
shape = t.shape
rows = shape[0]
print(rows)

"""
11. Wyświetl data.info()
"""
print(data.info())
"""
12. Wyświetl tylko kolumny Borough i Agency i tylko 5 ostatnich linii.
"""
print(data[['Borough', 'Agency']].tail())

"""
13. Wyświetl tylko te dane, dla których wartość z kolumny Agency jest równa
NYPD. Zlicz ile jest takich przykładów.
"""
p = data[data['Agency'] == 'NYPD']
p.Agency.value_counts()
"""
14. Wyświetl wartość minimalną i maksymalną z kolumny Longitude.
"""
data['Longitude'].max()
data['Longitude'].min()

"""
15. Dodaj kolumne diff, która powstanie przez sumowanie kolumn Longitude i Latitude.
"""

data['diff'] = data['Longitude'] + data['Latitude']

"""
16. Wyświetl tablę rozstawną dla kolumny 'Descriptor', dla której Agency jest
równe NYPD.
"""
p = data[data['Agency'] == 'NYPD']
p.Descriptor.value_counts()