From 0958f0a612b1dd279fc8cbc61b0aa8fb31d2a403 Mon Sep 17 00:00:00 2001 From: shumakooov Date: Sun, 12 Dec 2021 15:27:08 +0500 Subject: [PATCH 1/3] tasks 1-7 --- task.py | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 task.py diff --git a/task.py b/task.py new file mode 100644 index 0000000..f3267c6 --- /dev/null +++ b/task.py @@ -0,0 +1,99 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt + +works = pd.read_csv('works.csv') + +# Количество записей в датасете + +# countRecords = works.shape +# print(countRecords) +# countRecords1 = len(works.index) +# print(countRecords1) + + +# Количество мужчин и женщин + +# genderMale = works[works['gender'] == 'Мужской'].shape[0] +# print(genderMale) +# genderFemale = (works['gender'] == 'Женский').values.sum() +# print(genderFemale) +# genders = works['gender'].value_counts() +# print(genders) + + +# Узнать сколько значений в столбце skills не NAN; + +# s = works['skills'].notnull().values.sum() +# print(s) +# s1 = works['skills'].dropna().shape[0] +# print(s1) + + +# Получить все заполненные скиллы; + +# s = works['skills'].dropna() +# print(s) +# s1 = works.query("skills == skills")["skills"] +# print(s1) + +# a = 10000 +# b = 'Женский' +# print(works.query("salary == @a and gender == @b")) + + +# Вывести зарплату только у тех, у которых в скиллах есть Python (Питон); + +# df = works.skills.dropna().str.lower().str.contains('python|питон') +# print(works[works.skills.notna()][df]['salary']) + + +# Построить перцентили по заработной плате у мужчин и женщин; + +# percentiles = np.linspace(.1, 1, 10) +# men_salary = works.query("gender == 'Мужской'").quantile(percentiles) +# women_salary = works.query("gender == 'Женский'").quantile(percentiles) +# +# fig, ax1 = plt.subplots() +# ax1.plot(percentiles, men_salary) +# plt.xlabel("Перцентили") +# plt.ylabel("Зарплата мужчин") +# +# fig, ax2 = plt.subplots() +# ax2.plot(percentiles, women_salary) +# plt.xlabel("Перцентили") +# plt.ylabel("Зарплата женщин") +# plt.show() + + +# Построить графики распределения по заработной плате мужчин и женщин в зависимости от высшего образования; + +men_salary = works.query("gender == 'Мужской'").groupby("educationType").agg("mean").reset_index() +women_salary = works.query("gender == 'Женский'").groupby("educationType").agg("mean").reset_index() +print(men_salary) +print(women_salary) + +educationTypes = men_salary["educationType"].values +men_salaries = men_salary["salary"].values +women_salaries = women_salary["salary"].values +index = np.arange(len(educationTypes)) + +bw = 0.4 +plt.bar(index-bw/2, men_salaries, bw, color="b", label="Средняя зарплата мужчин") +plt.bar(index+bw/2, women_salaries, bw, color="r", label="Средняя зарплата женщин") +plt.xticks(index, educationTypes, rotation=45) +plt.legend() +plt.show() + +# Надо прочитать как установить модуль юпитера +works.query("gender == 'Мужской' and educationType == 'Высшее'").hist(bins=100, alpha=0.5) +works.query("gender == 'Женский' and educationType == 'Высшее'").hist(bins=100, alpha=0.5) + +works.query("gender == 'Мужской' and educationType == 'Незаконченное высшее'").hist(bins=100, alpha=0.5) +works.query("gender == 'Женский' and educationType == 'Незаконченное высшее'").hist(bins=100, alpha=0.5) + +works.query("gender == 'Мужской' and educationType == 'Среднее'").hist(bins=100, alpha=0.5) +works.query("gender == 'Женский' and educationType == 'Среднее'").hist(bins=100, alpha=0.5) + +works.query("gender == 'Мужской' and educationType == 'Среднее профессиональное'").hist(bins=100, alpha=0.5) +works.query("gender == 'Женский' and educationType == 'Среднее профессиональное'").hist(bins=100, alpha=0.5) \ No newline at end of file From ca204db61e935b44aae8be637c210f686b9f0599 Mon Sep 17 00:00:00 2001 From: shumakooov Date: Thu, 16 Dec 2021 15:53:20 +0500 Subject: [PATCH 2/3] homework --- homework.ipynb | 165 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 homework.ipynb diff --git a/homework.ipynb b/homework.ipynb new file mode 100644 index 0000000..ad48cbb --- /dev/null +++ b/homework.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "works = pd.read_csv('works.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%% подготовка данных\n" + } + }, + "outputs": [], + "source": [ + "worksnew = works[works['jobTitle'].notna()]\n", + "works = worksnew[worksnew['qualification'].notna()]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%% сравнивает входит ли одно слово в другое\n" + } + }, + "outputs": [], + "source": [ + "def compare(first_param, second_param):\n", + " for i in first_param.lower().replace('-', ' ').split():\n", + " if i in second_param.lower():\n", + " return True\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%% какого количества людей профессия и должность не совпадают?\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "7714" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res = 0\n", + "for (job, qualification) in zip(works[\"jobTitle\"], works[\"qualification\"]):\n", + " if not compare(job, qualification) and not compare(qualification, job):\n", + " res += 1\n", + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%% Люди с каким образованием становятся менеджерами (топ-5)?\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "бакалавр 96\n", + "экономист 85\n", + "менеджер 79\n", + "юрист 41\n", + "инженер 37\n", + "Name: qualification, dtype: int64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "worksjob = works[works[\"jobTitle\"].str.lower().str.contains(\"менеджер\")]\n", + "worksjob[\"qualification\"].str.lower().value_counts().head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%% Кем работают люди, которые по диплому являются инженерами (топ-5)?\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "инженер 25\n", + "главный инженер 23\n", + "директор 21\n", + "менеджер 13\n", + "водитель 11\n", + "Name: jobTitle, dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "worksjob = works[works[\"qualification\"].str.lower().str.contains(\"инженер\")]\n", + "worksjob[\"jobTitle\"].str.lower().value_counts().head(5)\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file From 9377a6d843f87da9e68cc0bc5431e994712fca29 Mon Sep 17 00:00:00 2001 From: shumakooov Date: Thu, 16 Dec 2021 15:59:26 +0500 Subject: [PATCH 3/3] add REPORT.md --- REPORT.md | 8 ++++++++ homework.ipynb | 2 +- img.png | Bin 0 -> 614 bytes img_1.png | Bin 0 -> 3767 bytes img_2.png | Bin 0 -> 3724 bytes 5 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 REPORT.md create mode 100644 img.png create mode 100644 img_1.png create mode 100644 img_2.png diff --git a/REPORT.md b/REPORT.md new file mode 100644 index 0000000..3de8ec5 --- /dev/null +++ b/REPORT.md @@ -0,0 +1,8 @@ +## У какого количества людей профессия и должность не совпадают? +![img.png](img.png) + +## Люди с каким образованием становятся менеджерами (топ-5)? +![img_1.png](img_1.png) + +## Кем работают люди, которые по диплому являются инженерами (топ-5)? +![img_2.png](img_2.png) \ No newline at end of file diff --git a/homework.ipynb b/homework.ipynb index ad48cbb..09b86d8 100644 --- a/homework.ipynb +++ b/homework.ipynb @@ -54,7 +54,7 @@ "metadata": { "pycharm": { "is_executing": true, - "name": "#%% какого количества людей профессия и должность не совпадают?\n" + "name": "#%% У какого количества людей профессия и должность не совпадают?\n" } }, "outputs": [ diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..20400e5832eada54f786fe64a557debc4ebf5f76 GIT binary patch literal 614 zcmeAS@N?(olHy`uVBq!ia0y~yV5|YMZ8_M03X_2hE&A8y=|NKC_tnk z@LTf=fvXB`nu~58(qTwt4)*Qc#C1gIgxG`?Hz%{-_Gzi$|Nr3BzU3CIA4@OQzE3)l zV>e&?`!)Of3^NwYe87A};Rk~whn<5!6Td*q17;RQ1lL9A&)GEQ11y}FvYsEVzb-Xm zIq*aEVEo#!lL8Enr?b>=j8JiA=!qBlbE#;j4;!Pz_M8u{@(ES**!G9m-P4@^^0$I` z!XK$-{sSf0?L)I3nR~bSf1$>?>E4AWf8HvczjO2NRqJK#jqBgvUS|=u|8b0ro!olH z3!&d1q+d0(d%t~VHm~vg<5pjO|7ytKsw>r)bMCt3L3W9xfDhY$e>S~yJZbvQZ#Bzo z81mNVzvlot&q`w5=BslaF!LBH{Fr&x_M*{ci9frmS>+QpOmCi__ip92nQafkzt7`4 z`mNgU17ll-;Sb%})z@dHAFSv3^EjKKs#^EQ|M_d}|LuA2WA@|rqk<|64Hlqg@uqlo z%kQSA>x@6we3-rOR%E873&V+5@_(|5^KWk3eP&A0!Sfp*GV@$B{;|EjDeKOi+i7{X z>o@H*zoYzvq4_J19YeAzA~ukN12e8*vS;f4{|#m^sNF2T{~kBPviI`y|0oA?+%uR3 POg{{su6{1-oD!M<%g+WL literal 0 HcmV?d00001 diff --git a/img_1.png b/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..567172100a77736b54b87ab8579cebe93974064d GIT binary patch literal 3767 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 BCguPD literal 0 HcmV?d00001