1
0
forked from tdwojak/Python2017
Python2017/labs06/task02.py
2017-12-27 12:54:08 +01:00

146 lines
4.3 KiB
Python
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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():
"""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):
"""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):
"""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',
'Rataje',
'Piątkowo',
'Winogrady',
'Miłostowo',
'Dębiec']
for i in dzielnice:
if i in desc:
return(i)
return 'Inne'
def add_borough(dane):
"""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):
"""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):
"""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):
"""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):
"""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()
print(dane[:5])
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("Ś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()