diff --git a/.idea/Python2018.iml b/.idea/Python2018.iml new file mode 100644 index 0000000..6711606 --- /dev/null +++ b/.idea/Python2018.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..dcc7426 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..76bd165 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/labs06/README.md b/labs06/README.md index e35b68f..aa96d78 100644 --- a/labs06/README.md +++ b/labs06/README.md @@ -4,15 +4,42 @@ Sprawdź, czy masz zainstalowany pakiet ``pandas``. Jeżeli nie, zainstaluj go. ** zad. 2 (domowe) ** -Jest to zadanie złożone, składające się z kilku części. Całość będzie opierać się o dane zawarte w pliku *mieszkania.csv* i dotyczą cen mieszkań w Poznaniu kilka lat temu. +Jest to zadanie złożone, składające się z kilku części. Całość będzie opierać się o dane zawarte w pliku +*mieszkania.csv* i dotyczą cen mieszkań w Poznaniu kilka lat temu. + 1, Otwórz plik ``task02.py``, który zawiera szkielet kodu, który będziemy rozwijać w tym zadaniu. - 1. 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. - 1. 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ą. - 1. Uzupełnij kod w funkcji ``cheapest_flats(dane, n)``, która wzróci *n* najtańszych ofert mieszkań. Wzrócony obiekt typu ``DataFrame``. - 1. 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*. - 1. Dodaj kolumnę ``Borough``, która będzie zawierać informacje o dzielnicach i powstanie z kolumny ``Localization``. Wykorzystaj do tego funkcję ``find_borough``. - 1. 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. + + 1. 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. + + + 1. 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ą. + + 1. Uzupełnij kod w funkcji ``cheapest_flats(dane, n)``, która wzróci *n* najtańszych ofert mieszkań. + Wzrócony obiekt typu ``DataFrame``. + + + 1. 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*. + + + 1. Dodaj kolumnę ``Borough``, która będzie zawierać informacje o dzielnicach i powstanie z kolumny ``Localization``. + Wykorzystaj do tego funkcję ``find_borough``. + + + 1. 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. + + 1. Napisz funkcje ``mean_price``, która zwróci średnią cenę mieszkania ``room_numer``-pokojowego. + + 1. Uzupełnij funkcje ``find_13``, która zwróci listę dzielnic, które zawierają ofertę mieszkanie na 13 piętrze. - 1. 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. + + 1. 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. + 1. *(dodatkowe)*: Korzystając z pakietu *sklearn* zbuduj model regresji liniowej, która będzie wyznaczać cenę mieszkania na podstawie wielkości mieszkania i liczby pokoi. diff --git a/labs06/task02.py b/labs06/task02.py index 9d96016..909cb14 100755 --- a/labs06/task02.py +++ b/labs06/task02.py @@ -1,14 +1,21 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import pandas as pd +import matplotlib.pyplot as plt +import numpy as np def wczytaj_dane(): - pass + mieszkania = pd.read_csv('mieszkania.csv', + sep=',', + encoding='UTF-8', + usecols=[0,1,2,3,4,5,6]) + return mieszkania def most_common_room_number(dane): - pass + return dane.mode(numeric_only=True)["Rooms"][0] def cheapest_flats(dane, n): - pass + return dane.sort_values(by=['Expected'], ascending=False).head(n) def find_borough(desc): dzielnice = ['Stare Miasto', @@ -19,23 +26,29 @@ def find_borough(desc): 'Winogrady', 'Miłostowo', 'Dębiec'] - pass + for i in dzielnice: + if desc.find(i) + 1: + return (i) + return ('Inne') def add_borough(dane): - pass + dane['Borough'] = dane['Location'].apply(find_borough) + return (dane) def write_plot(dane, filename): - pass + bar = dane["Borough"].value_counts().plot(kind="bar", figsize=(6, 6)) + fig = bar.get_figure() + fig.savefig(filename) def mean_price(dane, room_number): - pass + return dane[dane["Rooms"] == room_number]["Expected"].mean() def find_13(dane): - pass + return dane[dane["Floor"] == 13]["Borough"].unique() def find_best_flats(dane): - pass + return dane[(dane["Borough"] == "Winogrady") & (dane["Floor"] == 1) & (dane["Rooms"] == 3)] def main(): dane = wczytaj_dane() @@ -44,8 +57,8 @@ def main(): print("Najpopularniejsza liczba pokoi w mieszkaniu to: {}" .format(most_common_room_number(dane))) - print("{} to najłądniejsza dzielnica w Poznaniu." - .format(find_borough("Grunwald i Jeżyce")))) + print("{} to najładniejsza dzielnica w Poznaniu." + .format(find_borough("Grunwald i Jeżyce"))) print("Średnia cena mieszkania 3-pokojowego, to: {}" .format(mean_price(dane, 3)))