diff --git a/labs05/Lab05.ipynb b/labs05/Lab05.ipynb index cbd7e24..80a37b8 100644 --- a/labs05/Lab05.ipynb +++ b/labs05/Lab05.ipynb @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" diff --git a/labs05/README.md b/labs05/README.md index 1d86fa4..57d75f8 100644 --- a/labs05/README.md +++ b/labs05/README.md @@ -2,16 +2,20 @@ Napisz funkcję ``suma``, która przyjmnie jeden argument: listę liczb i zwróci ich sumę. ** zad. 1 ** -Zaimportuj z zadania 0 fukcje ``suma``. Korzystając z tej fukcji i tablicy ``sys.argv`` oblicz i wyświetl sumę argumentów, jakie zostały przekazane do proramu. Załóź, że argumentami do programu będą tylko liczby zmiennoprzecinkowe. +Zaimportuj z zadania 0 fukcje ``suma``. Korzystając z tej fukcji i tablicy ``sys.argv`` oblicz i wyświetl sumę argumentów, +jakie zostały przekazane do proramu. Załóź, że argumentami do programu będą tylko liczby zmiennoprzecinkowe. ** zad. 2 ** -Uodpornoj program z zad. 1 w następujący sposób: do programu mogą zostać przekazane argumenty, które nie mają wartości liczbowej (przyjmijmy, że ich wartość to 0). Skorzystaj z mechanizmu wyjątków: złap wyjątek, jeżeli argumenty nie da się skonwertować na liczbę zmiennoprzecinkową. +Uodpornoj program z zad. 1 w następujący sposób: do programu mogą zostać przekazane argumenty, które nie mają wartości liczbowej +(przyjmijmy, że ich wartość to 0). Skorzystaj z mechanizmu wyjątków: złap wyjątek, jeżeli argumenty nie da się skonwertować na +liczbę zmiennoprzecinkową. ** zad. 3 ** Przekształć rozwiązanie zadania drugiego w taki sposob, żeby korzystało z biblioteki ``argparse`` zamiast z z listy ``sys.argv``. ** zad. 4 (Domowe) ** -Plik ``task04.py`` zawiera kod prorgamu, który działa jak popularne narzędzie unixowe ``wc`` (Word Counter): zlicza liczbę linii, wyrazów i znaków. Aktualnie program potrafi działać wyłącznie na wejściu podanym z klawiatury. Dodaj do niego opcje programu: +Plik ``task04.py`` zawiera kod prorgamu, który działa jak popularne narzędzie unixowe ``wc`` (Word Counter): zlicza liczbę +linii, wyrazów i znaków. Aktualnie program potrafi działać wyłącznie na wejściu podanym z klawiatury. Dodaj do niego opcje programu: * domyślnie program ma zliczać na wejściu z klawiatury (stdin) i wyświetlać wszystkie 3 liczby. * Jeżeli został podany przełącznik `-l`, to to ma zostać zwrócona tylko liczba linii. * Jeżeli został podany przełącznik `-w`, to to ma zostać zwrócona tylko liczba słów. diff --git a/labs05/task00.py b/labs05/task00.py index ea96b5e..9c8c8a8 100644 --- a/labs05/task00.py +++ b/labs05/task00.py @@ -1,11 +1,21 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +import sys + def suma(liczby): - pass + suma_liczb = 0 + for i in liczby: + try: + suma_liczb += float(i) + except: + suma_liczb += 0 + return suma_liczb def main(): - print(summa([1, 2, 3, 4])) + print(suma([1, 2, 3, 4])) if __name__ == "__main__": main() +else: + suma(sys.argv[1:]) diff --git a/labs05/task01.py b/labs05/task01.py index e69de29..4c611ca 100644 --- a/labs05/task01.py +++ b/labs05/task01.py @@ -0,0 +1,3 @@ +import task00 + +print(task00.suma([5.2,3.4,4.5])) diff --git a/labs05/task02.py b/labs05/task02.py index e69de29..dc6b5de 100644 --- a/labs05/task02.py +++ b/labs05/task02.py @@ -0,0 +1,3 @@ +import task00 + +print(task00.suma(['def',3.4,4.5])) diff --git a/labs06/README.md b/labs06/README.md index e35b68f..afca275 100644 --- a/labs06/README.md +++ b/labs06/README.md @@ -4,13 +4,18 @@ 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. 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. 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. diff --git a/labs06/task02.py b/labs06/task02.py index 9d96016..44e2ef8 100755 --- a/labs06/task02.py +++ b/labs06/task02.py @@ -1,14 +1,22 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import pandas as pd +import matplotlib +import matplotlib.pyplot as plt + def wczytaj_dane(): - pass + dane = pd.read_csv('mieszkania.csv', + sep=',', + encoding='utf-8') + return dane def most_common_room_number(dane): - pass + return dane.Rooms.mode()[0] def cheapest_flats(dane, n): - pass + dane = dane.sort_values('Expected',ascending=True) + return dane.head(n) def find_borough(desc): dzielnice = ['Stare Miasto', @@ -19,23 +27,35 @@ def find_borough(desc): 'Winogrady', 'Miłostowo', 'Dębiec'] - pass + + for dzielnica in dzielnice: + if desc.find(dzielnica)>=0: + return dzielnica + + return 'Inne' def add_borough(dane): - pass + borough = [] + for current_location in dane: + borough.append(find_borough(current_location)) + return pd.Series(borough) def write_plot(dane, filename): - pass + dane['Borough'].hist() + plt.savefig(filename) def mean_price(dane, room_number): - pass + dane = dane[dane.Rooms == room_number] + return round(dane.Expected.mean(),2) def find_13(dane): - pass + dane = dane[dane.Floor == 13] + return list(dane.Borough) def find_best_flats(dane): - pass + dane = dane[(dane.Borough=='Winogrady') & (dane.Rooms==3) & (dane.Floor == 1)] + return dane def main(): dane = wczytaj_dane() @@ -44,11 +64,22 @@ def main(): print("Najpopularniejsza liczba pokoi w mieszkaniu to: {}" .format(most_common_room_number(dane))) + najtansze = cheapest_flats(dane,10) + print("{} to najłądniejsza dzielnica w Poznaniu." - .format(find_borough("Grunwald i Jeżyce")))) + .format(find_borough("Grunwald i Jeżyce"))) + + dzielnice = add_borough(dane['Location']) + dane['Borough'] = dzielnice.values + + write_plot(dane,'wykres.png') print("Średnia cena mieszkania 3-pokojowego, to: {}" .format(mean_price(dane, 3))) + find_13(dane) + + find_best_flats(dane) + if __name__ == "__main__": main() diff --git a/labs06/wykres.png b/labs06/wykres.png new file mode 100644 index 0000000..2acb887 Binary files /dev/null and b/labs06/wykres.png differ