From bab61e20d8abd13e78d22f45f0520a4bf9cf54f8 Mon Sep 17 00:00:00 2001 From: sckmat Date: Sat, 11 Dec 2021 15:43:16 +0600 Subject: [PATCH] homework --- REPORT.md | 19 +++++++++++++++++++ classwork.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ homework.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 REPORT.md create mode 100644 classwork.py create mode 100644 homework.py diff --git a/REPORT.md b/REPORT.md new file mode 100644 index 0000000..e09afcc --- /dev/null +++ b/REPORT.md @@ -0,0 +1,19 @@ +## Из 1068 людей не совпадают профессия и должность у 793. + +### Топ-5 образований людей, которые работают менеджерами: +|Образование|Количество| +|---|---| +|бакалавр|11| +|менеджер|10| +|специалист|6| +|экономист|6| +|экономист-менеджер|4| + +### Топ-5 должностей людей, которые по диплому являются инженерами: +|Должность|Количество| +|---|---| +|заместитель директора|3| +|главный инженер |3| +|ведущий инженер-конструктор|2| +|инженер лесопользования|2| +|директор|2| \ No newline at end of file diff --git a/classwork.py b/classwork.py new file mode 100644 index 0000000..6dd510b --- /dev/null +++ b/classwork.py @@ -0,0 +1,50 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as mp + +works = pd.read_csv("works.csv") + +# 1 +print("Общее количество записей:", works.shape[0]) + +# 2 +print("Количество мужчин:", works[works["gender"] == "Мужской"].shape[0]) +print("Количество женщин:", (works["gender"] == "Женский").sum()) + +# 3 +print("Количество не NaN значений", works["skills"].count()) + +# 4 +print("Все заполненные скиллы\n", works['skills'].dropna()) + +# 5 +skills_bool = works['skills'].str.lower().str.contains('python | питон') & works['skills'].notnull() +print("Зарплата тех, у кого в скиллах есть Python (Питон)\n", works[skills_bool]['salary']) + +# 6 +salary_p = np.linspace(0.1, 1, 10) +w = works[works.gender == "Женский"]['salary'].quantile(salary_p) +m = works[works.gender == "Мужской"]['salary'].quantile(salary_p) + +mp.plot(m, salary_p, color='blue') +mp.plot(w, salary_p, color='r') +mp.xlabel('salary') +mp.ylabel('quantile') +mp.show() + +# 7 +men_salary = works.query("gender == 'Мужской'").groupby("educationType").agg("mean").reset_index() +women_salary = works.query("gender == 'Женский'").groupby("educationType").agg("mean").reset_index() + +educationTypes = men_salary["educationType"].values +men_salaries = men_salary["salary"].values +women_salary = women_salary["salary"].values + +index = np.arange(len(educationTypes)) + +bw = 0.4 +mp.bar(index-bw/2, men_salaries, bw, color="b", label="Средняя зарплата мужчин") +mp.bar(index+bw/2, women_salary, bw, color="r", label="Средняя зарплата женщин") +mp.xticks(index, educationTypes, rotation=45) +mp.legend() +mp.show() diff --git a/homework.py b/homework.py new file mode 100644 index 0000000..10f824d --- /dev/null +++ b/homework.py @@ -0,0 +1,34 @@ +import pandas as pd + + +def does_not_match(jobTitle, qualification, data): + count = 0 + for (first_field, second_field) in zip(data[jobTitle], data[qualification]): + if not it_coincided(first_field, second_field) and not it_coincided(second_field, first_field): + count += 1 + return count + + +def it_coincided(first_field, second_field): + words = first_field.lower().replace('-', ' ').split() + for word in words: + if word in second_field.lower(): + return True + return False + + +def top_people(top_number, data, first_field, second_field, search_word): + return data[data[first_field].str.lower().str.contains(search_word[:-2])][second_field].str.lower().value_counts() \ + .head(top_number) + + +works = pd.read_csv("works.csv").dropna() + +does_not_match_count = does_not_match("jobTitle", "qualification", works) +print(f"Из {works.shape[0]} людей должность и профессия не совпадают у {does_not_match_count}.\n") + +print("Топ-5 образований людей, которые работают менеджерами:") +print(top_people(5, works, "jobTitle", "qualification", "менеджер"), "\n") + +print("Топ-5 должностей людей, которые по диплому являются инженерами") +print(top_people(5, works, "qualification", "jobTitle", "инженер"), "\n")