849 lines
183 KiB
Plaintext
849 lines
183 KiB
Plaintext
|
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Работа с NumPy"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 270,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"matrix = \n",
|
|||
|
" [[4 5 0]\n",
|
|||
|
" [9 9 9]] \n",
|
|||
|
"\n",
|
|||
|
"tmatrix = \n",
|
|||
|
" [[4 9]\n",
|
|||
|
" [5 9]\n",
|
|||
|
" [0 9]] \n",
|
|||
|
"\n",
|
|||
|
"vector = \n",
|
|||
|
" [4 5 0 9 9 9] \n",
|
|||
|
"\n",
|
|||
|
"tvector = \n",
|
|||
|
" [[4]\n",
|
|||
|
" [5]\n",
|
|||
|
" [0]\n",
|
|||
|
" [9]\n",
|
|||
|
" [9]\n",
|
|||
|
" [9]] \n",
|
|||
|
"\n",
|
|||
|
"list_matrix = \n",
|
|||
|
" [array([4, 5, 0]), array([9, 9, 9])] \n",
|
|||
|
"\n",
|
|||
|
"matrix as str = \n",
|
|||
|
" [[4 5 0]\n",
|
|||
|
" [9 9 9]] \n",
|
|||
|
"\n",
|
|||
|
"matrix type is <class 'numpy.ndarray'> \n",
|
|||
|
"\n",
|
|||
|
"vector type is <class 'numpy.ndarray'> \n",
|
|||
|
"\n",
|
|||
|
"list_matrix type is <class 'list'> \n",
|
|||
|
"\n",
|
|||
|
"str_matrix type is <class 'str'> \n",
|
|||
|
"\n",
|
|||
|
"formatted_vector = \n",
|
|||
|
" 4; 5; 0; 9; 9; 9 \n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"import numpy as np\n",
|
|||
|
"\n",
|
|||
|
"matrix = np.array([[4, 5, 0], [9, 9, 9]])\n",
|
|||
|
"print(\"matrix = \\n\", matrix, \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"tmatrix = matrix.T\n",
|
|||
|
"print(\"tmatrix = \\n\", tmatrix, \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"vector = np.ravel(matrix)\n",
|
|||
|
"print(\"vector = \\n\", vector, \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"tvector = np.reshape(vector, (6, 1))\n",
|
|||
|
"print(\"tvector = \\n\", tvector, \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"list_matrix = list(matrix)\n",
|
|||
|
"print(\"list_matrix = \\n\", list_matrix, \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"str_matrix = str(matrix)\n",
|
|||
|
"print(\"matrix as str = \\n\", str_matrix, \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"print(\"matrix type is\", type(matrix), \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"print(\"vector type is\", type(vector), \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"print(\"list_matrix type is\", type(list_matrix), \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"print(\"str_matrix type is\", type(str_matrix), \"\\n\")\n",
|
|||
|
"\n",
|
|||
|
"formatted_vector = \"; \".join(map(str, vector))\n",
|
|||
|
"print(\"formatted_vector = \\n\", formatted_vector, \"\\n\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Работа с Pandas DataFrame\n",
|
|||
|
"\n",
|
|||
|
"https://pandas.pydata.org/docs/user_guide/10min.html"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Работа с данными - чтение и запись CSV"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 271,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"import pandas as pd\n",
|
|||
|
"\n",
|
|||
|
"df = pd.read_csv(\"../data/ds_salaries.csv\")\n",
|
|||
|
"\n",
|
|||
|
"df.to_csv(\"../data/test.csv\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Работа с данными - основные команды"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 272,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"<class 'pandas.core.frame.DataFrame'>\n",
|
|||
|
"RangeIndex: 3755 entries, 0 to 3754\n",
|
|||
|
"Data columns (total 11 columns):\n",
|
|||
|
" # Column Non-Null Count Dtype \n",
|
|||
|
"--- ------ -------------- ----- \n",
|
|||
|
" 0 work_year 3755 non-null int64 \n",
|
|||
|
" 1 experience_level 3755 non-null object\n",
|
|||
|
" 2 employment_type 3755 non-null object\n",
|
|||
|
" 3 job_title 3755 non-null object\n",
|
|||
|
" 4 salary 3755 non-null int64 \n",
|
|||
|
" 5 salary_currency 3755 non-null object\n",
|
|||
|
" 6 salary_in_usd 3755 non-null int64 \n",
|
|||
|
" 7 employee_residence 3755 non-null object\n",
|
|||
|
" 8 remote_ratio 3755 non-null int64 \n",
|
|||
|
" 9 company_location 3755 non-null object\n",
|
|||
|
" 10 company_size 3755 non-null object\n",
|
|||
|
"dtypes: int64(4), object(7)\n",
|
|||
|
"memory usage: 322.8+ KB\n",
|
|||
|
" count mean std min 25% \\\n",
|
|||
|
"work_year 3755.0 2022.373635 0.691448 2020.0 2022.0 \n",
|
|||
|
"salary 3755.0 190695.571771 671676.500508 6000.0 100000.0 \n",
|
|||
|
"salary_in_usd 3755.0 137570.389880 63055.625278 5132.0 95000.0 \n",
|
|||
|
"remote_ratio 3755.0 46.271638 48.589050 0.0 0.0 \n",
|
|||
|
"\n",
|
|||
|
" 50% 75% max \n",
|
|||
|
"work_year 2022.0 2023.0 2023.0 \n",
|
|||
|
"salary 138000.0 180000.0 30400000.0 \n",
|
|||
|
"salary_in_usd 135000.0 175000.0 450000.0 \n",
|
|||
|
"remote_ratio 0.0 100.0 100.0 \n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df.info()\n",
|
|||
|
"print(df.describe().transpose())"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 273,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" employment_type job_title salary salary_currency \\\n",
|
|||
|
"0 FT Principal Data Scientist 80000 EUR \n",
|
|||
|
"\n",
|
|||
|
" salary_in_usd employee_residence remote_ratio company_location \\\n",
|
|||
|
"0 85847 ES 100 ES \n",
|
|||
|
"\n",
|
|||
|
" company_size \n",
|
|||
|
"0 L \n",
|
|||
|
" employment_type job_title salary salary_currency \\\n",
|
|||
|
"3753 CT Business Data Analyst 100000 USD \n",
|
|||
|
"3754 FT Data Science Manager 7000000 INR \n",
|
|||
|
"\n",
|
|||
|
" salary_in_usd employee_residence remote_ratio company_location \\\n",
|
|||
|
"3753 100000 US 100 US \n",
|
|||
|
"3754 94665 IN 50 IN \n",
|
|||
|
"\n",
|
|||
|
" company_size \n",
|
|||
|
"3753 L \n",
|
|||
|
"3754 L \n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"cleared_df = df.drop([\"work_year\", \"experience_level\"], axis=1)\n",
|
|||
|
"print(cleared_df.head(1))\n",
|
|||
|
"print(cleared_df.tail(2))"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 274,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" employment_type job_title salary salary_currency \\\n",
|
|||
|
"1548 FT AI Developer 6000 EUR \n",
|
|||
|
"573 FT Autonomous Vehicle Technician 7000 USD \n",
|
|||
|
"2933 CT Analytics Engineer 7500 USD \n",
|
|||
|
"\n",
|
|||
|
" salary_in_usd employee_residence remote_ratio company_location \\\n",
|
|||
|
"1548 6304 MK 0 MK \n",
|
|||
|
"573 7000 GH 0 GH \n",
|
|||
|
"2933 7500 BO 50 BO \n",
|
|||
|
"\n",
|
|||
|
" company_size \n",
|
|||
|
"1548 S \n",
|
|||
|
"573 S \n",
|
|||
|
"2933 M \n",
|
|||
|
" employment_type job_title salary salary_currency salary_in_usd \\\n",
|
|||
|
"3669 FT Data Scientist 30400000 CLP 40038 \n",
|
|||
|
"\n",
|
|||
|
" employee_residence remote_ratio company_location company_size \n",
|
|||
|
"3669 CL 100 CL L \n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"\n",
|
|||
|
"sorted_df = cleared_df.sort_values(by=\"salary\")\n",
|
|||
|
"print(sorted_df.head(3))\n",
|
|||
|
"print(sorted_df.tail(1))"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Работа с данными - работа с элементами"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 275,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"0 80000\n",
|
|||
|
"1 30000\n",
|
|||
|
"2 25500\n",
|
|||
|
"3 175000\n",
|
|||
|
"4 120000\n",
|
|||
|
" ... \n",
|
|||
|
"3750 412000\n",
|
|||
|
"3751 151000\n",
|
|||
|
"3752 105000\n",
|
|||
|
"3753 100000\n",
|
|||
|
"3754 7000000\n",
|
|||
|
"Name: salary, Length: 3755, dtype: int64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df[\"salary\"])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 276,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" work_year experience_level employment_type job_title \\\n",
|
|||
|
"0 2023 SE FT Principal Data Scientist \n",
|
|||
|
"1 2023 MI CT ML Engineer \n",
|
|||
|
"2 2023 MI CT ML Engineer \n",
|
|||
|
"\n",
|
|||
|
" salary salary_currency salary_in_usd employee_residence remote_ratio \\\n",
|
|||
|
"0 80000 EUR 85847 ES 100 \n",
|
|||
|
"1 30000 USD 30000 US 100 \n",
|
|||
|
"2 25500 USD 25500 US 100 \n",
|
|||
|
"\n",
|
|||
|
" company_location company_size \n",
|
|||
|
"0 ES L \n",
|
|||
|
"1 US S \n",
|
|||
|
"2 US S \n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df[0:3])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 277,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"work_year 2023\n",
|
|||
|
"experience_level SE\n",
|
|||
|
"employment_type FT\n",
|
|||
|
"job_title Principal Data Scientist\n",
|
|||
|
"salary 80000\n",
|
|||
|
"salary_currency EUR\n",
|
|||
|
"salary_in_usd 85847\n",
|
|||
|
"employee_residence ES\n",
|
|||
|
"remote_ratio 100\n",
|
|||
|
"company_location ES\n",
|
|||
|
"company_size L\n",
|
|||
|
"Name: 0, dtype: object\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.loc[0])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 278,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"FT\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.loc[100, \"employment_type\"])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 279,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" salary employment_type\n",
|
|||
|
"100 104300 FT\n",
|
|||
|
"101 145000 FT\n",
|
|||
|
"102 65000 FT\n",
|
|||
|
"103 165000 FT\n",
|
|||
|
"104 132300 FT\n",
|
|||
|
".. ... ...\n",
|
|||
|
"196 230000 FT\n",
|
|||
|
"197 200000 FT\n",
|
|||
|
"198 180000 FT\n",
|
|||
|
"199 115000 FT\n",
|
|||
|
"200 200000 FT\n",
|
|||
|
"\n",
|
|||
|
"[101 rows x 2 columns]\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.loc[100:200, [\"salary\", \"employment_type\"]])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 280,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"work_year 2023\n",
|
|||
|
"experience_level SE\n",
|
|||
|
"employment_type FT\n",
|
|||
|
"job_title Principal Data Scientist\n",
|
|||
|
"salary 80000\n",
|
|||
|
"salary_currency EUR\n",
|
|||
|
"salary_in_usd 85847\n",
|
|||
|
"employee_residence ES\n",
|
|||
|
"remote_ratio 100\n",
|
|||
|
"company_location ES\n",
|
|||
|
"company_size L\n",
|
|||
|
"Name: 0, dtype: object\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.iloc[0])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 281,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" work_year experience_level\n",
|
|||
|
"3 2023 SE\n",
|
|||
|
"4 2023 SE\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.iloc[3:5, 0:2])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 282,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" work_year experience_level\n",
|
|||
|
"3 2023 SE\n",
|
|||
|
"4 2023 SE\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.iloc[[3, 4], [0, 1]])"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Работа с данными - отбор и группировка"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 283,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"[2023 2022 2020 2021]\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"s_values = df[\"work_year\"].unique()\n",
|
|||
|
"print(s_values)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 284,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"2023 count = 1785\n",
|
|||
|
"2022 count = 1664\n",
|
|||
|
"2020 count = 76\n",
|
|||
|
"2021 count = 230\n",
|
|||
|
"Total count = 3755\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"s_total = 0\n",
|
|||
|
"for s_value in s_values:\n",
|
|||
|
" count = df[df[\"work_year\"] == s_value].shape[0]\n",
|
|||
|
" s_total += count\n",
|
|||
|
" print(s_value, \"count =\", count)\n",
|
|||
|
"print(\"Total count = \", s_total)\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 285,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" job_title experience_level total_count\n",
|
|||
|
"1 3D Computer Vision Researcher MI 1\n",
|
|||
|
"2 3D Computer Vision Researcher SE 1\n",
|
|||
|
"11 Analytics Engineer EN 1\n",
|
|||
|
"8 AI Scientist EX 1\n",
|
|||
|
"24 Autonomous Vehicle Technician EN 1\n",
|
|||
|
".. ... ... ...\n",
|
|||
|
"77 Data Engineer MI 205\n",
|
|||
|
"150 Machine Learning Engineer SE 209\n",
|
|||
|
"59 Data Analyst SE 380\n",
|
|||
|
"108 Data Scientist SE 608\n",
|
|||
|
"78 Data Engineer SE 718\n",
|
|||
|
"\n",
|
|||
|
"[192 rows x 3 columns]\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.groupby([\"job_title\", \"experience_level\"]).size().reset_index(name=\"total_count\").sort_values(by=\"total_count\")) # type: ignore"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация - Исходные данные"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 286,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" work_year salary employee_residence\n",
|
|||
|
"0 2023 80000 ES\n",
|
|||
|
"1 2023 30000 US\n",
|
|||
|
"2 2023 25500 US\n",
|
|||
|
"3 2023 175000 CA\n",
|
|||
|
"4 2023 120000 CA\n",
|
|||
|
"... ... ... ...\n",
|
|||
|
"3750 2020 412000 US\n",
|
|||
|
"3751 2021 151000 US\n",
|
|||
|
"3752 2020 105000 US\n",
|
|||
|
"3753 2020 100000 US\n",
|
|||
|
"3754 2021 7000000 IN\n",
|
|||
|
"\n",
|
|||
|
"[3755 rows x 3 columns]\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"data = df[[\"work_year\", \"salary\", \"employee_residence\"]].copy()\n",
|
|||
|
"data.dropna(subset=[\"employee_residence\"], inplace=True)\n",
|
|||
|
"print(data)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация - Сводка пяти чисел\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 287,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
" salary \n",
|
|||
|
" min q1 q2 median q3 max\n",
|
|||
|
"work_year \n",
|
|||
|
"2020.0 8000.0 48000.0 88000.0 88000.0 138000.0 1000000.0\n",
|
|||
|
"2021.0 8760.0 59000.0 100000.0 100000.0 165000.0 2500000.0\n",
|
|||
|
"2022.0 6000.0 95000.0 135000.0 135000.0 175000.0 2800000.0\n",
|
|||
|
"2023.0 7000.0 107800.0 145000.0 145000.0 185000.0 1700000.0\n",
|
|||
|
" salary \n",
|
|||
|
" low_iqr iqr high_iqr\n",
|
|||
|
"work_year \n",
|
|||
|
"2020.0 0 90000.0 273000.0\n",
|
|||
|
"2021.0 0 106000.0 324000.0\n",
|
|||
|
"2022.0 0 80000.0 295000.0\n",
|
|||
|
"2023.0 0 77200.0 300800.0\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"<Axes: title={'center': 'salary'}, xlabel='work_year'>"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 287,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHNCAYAAADrIvo2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABliElEQVR4nO3deVyU1f4H8M8w7CgurKIkKO6gpiYusbigV0ThopaWqZmVeypIal0VKylBtHCrLL1pWlcl7LolpcC4UGlakuWO5gIqKSggy8z5/eFv5jIyKIPCPDPzeb9evmrOc57n+Q4HmC/nOYtMCCFAREREZKQsDB0AERER0eNgMkNERERGjckMERERGTUmM0RERGTUmMwQERGRUWMyQ0REREaNyQwREREZNSYzREREZNSYzBAREZFRYzJDVAtkMhkWLlxo6DBMXlpaGmQyGdLS0h5ab+HChZDJZLh582bdBFbH1F+HrVu3GjoUIoNgMkNGZf369ZDJZFr/XF1d0adPH+zevdvQ4T22kydPYuHChcjOzjZ0KERERsPS0AEQ1cSiRYvg7e0NIQRyc3Oxfv16hIaG4r///S/CwsIMHV6NnTx5ErGxsQgODoaXl5ehwyEiMgpMZsgoDRo0CN26ddO8fuWVV+Dm5obNmzcbdTJTl8rLy6FSqWBtbW3oUKiG1G1oioQQuHfvHuzs7AwdChkBPmYik9CwYUPY2dnB0lI7Py8sLERUVBQ8PT1hY2ODNm3aICEhAerN4ouLi9G2bVu0bdsWxcXFmvP+/vtvNGnSBL169YJSqQQAjBs3DvXq1cP58+cxcOBAODg4wMPDA4sWLUJ1Np8/duwYBg0aBEdHR9SrVw/9+vVDZmam5vj69esxYsQIAECfPn00j9EeNR5ky5YtaN++PWxtbeHr64tvvvkG48aN0+rZyc7OhkwmQ0JCApYvX46WLVvCxsYGJ0+eBADs27cPAQEBcHBwQMOGDREeHo4//vhD6z4PXlNNPR6lIplMhqlTp+LLL79EmzZtYGtri65duyIjI6PS+VeuXMH48ePh5uYGGxsbdOjQAZ9//nmlepcvX0ZERAQcHBzg6uqKmTNnoqSk5KFfmwfdvHkTzz33HBwdHeHk5IQ33ngD9+7d0xwPCgpCp06ddJ7bpk0bDBw4sMprz5o1C05OTlrfC9OmTYNMJsNHH32kKcvNzYVMJsPq1as1ZdevX9ck5La2tujUqRP+/e9/a13/UW34oJKSEoSFhaFBgwY4dOjQw78wuJ88eHl5ITw8vNKxe/fuoUGDBnj99de1rr9gwQL4+PjAxsYGnp6eiImJqdQm69atQ9++feHq6gobGxu0b99e672reXl5ISwsDN999x26desGOzs7fPzxx4+MmwgAIIiMyLp16wQA8f3334sbN26I69evi6ysLPH6668LCwsLsXfvXk1dlUol+vbtK2QymZgwYYJYsWKFGDJkiAAgZsyYoamXmZkp5HK5mDlzpqZs5MiRws7OTpw6dUpTNnbsWGFraytatWolXnrpJbFixQoRFhYmAIh//etfWnECEAsWLNC8zsrKEg4ODqJJkybinXfeEe+//77w9vYWNjY2IjMzUwghxLlz58T06dMFADFv3jyxYcMGsWHDBpGTk1Pl12PHjh1CJpOJjh07isTERPGvf/1LNGrUSPj6+ormzZtr6l24cEEAEO3btxctWrQQ77//vli2bJm4ePGiSE1NFZaWlqJ169ZiyZIlIjY2Vjg7O4tGjRqJCxcuaL3/itdUW7BggXjwVwkA4evrK5ydncWiRYvEBx98IJo3by7s7OzEiRMnNPVycnJEs2bNhKenp1i0aJFYvXq1GDp0qAAgli1bpqlXVFQkWrduLWxtbUVMTIxYvny56Nq1q+jYsaMAIPbv31/l16hijH5+fmLIkCFixYoVYvTo0QKAeOmllzT1Pv30UwFAK0YhhPjpp58EAPHFF19UeY/k5ORK53bq1ElYWFiI4cOHa8q2bNkiAIisrCzNe2vXrp2wsrISM2fOFB999JEICAgQAMTy5cs15z2sDffv3y8AiC1btmiuGRISIho1aiR++umnh35tKnrrrbeElZWVyMvL0yr/z3/+IwCIjIwMIYQQSqVSDBgwQNjb24sZM2aIjz/+WEydOlVYWlqK8PBwrXOfeeYZMW7cOLFs2TKRlJQkBgwYIACIFStWaNVr3ry58PHxEY0aNRJz5swRa9aseWS7EqkxmSGjok5mHvxnY2Mj1q9fr1U3JSVFABDvvvuuVvnw4cOFTCYTZ8+e1ZTNnTtXWFhYiIyMDM2HTcUPEiHuf5gDENOmTdOUqVQqMXjwYGFtbS1u3LihKX8wmYmIiBDW1tbi3LlzmrKrV6+K+vXri8DAQE2Z+t7V/SXu5+cnmjVrJu7cuaMpS0tLEwB0JjOOjo7i+vXrWtfo3LmzcHV11foA+/XXX4WFhYUYM2aM1vvXJ5kBII4cOaIpu3jxorC1tRX//Oc/NWWvvPKKaNKkibh586bW+SNHjhQNGjQQRUVFQgghli9fLgCI//znP5o6hYWFwsfHR69kZujQoVrlkydPFgDEr7/+KoQQ4vbt28LW1la8+eabWvWmT58uHBwcxN27d6u8x/Xr1wUAsWrVKs21LCwsxIgRI4Sbm5vWtRo3bixUKpXWe9u4caOmTmlpqejZs6eoV6+eKCgoEEI8vA0rJjN37twRQUFBwtnZWRw7duyhX5cHnTp1SgAQq1ev1iofOnSo8PLy0sS8YcMGYWFhIRQKhVa9NWvWCADi4MGDmjJ1G1Y0cOBA0aJFC62y5s2bCwBiz549esVMJASTGTIy6mRm5cqVIjU1VaSmpoqNGzeKf/zjH8LS0lJs27ZNU/e1114Tcrlc82GgdvjwYQFAJCUlacpKSkqEn5+f8Pb2Fi4uLiIoKEjzi1tNncxU7K0RQojdu3cLAGLz5s2asorJTHl5ubC3txfPPfdcpfej7lHKz88XQuiXzFy5ckXTi/MgPz8/ncnMyy+/rFXv6tWrAoCIiYmpdI2BAwcKZ2dnrfevTzLTs2fPSnWff/55YW9vL8rLy4VKpRINGzYUr732mrhx44bWP3U7HzhwQAghxIABA0STJk0qtcmSJUv0Sma+++47rfI//vhDABBxcXFaMT711FOae5WXlws3Nzfx4osvPvQeQgjRtm1bMXLkSCGEEDt37hRWVlaaXp3Tp08LIYR4+umntZKqAQMGCHd3d6FUKrWutXnzZgFA/Pe//xVCVN2GQvwvmVm7dq3o2bOncHNz0/T86Mvf3188++yzmtd5eXnCyspKvPXWW5qyoUOHig4dOlRqt9OnT+v8A0Lt9u3b4saNG2Lx4sUCgLh9+7bmWPPmzYW3t3eNYibimBkySt27d0f//v3Rv39/vPjii9i5cyfat2+PqVOnorS0FABw8eJFeHh4oH79+lrntmvXTnNczdraGp9//jkuXLiAO3fuYN26dZXGgQCAhYUFWrRooVXWunVrAKhyOvWNGzdQVFSENm3aVDrWrl07qFQq/PXXX9V/8/9PHb+Pj0+lY7rKAMDb21vnNaqK7ebNmygsLNQ7NgBo1apVpbLWrVujqKgIN27cwI0bN3D79m188skncHFx0fr38ssvA7g/lkQdp4+PT6U20RW3PjG1bNkSFhYWWm03ZswYXLp0CQqFAgDw/fffIzc3Fy+99NIjrx8QEKA5T6FQoFu3bujWrRsaN24MhUKBgoIC/PrrrwgICNCcc/HiRbRq1QoWFtq/jnV9nwKV27CiGTNm4Oeff8b333+PDh06PDJeXcaMGYODBw9q7rtlyxaUlZVpvf8zZ87g999/r9Ru6p8FdbsBwMGDB9G/f3/NeCwXFxfMmzcPAJCfn1/t90b0MJzNRCbBwsICffr0wYcffogzZ87U6Bf5d999B+D+YMczZ86Y5C/Wx5kZoiu5A6AZIK0v9Syc0aNHY+zYsTrrdOzYsUbXri5d72ngwIFwc3PDxo0bERgYiI0bN8Ld3R39+/d/5PWeffZZfPrppzh//jwUCgUCAgIgk8nw7LPPQqFQwMPDAyqVSiuZ0df
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"def q1(x):\n",
|
|||
|
" return x.quantile(0.250)\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"# median = quantile(0.5)\n",
|
|||
|
"def q2(x):\n",
|
|||
|
" return x.quantile(0.5)\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"def q3(x):\n",
|
|||
|
" return x.quantile(0.750)\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"def iqr(x):\n",
|
|||
|
" return q3(x) - q1(x)\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"def low_iqr(x):\n",
|
|||
|
" return max(0, q1(x) - 1.5 * iqr(x))\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"def high_iqr(x):\n",
|
|||
|
" return q3(x) + 1.5 * iqr(x)\n",
|
|||
|
"\n",
|
|||
|
"data = data.where(data[\"salary\"] < 3000000)\n",
|
|||
|
"quantiles = (\n",
|
|||
|
" data[[\"work_year\", \"salary\"]]\n",
|
|||
|
" .groupby([\"work_year\"])\n",
|
|||
|
" .aggregate([\"min\", q1, q2, \"median\", q3, \"max\"])\n",
|
|||
|
")\n",
|
|||
|
"print(quantiles)\n",
|
|||
|
"\n",
|
|||
|
"iqrs = (\n",
|
|||
|
" data[[\"work_year\", \"salary\"]]\n",
|
|||
|
" .groupby([\"work_year\"])\n",
|
|||
|
" .aggregate([low_iqr, iqr, high_iqr])\n",
|
|||
|
")\n",
|
|||
|
"print(iqrs)\n",
|
|||
|
"\n",
|
|||
|
"data.boxplot(column=\"salary\", by=\"work_year\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация - Гистограмма"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 288,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"<Axes: ylabel='Frequency'>"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 288,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df.plot.hist(column=[\"work_year\"], bins=80)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация - Точечная диаграмма"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 289,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"<Axes: xlabel='experience_level', ylabel='salary'>"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 289,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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4w4tXbpUL7zwgp5//nnFxsZq1apV6tChg7s+AgAA8DAet86Ns7HODQAA3scr17kBAABwBMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFMINAAAwFLeGm5SUFN1+++0KDAxUWFiYEhMTdfjwYZvHLFq0SCaTyWrz8/NzUcUAAMDTuTXcbNmyRRMmTNCuXbu0YcMGFRcXa9CgQSosLLR5XFBQkLKysixbRkaGiyoGAACerq473/ybb76x+nnRokUKCwvTvn371KdPnwqPM5lMioiIcHZ5AADAC3nUnJu8vDxJUpMmTWz2KygoUKtWrRQVFaV77rlHP/74Y4V9i4qKlJ+fb7UBAADj8phwU1paqkmTJqlXr17q0KFDhf3atm2rhQsX6ssvv9Qnn3yi0tJS3XHHHTp16lS5/VNSUhQcHGzZoqKinPURAACABzCZzWazu4uQpPHjx2vt2rXavn27WrRoUeXjiouL1a5dOyUlJWnGjBll2ouKilRUVGT5OT8/X1FRUcrLy1NQUJBDagcAAM6Vn5+v4ODgKn1/u3XOzQ0TJ07U6tWrtXXr1moFG0mqV6+e4uLidOzYsXLbfX195evr64gyAQCAF3DrZSmz2ayJEydq5cqV+vbbb9W6detqv0ZJSYl++OEHRUZGOqFCAADgbdw6cjNhwgQtXbpUX375pQIDA5WdnS1JCg4OVoMGDSRJycnJat68uVJSUiRJ06dPV8+ePRUTE6NLly5p1qxZysjI0NixY932OQAAgOdwa7iZN2+eJKlv375W+z/66CONGjVKknTy5En5+PzfANPFixc1btw4ZWdnq3HjxurWrZt27typ9u3bu6psAADgwTxmQrGrVGdCEgAA8AzV+f72mFvBAQAAHIFwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADIVwAwAADMWt4SYlJUW33367AgMDFRYWpsTERB0+fLjS41asWKFbbrlFfn5+6tixo77++msXVAsAALyBW8PNli1bNGHCBO3atUsbNmxQcXGxBg0apMLCwgqP2blzp5KSkjRmzBgdOHBAiYmJSkxM1KFDh1x
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df.plot.scatter(x=\"work_year\", y=\"salary\")\n",
|
|||
|
"\n",
|
|||
|
"df.plot.scatter(x=\"experience_level\", y=\"salary\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация - Столбчатая диаграмма"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 290,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"plot = (\n",
|
|||
|
" df.groupby([\"work_year\", \"remote_ratio\"])\n",
|
|||
|
" .size()\n",
|
|||
|
" .unstack()\n",
|
|||
|
" .plot.bar(color=[\"pink\", \"green\", \"red\"])\n",
|
|||
|
")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация - Временные ряды"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 291,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"from datetime import datetime\n",
|
|||
|
"import matplotlib.dates as md\n",
|
|||
|
"\n",
|
|||
|
"ts = pd.read_csv(\"../data/dollar.csv\")\n",
|
|||
|
"ts[\"date\"] = ts.apply(lambda row: datetime.strptime(row[\"my_date\"], \"%d.%m.%Y\"), axis=1)\n",
|
|||
|
"\n",
|
|||
|
"plot = ts.plot.line(x=\"date\", y=\"my_value\")\n",
|
|||
|
"plot.xaxis.set_major_locator(md.DayLocator(interval=10))\n",
|
|||
|
"plot.xaxis.set_major_formatter(md.DateFormatter(\"%d.%m.%Y\"))\n",
|
|||
|
"plot.tick_params(axis=\"x\", labelrotation=90)"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"metadata": {
|
|||
|
"kernelspec": {
|
|||
|
"display_name": ".venv",
|
|||
|
"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.12.7"
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 2
|
|||
|
}
|