forked from tdwojak/Python2017
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
a0fecba5c4 | |||
26afa652a5 | |||
f61d161938 | |||
5d25e165c4 | |||
dc5fb3f34b | |||
fd67d4b96f | |||
1599eb71ba | |||
524eefe436 | |||
7ef244fb88 | |||
d8025c91ff | |||
378fee7582 |
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# wiki files
|
||||||
|
Python2017.wiki/*
|
||||||
|
|
||||||
|
# Jupyter Files
|
||||||
|
*/.ipynb_checkpoints/*
|
||||||
|
|
||||||
|
# Rope files
|
||||||
|
.ropeproject
|
||||||
|
*/.ropeproject
|
||||||
|
|
||||||
|
# Labs temp files
|
||||||
|
labs03/haslo2.txt
|
@ -1,24 +1,38 @@
|
|||||||
ID | labs02:task07 | labs02:task08 | labs02:task09 | labs02:task10 | labs02:task11
|
ID | labs02:task07 | labs02:task08 | labs02:task09 | labs02:task10 | labs02:task11 | labs03 | labs04 | labs06 | Punkty | Ocena |
|
||||||
---------|-----------------|-----------------|-----------------|-----------------|---------------
|
---------|-----------------|-----------------|-----------------|-----------------|-----------------|----------|----------|----------|--------|-------|
|
||||||
s45168 | 0 | 0 | 0 | 0 | 0
|
s45146 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45162 | 1 | 1 | 1 | 1 | 1
|
s45147 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45158 | 1 | 1 | 0 | 0 | 1
|
s45148 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
szwedek | 1 | 1 | 1 | 1 | 1
|
s45150 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 8 | 16 | 4 |
|
||||||
s45155 | 1 | 1 | 1 | 1 | 1
|
s45151 | 1 | 1 | 1 | 1 | 1 | 0 | 5 | 8 | 18 | 4.5 |
|
||||||
s45152 | 1 | 1 | 1 | 0 | 1
|
s45152 | 1 | 1 | 1 | 0 | 1 | 0 | 5 | 8 | 17 | 4 |
|
||||||
s45148 | 1 | 1 | 1 | 1 | 1
|
s45153 | 0 | 1 | 1 | 1 | 1 | 4 | 0 | 8 | 16 | 4 |
|
||||||
s45166 | 1 | 1 | 1 | 1 | 1
|
s45155 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 8 | 19 | 4.5 |
|
||||||
s45151 | 1 | 1 | 1 | 1 | 1
|
s45156 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45146 | 1 | 1 | 1 | 1 | 1
|
s45157 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
|
||||||
s45150 | 1 | 1 | 1 | 1 | 1
|
s45158 | 1 | 1 | 0 | 0 | 1 | 4 | 5 | 8 | 19 | 4.5 |
|
||||||
s45452 | 1 | 1 | 1 | 1 | 1
|
s45159 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | 8 | 18 | 4.5 |
|
||||||
s45165 | 1 | 1 | 1 | 1 | 1
|
s45160 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
|
||||||
s45160 | 1 | 1 | 1 | 1 | 1
|
s45161 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45153 | 0 | 0 | 0 | 0 | 0
|
s45162 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45156 | 1 | 1 | 1 | 1 | 1
|
s45163 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
|
||||||
s45157 | 0 | 0 | 1 | 1 | 1
|
s45164 | 1 | 1 | 0 | 1 | 0 | 0 | 5 | 8 | 16 | 4 |
|
||||||
s45167 | 1 | 1 | 1 | 1 | 1
|
s45165 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45147 | 1 | 0 | 0 | 1 | 0
|
s45166 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
|
||||||
s45159 | 0 | 0 | 0 | 0 | 0
|
s45167 | 1 | 1 | 1 | 1 | 1 | 0 | 5 | 8 | 17 | 4 |
|
||||||
s45161 | 1 | 1 | 1 | 1 | 1
|
s45168 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
|
||||||
s45164 | 1 | 1 | 0 | 1 | 0
|
s45452 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
|
||||||
|
szwedek | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 10 | 24 | 5 |
|
||||||
|
|
||||||
|
Skala:
|
||||||
|
|
||||||
|
Punkty | Ocena |
|
||||||
|
-------|-------|
|
||||||
|
24-20 | 5 |
|
||||||
|
19-18 | 4.5 |
|
||||||
|
17-16 | 4 |
|
||||||
|
15-13 | 3 |
|
||||||
|
12-0 | 2 |
|
||||||
|
|
||||||
|
|
||||||
|
Max: 22
|
||||||
|
@ -7,7 +7,7 @@ która zawiera tylko elementy z list o parzystych indeksach.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def even_elements(lista):
|
def even_elements(lista):
|
||||||
return lista[::2]
|
pass
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -5,11 +5,8 @@
|
|||||||
Napisz funkcję days_in_year zwracającą liczbę dni w roku (365 albo 366).
|
Napisz funkcję days_in_year zwracającą liczbę dni w roku (365 albo 366).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def days_in_year(year):
|
def days_in_year(days):
|
||||||
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
|
pass
|
||||||
return 366
|
|
||||||
else:
|
|
||||||
return 365
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[2015], [2012], [1900], [2400], [1977]]
|
inputs = [[2015], [2012], [1900], [2400], [1977]]
|
||||||
|
@ -13,14 +13,7 @@ jak 'set', która przechowuje elementy bez powtórzeń.)
|
|||||||
|
|
||||||
|
|
||||||
def oov(text, vocab):
|
def oov(text, vocab):
|
||||||
list_of_words = []
|
pass
|
||||||
text_splitted = text.split()
|
|
||||||
# print(text_splitted)
|
|
||||||
for word in text_splitted:
|
|
||||||
if word.lower() not in vocab:
|
|
||||||
list_of_words.append(word)
|
|
||||||
return list_of_words
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,18 +7,7 @@ Jeśli podany argument jest mniejszy od 1 powinna być zwracana wartość 0.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def sum_from_one_to_n(n):
|
def sum_from_one_to_n(n):
|
||||||
# if n < 1:
|
pass
|
||||||
# return 0
|
|
||||||
# else:
|
|
||||||
# return sum(range(n + 1))
|
|
||||||
ranges = range(n + 1)
|
|
||||||
if n < 1:
|
|
||||||
return 0
|
|
||||||
else:
|
|
||||||
return sum(ranges)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import math
|
|
||||||
"""
|
"""
|
||||||
Napisz funkcję euclidean_distance obliczającą odległość między
|
Napisz funkcję euclidean_distance obliczającą odległość między
|
||||||
dwoma punktami przestrzeni trójwymiarowej. Punkty są dane jako
|
dwoma punktami przestrzeni trójwymiarowej. Punkty są dane jako
|
||||||
@ -10,10 +10,7 @@ np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def euclidean_distance(x, y):
|
def euclidean_distance(x, y):
|
||||||
dist = [(a - b) ** 2 for a, b in zip(x, y)]
|
pass
|
||||||
dist = math.sqrt(sum(dist))
|
|
||||||
return dist
|
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
||||||
|
@ -10,11 +10,7 @@ ma być zwracany napis "It's not a Big 'No!'".
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def big_no(n):
|
def big_no(n):
|
||||||
if n < 5:
|
pass
|
||||||
return "It's not a Big 'No!'"
|
|
||||||
else:
|
|
||||||
o_creater = 'O'*n
|
|
||||||
return 'N'+o_creater+'!'
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[5], [6], [2]]
|
inputs = [[5], [6], [2]]
|
||||||
|
@ -6,11 +6,7 @@ Napisz funkcję char_sum, która dla zadanego łańcucha zwraca
|
|||||||
sumę kodów ASCII znaków.
|
sumę kodów ASCII znaków.
|
||||||
"""
|
"""
|
||||||
def char_sum(text):
|
def char_sum(text):
|
||||||
suma = 0
|
pass
|
||||||
for n in text:
|
|
||||||
asco = ord(n)
|
|
||||||
suma += asco
|
|
||||||
return suma
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [["this is a string"], ["this is another string"]]
|
inputs = [["this is a string"], ["this is another string"]]
|
||||||
|
@ -7,15 +7,7 @@ przez 3 lub 5 mniejszych niż n.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def sum_div35(n):
|
def sum_div35(n):
|
||||||
new_range = range(n)
|
pass
|
||||||
new_list = []
|
|
||||||
suma = 0
|
|
||||||
for n in new_range:
|
|
||||||
if n % 3 == 0 or n % 5 == 0:
|
|
||||||
new_list.append(n)
|
|
||||||
for x in new_list:
|
|
||||||
suma += x
|
|
||||||
return suma
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[10], [100], [3845]]
|
inputs = [[10], [100], [3845]]
|
||||||
|
@ -9,16 +9,7 @@ Np. leet('leet') powinno zwrócić '1337'.
|
|||||||
|
|
||||||
|
|
||||||
def leet_speak(text):
|
def leet_speak(text):
|
||||||
let_dict = {'e': '3', 'l': '1', 'o': '0', 't': '7'}
|
pass
|
||||||
new_word = []
|
|
||||||
for n in text:
|
|
||||||
if n in let_dict:
|
|
||||||
x = let_dict[n]
|
|
||||||
new_word.append(x)
|
|
||||||
else:
|
|
||||||
new_word.append(n)
|
|
||||||
new_word_joined = ''.join(new_word)
|
|
||||||
return new_word_joined
|
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -9,16 +9,7 @@ na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'.
|
|||||||
|
|
||||||
|
|
||||||
def pokemon_speak(text):
|
def pokemon_speak(text):
|
||||||
text_list = []
|
pass
|
||||||
i = 0
|
|
||||||
while i != len(text):
|
|
||||||
text_list.append(text[i].upper())
|
|
||||||
i += 1
|
|
||||||
if i != len(text):
|
|
||||||
text_list.append(text[i])
|
|
||||||
i += 1
|
|
||||||
text_list_joined = ''.join(text_list)
|
|
||||||
return text_list_joined
|
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -9,10 +9,7 @@ Oba napisy będą składać się wyłacznie z małych liter.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def common_chars(string1, string2):
|
def common_chars(string1, string2):
|
||||||
string1_list = set([n for n in string1 if n != ' '])
|
pass
|
||||||
string2_list = set([n for n in string2 if n != ' '])
|
|
||||||
common_letter_list = sorted([n for n in string1_list if n in string2_list and n != ' '])
|
|
||||||
return common_letter_list
|
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
a = [1, 2, 3]
|
|
||||||
b = 123
|
|
||||||
c = 'ala ma kota'
|
|
||||||
d = 123.13113
|
|
||||||
d = 'kfidf'
|
|
||||||
|
|
||||||
print(id(a))
|
|
||||||
print(id(b))
|
|
||||||
print(id(c))
|
|
||||||
print(id(d))
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
def fibonacci(n):
|
|
||||||
"""Fibonacci numbers generator, first n"""
|
|
||||||
a, b, counter = 0, 1, 0
|
|
||||||
while True:
|
|
||||||
if (counter > n): return
|
|
||||||
yield a
|
|
||||||
a, b = b, a + b
|
|
||||||
counter += 1
|
|
||||||
|
|
||||||
|
|
||||||
f = fibonacci(5)
|
|
||||||
for x in f:
|
|
||||||
print (x)
|
|
@ -1,15 +0,0 @@
|
|||||||
# **ćwiczenie 3**
|
|
||||||
# Strona ``https://api.fixer.io/latest`` udostępnia kursy różnych walut w stosunku do euro. Napisz skrypt, który:
|
|
||||||
# * pobierze zawartość JSONa. Wykorzystaj bibliotekę ``requests`` (http://docs.python-requests.org/en/master/).
|
|
||||||
# * korzystając z biblioteki ``json`` przekształć go do obiketu typu JSON.
|
|
||||||
# * Wyświetl wartość kursu EUR do PLN.
|
|
||||||
|
|
||||||
import requests
|
|
||||||
import json
|
|
||||||
|
|
||||||
response = requests.get('https://api.fixer.io/latest')
|
|
||||||
content = response.content
|
|
||||||
json_object = json.loads(content)
|
|
||||||
currencies_vs_euro_dict = json_object.get("rates")
|
|
||||||
pln = currencies_vs_euro_dict.get("PLN")
|
|
||||||
print(pln)
|
|
@ -1,31 +0,0 @@
|
|||||||
from weather import Weather
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
|
|
||||||
def fahrenheit_to_celsius(temperature_in_fahrenheit):
|
|
||||||
temperature_in_celsius = (float(temperature_in_fahrenheit - 32) / (9/5))
|
|
||||||
return round(temperature_in_celsius, 2)
|
|
||||||
|
|
||||||
weather = Weather()
|
|
||||||
city = 'Poznan'
|
|
||||||
weather_by_location = weather.lookup_by_location(city)
|
|
||||||
condition = weather_by_location.condition()
|
|
||||||
forecasts = weather_by_location.forecast()
|
|
||||||
new_dict = {}
|
|
||||||
polish_days = ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota', 'Niedziela']
|
|
||||||
|
|
||||||
for forecast in forecasts:
|
|
||||||
data = forecast.date()
|
|
||||||
lowest = forecast.low()
|
|
||||||
new_dict.update({data: lowest})
|
|
||||||
min_temp_day = min(new_dict, key=new_dict.get)
|
|
||||||
new_date = datetime.datetime.strptime(min_temp_day, "%d %b %Y")
|
|
||||||
day_of_week = new_date.weekday()
|
|
||||||
min_temp = new_dict[min_temp_day]
|
|
||||||
min_temp_in_celsius = fahrenheit_to_celsius(float(min_temp))
|
|
||||||
|
|
||||||
print('Current temperature in {0}: {1} Fahrenheit. It is {2}.'.format(city, condition.temp(), condition.text().lower()))
|
|
||||||
|
|
||||||
print('Najzimniejszy dzień: {0}. Temperatura w tym dniu to {1} Celsjusza'.format(polish_days[day_of_week], min_temp_in_celsius))
|
|
||||||
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
import glob
|
|
||||||
import pathlib as p
|
|
||||||
|
|
||||||
|
|
||||||
# set the path to directory
|
|
||||||
my_path = 'C:/Users/**/*.bleu'
|
|
||||||
new_dict = {}
|
|
||||||
# match files in given directory
|
|
||||||
for name in glob.glob(my_path, recursive=True):
|
|
||||||
# for each file in directory set it's path and open the file
|
|
||||||
path_to_file = p.Path(name)
|
|
||||||
with path_to_file.open() as f:
|
|
||||||
# read 1st line in each file
|
|
||||||
line = f.readline()
|
|
||||||
# split this line using ',' as separator
|
|
||||||
line_splitted = line.split(',')
|
|
||||||
# in this case BLUE = YY.YY is the first element of the list,
|
|
||||||
# now we have to split it by ' ' and add it to dictionary
|
|
||||||
# which key will be the file name and value will be that value
|
|
||||||
for i, j in enumerate(line_splitted):
|
|
||||||
if i == 0:
|
|
||||||
blue_splitted = j.split(' ')
|
|
||||||
second_element = float(blue_splitted[2])
|
|
||||||
# in that case searched value is on 3rd position (2nd list element)
|
|
||||||
new_dict.update({path_to_file: second_element})
|
|
||||||
print(new_dict)
|
|
||||||
# find max key (path) searching by values
|
|
||||||
maximum = max(new_dict, key=new_dict.get)
|
|
||||||
print(maximum)
|
|
||||||
|
|
@ -177,7 +177,8 @@
|
|||||||
" super().__init__(vertexes)\n",
|
" super().__init__(vertexes)\n",
|
||||||
" \n",
|
" \n",
|
||||||
" def czy_jestem_kwadratem(self):\n",
|
" def czy_jestem_kwadratem(self):\n",
|
||||||
" pass"
|
" pass\n",
|
||||||
|
" "
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -308,13 +309,13 @@
|
|||||||
{
|
{
|
||||||
"ename": "AttributeError",
|
"ename": "AttributeError",
|
||||||
"evalue": "'Parser' object has no attribute '__parse'",
|
"evalue": "'Parser' object has no attribute '__parse'",
|
||||||
|
"output_type": "error",
|
||||||
"traceback": [
|
"traceback": [
|
||||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
|
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
|
||||||
"\u001b[0;32m<ipython-input-6-80ee186598d3>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mParser\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__parse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
"\u001b[0;32m<ipython-input-6-80ee186598d3>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mParser\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__parse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
||||||
"\u001b[0;31mAttributeError\u001b[0m: 'Parser' object has no attribute '__parse'"
|
"\u001b[0;31mAttributeError\u001b[0m: 'Parser' object has no attribute '__parse'"
|
||||||
],
|
]
|
||||||
"output_type": "error"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@ -464,13 +465,13 @@
|
|||||||
{
|
{
|
||||||
"ename": "FileNotFoundError",
|
"ename": "FileNotFoundError",
|
||||||
"evalue": "[Errno 2] No such file or directory: 'nieistniejący_plik.txt'",
|
"evalue": "[Errno 2] No such file or directory: 'nieistniejący_plik.txt'",
|
||||||
|
"output_type": "error",
|
||||||
"traceback": [
|
"traceback": [
|
||||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
||||||
"\u001b[0;32m<ipython-input-20-41928d542bef>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"nieistniejący_plik.txt\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplik\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
"\u001b[0;32m<ipython-input-20-41928d542bef>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"nieistniejący_plik.txt\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplik\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||||||
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'nieistniejący_plik.txt'"
|
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'nieistniejący_plik.txt'"
|
||||||
],
|
]
|
||||||
"output_type": "error"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@ -613,13 +614,13 @@
|
|||||||
{
|
{
|
||||||
"ename": "MyError",
|
"ename": "MyError",
|
||||||
"evalue": "Coś poszło nie tak!",
|
"evalue": "Coś poszło nie tak!",
|
||||||
|
"output_type": "error",
|
||||||
"traceback": [
|
"traceback": [
|
||||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
"\u001b[0;31mMyError\u001b[0m Traceback (most recent call last)",
|
"\u001b[0;31mMyError\u001b[0m Traceback (most recent call last)",
|
||||||
"\u001b[0;32m<ipython-input-36-4fb306b42ebc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Coś poszło nie tak!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
"\u001b[0;32m<ipython-input-36-4fb306b42ebc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Coś poszło nie tak!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
||||||
"\u001b[0;31mMyError\u001b[0m: Coś poszło nie tak!"
|
"\u001b[0;31mMyError\u001b[0m: Coś poszło nie tak!"
|
||||||
],
|
]
|
||||||
"output_type": "error"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@ -633,9 +634,7 @@
|
|||||||
"collapsed": true
|
"collapsed": true
|
||||||
},
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": []
|
||||||
""
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@ -648,7 +647,7 @@
|
|||||||
"language_info": {
|
"language_info": {
|
||||||
"codemirror_mode": {
|
"codemirror_mode": {
|
||||||
"name": "ipython",
|
"name": "ipython",
|
||||||
"version": 3.0
|
"version": 3
|
||||||
},
|
},
|
||||||
"file_extension": ".py",
|
"file_extension": ".py",
|
||||||
"mimetype": "text/x-python",
|
"mimetype": "text/x-python",
|
||||||
@ -659,5 +658,5 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
"nbformat_minor": 0
|
"nbformat_minor": 2
|
||||||
}
|
}
|
@ -14,3 +14,5 @@ Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wiel
|
|||||||
* Napisz metodę ``to\_string``, która zwróci łancuch znakowy, który w czytelny sposób przedstawi punkt.
|
* Napisz metodę ``to\_string``, która zwróci łancuch znakowy, który w czytelny sposób przedstawi punkt.
|
||||||
* Napisz metodę __len__, która zwróci liczbę współrzędnych punktu. Zobacz, czy możesz teraz wywołać funkcję len na obiekcie typy punkt.
|
* Napisz metodę __len__, która zwróci liczbę współrzędnych punktu. Zobacz, czy możesz teraz wywołać funkcję len na obiekcie typy punkt.
|
||||||
* Napisz metodę __str__, która bedzie działać dokładnie tak samo jak metoda ``to_string``. Wyświetl obiekt typy Point korzystając z funkcji print.
|
* Napisz metodę __str__, która bedzie działać dokładnie tak samo jak metoda ``to_string``. Wyświetl obiekt typy Point korzystając z funkcji print.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,31 +1,3 @@
|
|||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# **ćwiczenie 1**
|
|
||||||
# Napisz funckję ``is_numeric``, która sprawdzi, czy każdy element z przekazanej listy jest typu int lub float. Wykorzystaj funcję ``isinstance()`` (https://docs.python.org/2/library/functions.html#isinstance).
|
|
||||||
|
|
||||||
def is_numeric(another_list):
|
|
||||||
"""
|
|
||||||
Check whether each element of the list is an instance of int or float
|
|
||||||
:param another_list:
|
|
||||||
:return: True or False
|
|
||||||
"""
|
|
||||||
for i in another_list:
|
|
||||||
if isinstance(i, bool):
|
|
||||||
return False
|
|
||||||
elif isinstance(i, (int, float)):
|
|
||||||
i += 1
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
# 2nd option
|
|
||||||
|
|
||||||
# if type(i) in (float, int):
|
|
||||||
# i += 1
|
|
||||||
# else:
|
|
||||||
# return False
|
|
||||||
# return True
|
|
||||||
|
|
||||||
|
|
||||||
# print(is_numeric([2, 1.8797, 43654354354354354354354354354354354325879]))
|
|
||||||
|
@ -1,40 +1,3 @@
|
|||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# **ćwiczenie 2**
|
|
||||||
# Napisz prostą hierarchię klas:
|
|
||||||
# * Klasa bazowa ``Employee``, która będzie zawierać informacje o imieniu i nazwisku pracownika. Ponadto każdy pracownik otrzyma numer ``id``, który będzie unikatowy. Wykorzystaj do tego atrybut statyczny. Napisz metodę ``get_id``, która zwraca identyfikator pracownika.
|
|
||||||
# * Klasy pochodna: ``Recruiter``, która ma dodatkową mtodę ``recruit``, która jako parament przyjmuje obiekt ``Employee`` i zapisuje jego ``id`` w liście ``self.recruited``.
|
|
||||||
# * Klasa pochodna ``Programmer``. Klasa ``Programmer`` ma przyjąć w konstruktorze podstawowe informacje (imię i nazwisko) oraz obiekt rekturera. Ponadto stwórz atrybut ``recruiter``, który będzie przechowywać ``id``
|
|
||||||
|
|
||||||
|
|
||||||
class Employee:
|
|
||||||
id = 0
|
|
||||||
|
|
||||||
def __init__(self, name, surname):
|
|
||||||
Employee.id += 1
|
|
||||||
self.id = Employee.id
|
|
||||||
self.name = name
|
|
||||||
self.surname = surname
|
|
||||||
|
|
||||||
def get_id(self):
|
|
||||||
return self.id
|
|
||||||
|
|
||||||
|
|
||||||
class Recruiter(Employee):
|
|
||||||
def __init__(self, name, surname):
|
|
||||||
super().__init__(name, surname)
|
|
||||||
self.recruited = []
|
|
||||||
|
|
||||||
def recruit(self, Employee_obj):
|
|
||||||
self.recruited.append(Employee_obj.id)
|
|
||||||
|
|
||||||
|
|
||||||
class Programmer(Employee):
|
|
||||||
def __init__(self, name, surname, Recruiter_obj):
|
|
||||||
super().__init__(name, surname)
|
|
||||||
self.recruiter = Recruiter_obj.id
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,58 +1,3 @@
|
|||||||
# **ćwiczenie 3 (zadanie domowe) **
|
#!/usr/bin/env python2
|
||||||
# Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wielowymiarowej:
|
# -*- coding: utf-8 -*-
|
||||||
# * Konstruktor ma przyjąc tylko 1 parametr: listę współrzednych. Wykorzystaj funkcję z pierwszego zadania, żeby sprawdzić, czy lista zawiera wyłącznie liczby.
|
|
||||||
# * Napisz metodę add, która dida dwa punkty po współrzędnych i zwróci obiekt typu ``Punkt``. Zaimplementuj własny wyjątek ``DimensionError``, który zostaje wyrzucony, jeżeli dodawany punkt ma inny wymiar.
|
|
||||||
# * Napisz metodę ``to\_string``, która zwróci łancuch znakowy, który w czytelny sposób przedstawi punkt.
|
|
||||||
# * Napisz metodę __len__, która zwróci liczbę współrzędnych punktu. Zobacz, czy możesz teraz wywołać funkcję len na obiekcie typy punkt.
|
|
||||||
# * Napisz metodę __str__, która bedzie działać dokładnie tak samo jak metoda ``to_string``. Wyświetl obiekt typy Point korzystając z funkcji print.
|
|
||||||
|
|
||||||
from labs04.task01 import is_numeric
|
|
||||||
|
|
||||||
|
|
||||||
class Point:
|
|
||||||
coordinates = []
|
|
||||||
|
|
||||||
def __init__(self, coordinates):
|
|
||||||
if is_numeric(coordinates):
|
|
||||||
self.coordinates = coordinates
|
|
||||||
else:
|
|
||||||
raise DimensionError("Coordinates are not numeric")
|
|
||||||
|
|
||||||
def to_string(self):
|
|
||||||
return str(self.coordinates)
|
|
||||||
|
|
||||||
def __len__(self):
|
|
||||||
return len(self.coordinates)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.to_string()
|
|
||||||
|
|
||||||
|
|
||||||
class DimensionError(Exception):
|
|
||||||
def __init__(self, text):
|
|
||||||
self.text = text
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.text
|
|
||||||
|
|
||||||
|
|
||||||
def add(point_1, point_2):
|
|
||||||
if len(point_1.coordinates) != len(point_2.coordinates):
|
|
||||||
raise DimensionError("Coordinates have different dimensions")
|
|
||||||
else:
|
|
||||||
new_coordinates = [x + y for x, y in zip(point_1.coordinates, point_2.coordinates)]
|
|
||||||
return Point(new_coordinates)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
|
|
||||||
new_point = Point([5, 10, 12, 6])
|
|
||||||
new_point.to_string()
|
|
||||||
new_point.__len__()
|
|
||||||
new_point_2 = Point([12, 23, 21, 16])
|
|
||||||
print(new_point_2.__str__())
|
|
||||||
new_point_3 = add(new_point, new_point_2)
|
|
||||||
|
|
||||||
print('1st point =', new_point)
|
|
||||||
print('2nd point =', new_point_2)
|
|
||||||
print('1st point + 2nd point = ', new_point_3)
|
|
@ -17,3 +17,4 @@ Plik ``task04.py`` zawiera kod prorgamu, który działa jak popularne narzędzie
|
|||||||
* Jeżeli został podany przełącznik `-w`, to to ma zostać zwrócona tylko liczba słów.
|
* Jeżeli został podany przełącznik `-w`, to to ma zostać zwrócona tylko liczba słów.
|
||||||
* Jeżeli został podany przełącznik `-c`, to to ma zostać zwrócona tylko liczba znaków.
|
* Jeżeli został podany przełącznik `-c`, to to ma zostać zwrócona tylko liczba znaków.
|
||||||
* Jeżeli został podany inny argument, to należy założyć że jest to nazwa pliku i potraktować ten plik jako wejście do programu.
|
* Jeżeli został podany inny argument, to należy założyć że jest to nazwa pliku i potraktować ten plik jako wejście do programu.
|
||||||
|
|
||||||
|
@ -2,13 +2,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
def suma(liczby):
|
def suma(liczby):
|
||||||
sm = 0
|
pass
|
||||||
for i in liczby:
|
|
||||||
sm += i
|
|
||||||
return sm
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
print(suma([1, 2, 3, 4]))
|
print(summa([1, 2, 3, 4]))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
import task00
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
x = sys.argv
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
|
|
@ -846,9 +846,7 @@
|
|||||||
"collapsed": true
|
"collapsed": true
|
||||||
},
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": []
|
||||||
""
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@ -861,7 +859,7 @@
|
|||||||
"language_info": {
|
"language_info": {
|
||||||
"codemirror_mode": {
|
"codemirror_mode": {
|
||||||
"name": "ipython",
|
"name": "ipython",
|
||||||
"version": 2.0
|
"version": 2
|
||||||
},
|
},
|
||||||
"file_extension": ".py",
|
"file_extension": ".py",
|
||||||
"mimetype": "text/x-python",
|
"mimetype": "text/x-python",
|
||||||
@ -872,5 +870,5 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
"nbformat_minor": 0
|
"nbformat_minor": 2
|
||||||
}
|
}
|
131
labs06/task02.py
131
labs06/task02.py
@ -1,50 +1,14 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
## Zadania
|
|
||||||
|
|
||||||
# ** zad. 0 **
|
|
||||||
# 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.
|
|
||||||
# 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 ``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. *(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.
|
|
||||||
|
|
||||||
import pandas as pd
|
|
||||||
import re
|
|
||||||
from sklearn import *
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
|
|
||||||
def wczytaj_dane():
|
def wczytaj_dane():
|
||||||
flats_data = pd.read_csv('mieszkania.csv', encoding='utf-8', sep=',', index_col='Id')
|
pass
|
||||||
flats_as_frame = pd.DataFrame(flats_data)
|
|
||||||
return flats_as_frame
|
|
||||||
|
|
||||||
|
|
||||||
def most_common_room_number(dane):
|
def most_common_room_number(dane):
|
||||||
rooms = dane['Rooms']
|
pass
|
||||||
rooms_counter = rooms.value_counts()
|
|
||||||
rooms_counter_dict = rooms_counter.to_dict()
|
|
||||||
max_room = max(rooms_counter_dict, key=rooms_counter_dict.get)
|
|
||||||
return max_room
|
|
||||||
|
|
||||||
|
|
||||||
def cheapest_flats(dane, n):
|
def cheapest_flats(dane, n):
|
||||||
sorted_flats_data = dane.sort_values(by=['Expected'])
|
pass
|
||||||
first_n_cheapest_flats = sorted_flats_data[:n]
|
|
||||||
return first_n_cheapest_flats
|
|
||||||
|
|
||||||
|
|
||||||
def find_borough(desc):
|
def find_borough(desc):
|
||||||
dzielnice = ['Stare Miasto',
|
dzielnice = ['Stare Miasto',
|
||||||
@ -55,95 +19,23 @@ def find_borough(desc):
|
|||||||
'Winogrady',
|
'Winogrady',
|
||||||
'Miłostowo',
|
'Miłostowo',
|
||||||
'Dębiec']
|
'Dębiec']
|
||||||
|
pass
|
||||||
# using regular expression to get rid of all special characters with the exception of accents
|
|
||||||
final_desc_wo_spaces = re.sub(u'[^a-zA-Z0-9áąéęćíóúÁÉÍÓÚâêîôÂÊÎÔńãõÃÕçÇżź:]', ' ', desc)
|
|
||||||
final_desc_wo_spaces = final_desc_wo_spaces.split()
|
|
||||||
for n in final_desc_wo_spaces:
|
|
||||||
if n in dzielnice:
|
|
||||||
return n
|
|
||||||
# horrible hack to match 'Stare' with 'Miasto'
|
|
||||||
elif n == 'Stare':
|
|
||||||
return 'Stare Miasto'
|
|
||||||
return "Inne"
|
|
||||||
|
|
||||||
|
|
||||||
def add_borough(dane):
|
def add_borough(dane):
|
||||||
dane['Borough'] = dane['Location'].apply(find_borough)
|
pass
|
||||||
return dane
|
|
||||||
|
|
||||||
|
|
||||||
def write_plot(dane, filename):
|
def write_plot(dane, filename):
|
||||||
bar_plot_data = dane['Borough']
|
pass
|
||||||
counter = bar_plot_data.value_counts()
|
|
||||||
my_plot = counter.plot(kind='bar', title='Liczba mieszkań w Poznaniu według dzielnicy', figsize=(12, 12))
|
|
||||||
my_plot.set_xlabel('Dzielnica')
|
|
||||||
my_plot.set_ylabel('Liczebność')
|
|
||||||
fig = my_plot.get_figure()
|
|
||||||
fig.savefig(filename + '.png')
|
|
||||||
|
|
||||||
|
|
||||||
def mean_price(dane, room_number):
|
def mean_price(dane, room_number):
|
||||||
filtered_data_mean = dane[dane['Rooms'] == room_number]['Expected'].mean()
|
pass
|
||||||
return filtered_data_mean
|
|
||||||
|
|
||||||
|
|
||||||
def find_13(dane):
|
def find_13(dane):
|
||||||
filtered_data_floor_13 = dane[dane['Floor'] == 13]['Borough'].values
|
pass
|
||||||
return filtered_data_floor_13
|
|
||||||
|
|
||||||
|
|
||||||
def find_best_flats(dane):
|
def find_best_flats(dane):
|
||||||
filtered_data = dane.loc[(dane['Borough'] == 'Winogrady') & dane['Rooms'].isin([3]) & dane['Floor'].isin([1])]
|
pass
|
||||||
return filtered_data['Description']
|
|
||||||
|
|
||||||
|
|
||||||
def percentile_based_outlier(dane, confidence=95):
|
|
||||||
"""
|
|
||||||
Filters data set by given confidence criterion
|
|
||||||
:param dane:
|
|
||||||
:param confidence:
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
diff = (100 - confidence) / 2.0
|
|
||||||
minval, maxval = np.percentile(dane['Expected'], [diff, 100 - diff])
|
|
||||||
return dane[(dane['Expected'] > minval) & (dane['Expected'] < maxval)]
|
|
||||||
|
|
||||||
|
|
||||||
def linear_regression(dane, powierzchnia, liczba_pokoi):
|
|
||||||
# remove outliers and define the data/predictors as the pre-set feature name
|
|
||||||
dane_filtered = percentile_based_outlier(dane)
|
|
||||||
features = dane_filtered[['SqrMeters', 'Rooms']]
|
|
||||||
target = dane_filtered['Expected']
|
|
||||||
# print(min(target), max(target))
|
|
||||||
|
|
||||||
x = features
|
|
||||||
y = target
|
|
||||||
|
|
||||||
lm = linear_model.LinearRegression()
|
|
||||||
lm.fit(x, y)
|
|
||||||
model_score = lm.score(x, y)
|
|
||||||
|
|
||||||
# calculate mean squared error
|
|
||||||
mse = np.mean((dane_filtered['Expected'] - lm.predict(x)) ** 2)
|
|
||||||
price = lm.intercept_ + powierzchnia * lm.coef_[0] + liczba_pokoi * lm.coef_[1]
|
|
||||||
|
|
||||||
co = list(zip(x.columns, lm.coef_))
|
|
||||||
coef = pd.DataFrame(co, columns=['feature', 'coefficient'])
|
|
||||||
|
|
||||||
print('Features and coefficients \n {}'.
|
|
||||||
format(coef))
|
|
||||||
print('Estimated intercept coefficient: {}'.
|
|
||||||
format(lm.intercept_))
|
|
||||||
print('Number of coefficients {}'.
|
|
||||||
format(lm.coef_)) # list of coefficients
|
|
||||||
print('R^2 of the prediction: {}'.
|
|
||||||
format(model_score))
|
|
||||||
print('Mean squared error {}'.
|
|
||||||
format(mse))
|
|
||||||
print('{} squared meter flat, which has {} rooms with should cost {} PLN'.
|
|
||||||
format(powierzchnia, liczba_pokoi, round(price, 4)))
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
dane = wczytaj_dane()
|
dane = wczytaj_dane()
|
||||||
@ -153,13 +45,10 @@ def main():
|
|||||||
.format(most_common_room_number(dane)))
|
.format(most_common_room_number(dane)))
|
||||||
|
|
||||||
print("{} to najłądniejsza dzielnica w Poznaniu."
|
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: {}"
|
print("Średnia cena mieszkania 3-pokojowego, to: {}"
|
||||||
.format(mean_price(dane, 3)))
|
.format(mean_price(dane, 3)))
|
||||||
|
|
||||||
linear_regression(dane, 100, 4)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
Loading…
Reference in New Issue
Block a user