diff --git a/labs06/task02.py b/labs06/task02.py index 9d96016..2123297 100755 --- a/labs06/task02.py +++ b/labs06/task02.py @@ -1,16 +1,45 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import scipy.stats as stats +import sklearn +from sklearn import linear_model + + def wczytaj_dane(): - pass + """Napisz funkcje, która wczyta zestaw danych z pliku *mieszkania.csv* i zwróci obiekt typu *DataFrame*. + Jeżeli wszystko zostało zrobione poprawnie,powinno się wyśtwietlić 5 pierwszych wierszy.""" + + flat_data = pd.read_csv('mieszkania.csv', sep = ',', encoding = 'utf-8') + flat_data = pd.DataFrame(flat_data) + + return flat_data def most_common_room_number(dane): - pass + """Uzupełnij funkcję ``most_common_room_number``, która zwróci jaka jest najpopularniejsza liczba pokoi w ogłoszeniach. + Funkcji powinna zwrócić liczbę całkowitą.""" + + pokoje = dane['Rooms'] + return(pokoje.value_counts(sort=True).index[0]) def cheapest_flats(dane, n): - pass + """Uzupełnij kod w funkcji ``cheapest_flats(dane, n)``, która wzróci *n* najtańszych ofert mieszkań. + Wzrócony obiekt typu ``DataFrame``""" + + posortowane = dane.sort_values(by='Expected') + ceny = posortowane['Expected'] + return(ceny.head(n).to_frame()) + def find_borough(desc): + """Napisz funkcje ``find_borough(desc)``, która przyjmuje 1 argument typu *string* + i zwróci jedną z dzielnic zdefiniowaną w liście ``dzielnice``. + Funkcja ma zwrócić pierwszą (wzgledem kolejności) nazwę dzielnicy, która jest zawarta w ``desc``. + Jeżeli żadna nazwa nie została odnaleziona, zwróć *Inne*.""" + dzielnice = ['Stare Miasto', 'Wilda', 'Jeżyce', @@ -19,23 +48,69 @@ def find_borough(desc): 'Winogrady', 'Miłostowo', 'Dębiec'] - pass + for i in dzielnice: + if i in desc: + return(i) + + return 'Inne' def add_borough(dane): - pass + """Dodaj kolumnę ``Borough``, która będzie zawierać informacje o dzielnicach i powstanie z kolumny ``Localization``. + Wykorzystaj do tego funkcję ``find_borough``""" + + lokacja= dane['Location'] + dzielnice = [] + for rekord in dane['Location']: + new_col = find_borough(rekord) + dzielnice.append(new_col) + + dane['Borough'] = dzielnice + def write_plot(dane, filename): - pass + """Uzupełnił funkcje ``write_plot``, która zapisze do pliku ``filename`` wykres słupkowy przedstawiający liczbę ogłoszeń + mieszkań z podziałem na dzielnice.""" + + add_borough(dane) + hist_data = dane['Borough'].value_counts() + #plt.figure() + + wyplot = hist_data.plot(kind='bar',alpha=0.5, title="Liczba ogłoszeń mieszkań z podziałem na dzielnice", fontsize=5, figsize=(7, 5)) + wyplot.set_xlabel("Dzielnice") + wyplot.set_ylabel("Liczba ogłoszeń") + + #plt.show() + + fig = wyplot.get_figure() + fig.savefig(filename) + def mean_price(dane, room_number): - pass + """Napisz funkcje ``mean_price``, która zwróci średnią cenę mieszkania ``room_numer``-pokojowego.""" + + pokoj = dane.loc[dane['Rooms'] == room_number] + return(pokoj['Expected'].agg('mean')) + def find_13(dane): - pass + """Uzupełnij funkcje ``find_13``, która zwróci listę dzielnic, które zawierają ofertę mieszkanie na 13 piętrze.""" + + add_borough(dane) + lista13pietra = [] + finded = dane['Borough'].loc[dane['Floor'] == 13] + for j in finded: + lista13pietra.append(j) + return lista13pietra def find_best_flats(dane): - pass + """Napisz funkcje ``find_best_flats``, która zwróci wszystkie ogłoszenia mieszkań, które znajdują się na Winogradach, + mają 3 pokoje i są położone na 1 piętrze.""" + + add_borough(dane) + finded_best = dane.loc[(dane['Floor'] == 1) & (dane['Rooms'] == 3) & (dane['Borough'] == 'Winogrady')] + return finded_best + def main(): dane = wczytaj_dane() @@ -45,10 +120,26 @@ def main(): .format(most_common_room_number(dane))) print("{} to najłądniejsza dzielnica w Poznaniu." - .format(find_borough("Grunwald i Jeżyce")))) + .format(find_borough("Grunwald i Jeżyce"))) print("Średnia cena mieszkania 3-pokojowego, to: {}" .format(mean_price(dane, 3))) + find_borough("Grunwald i Jeżyce") + + print(cheapest_flats(dane, 5)) + + print(add_borough(dane)) + + write_plot(dane, 'liczbaogloszen.png') + + print(mean_price(dane, 7)) + + print(find_13(dane)) + + print(find_best_flats(dane)) + + + if __name__ == "__main__": main()