-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain_functions.py
57 lines (50 loc) · 1.72 KB
/
main_functions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import requests
from statistics import mean
from terminaltables import DoubleTable
def predict_salary(salary_from, salary_to):
if salary_from and salary_to:
return (salary_from + salary_to) / 2
elif salary_from and not salary_to:
return salary_from * 1.2
elif not salary_from and salary_to:
return salary_to * 0.8
else:
return None
def get_vacancies_statistic(vacancies, predict_rub_salary_func):
vacancies_statistic = {}
for language in vacancies:
salaries = []
for vacancy in vacancies[language]:
salary = predict_rub_salary_func(vacancy)
if salary:
salaries.append(salary)
if not salaries:
average_salary = 0
else:
average_salary = int(mean(salaries))
vacancies_statistic[language] = {
"vacancies_found": len(vacancies[language]),
"vacancies_processed": len(salaries),
"average_salary": average_salary,
}
return vacancies_statistic
def draw_table(vacancies_statistic, title):
raw_table = [
[
"Язык программирования",
"Вакансий найдено",
"Вакансий обработано",
"Средняя зарплата",
]
]
for language in vacancies_statistic:
raw_table.append(
[
language,
vacancies_statistic[language]["vacancies_found"],
vacancies_statistic[language]["vacancies_processed"],
vacancies_statistic[language]["average_salary"],
]
)
table_instance = DoubleTable(raw_table, title)
return table_instance.table