849 lines
183 KiB
Plaintext
Raw Normal View History

2024-10-26 13:07:42 +04:00
{
"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": "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
"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": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHACAYAAABeV0mSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzVElEQVR4nO3deVhV9d7//9fGAUQGB0YVxQJNc0JLJVPU2zHzxKmr2zh1UFMrf3rKzAY7ZaUV3pnZqUzr9jbtpEez0ro1U485izli2eBIiAqIEwgqcmD//ujrvs8O2MBmj4vn47rWdcn6fNbe7921Yr/4rM/6LJPZbDYLAADAIHzcXQAAAIAjEW4AAIChEG4AAIChEG4AAIChEG4AAIChEG4AAIChEG4AAIChEG4AAIChEG4AAIChEG4AAICh1Opws3XrVg0fPlzNmjWTyWTSqlWrqnX8yy+/LJPJVGZr2LChcwoGAACVqtXhprCwUJ07d9bcuXPtOn7KlCnKysqy2tq3b6/777/fwZUCAICqqtXhZujQoXr11Vf1xz/+sdz2oqIiTZkyRc2bN1fDhg3Vo0cPbd682dIeEBCgiIgIy5aTk6OffvpJY8aMcdEnAAAAv1erw01lJk6cqNTUVC1btkzff/+97r//fg0ZMkRHjx4tt/+CBQvUpk0b9e7d28WVAgCAGwg3FTh58qQ++ugjrVixQr1799bNN9+sKVOm6M4779RHH31Upv+1a9e0ZMkSRm0AAHCzuu4uwFP98MMPKikpUZs2baz2FxUVqWnTpmX6r1y5UpcvX9bIkSNdVSIAACgH4aYCBQUFqlOnjvbt26c6depYtQUEBJTpv2DBAt19990KDw93VYkAAKAchJsKxMXFqaSkRGfPnq10Dk16ero2bdqkr776ykXVAQCAitTqcFNQUKBjx45Zfk5PT1daWpqaNGmiNm3a6MEHH1RycrJmz56tuLg45ebmauPGjerUqZOGDRtmOW7hwoWKjIzU0KFD3fExAADAvzGZzWazu4twl82bN6tfv35l9o8cOVKLFi1ScXGxXn31VX388cc6ffq0QkJC1LNnT73yyivq2LGjJKm0tFStWrVScnKyXnvtNVd/BAAA8Du1OtwAAADj4VZwAABgKIQbAABgKLVuQnFpaanOnDmjwMBAmUwmd5cDAACqwGw26/Lly2rWrJl8fGyPzdS6cHPmzBlFRUW5uwwAAGCHzMxMtWjRwmafWhduAgMDJf32HycoKMjN1QAAgKrIz89XVFSU5XvclloXbm5cigoKCiLcAADgZaoypYQJxQAAwFAINwAAwFAINwAAwFAINwAAwFAINwAAwFAINwAAwFAINwAAwFAINwAAwFAINwAAwFAINwAAwFBq3eMXAG9zIrdAGReuKLppQ7UOaejucgDA4xFuAA916cp1Pf6PNG09mmvZ1yc2VO8mxSnYv54bKwMAz8ZlKcBDPf6PNO04ds5q345j5/SXfxxwU0UA4B0IN4AHOpFboK1Hc1ViNlvtLzGbtfVortLPFbqpMgDwfG4NN/PmzVOnTp0UFBSkoKAgxcfHa+3atTaPWbFihW655Rb5+fmpY8eO+vrrr11ULeA6GReu2Gz/9TzhBgAq4tZw06JFC82cOVP79u3T3r171b9/f91zzz368ccfy+2/c+dOJSUlacyYMTpw4IASExOVmJioQ4cOubhywLlaNfG32R7dlInFAFARk9n8u3FvN2vSpIlmzZqlMWPGlGkbMWKECgsLtXr1asu+nj17qkuXLpo/f36VXj8/P1/BwcHKy8tTUFCQw+oGHC35f3Zrx7FzVpem6phM6hUToo/HdHdjZQDgetX5/vaYOTclJSVatmyZCgsLFR8fX26f1NRUDRgwwGrf4MGDlZqaWuHrFhUVKT8/32oDvMG7SXHqFRNita9XTIjeTYpzU0UA4B3cfiv4Dz/8oPj4eF27dk0BAQFauXKl2rdvX27f7OxshYeHW+0LDw9XdnZ2ha+fkpKiV155xaE1A64Q7F9PH4/prvRzhfr1fCHr3ABAFbl95KZt27ZKS0vTd999p/Hjx2vkyJH66aefHPb6U6dOVV5enmXLzMx02GsDrtA6pKH6tQ0j2ABAFbl95KZ+/fqKiYmRJHXr1k179uzR3/72N33wwQdl+kZERCgnJ8dqX05OjiIiIip8fV9fX/n6+jq2aAAA4LHcPnLze6WlpSoqKiq3LT4+Xhs3brTat2HDhgrn6AAAgNrHrSM3U6dO1dChQ9WyZUtdvnxZS5cu1ebNm7Vu3TpJUnJyspo3b66UlBRJ0hNPPKGEhATNnj1bw4YN07Jly7R37159+OGH7vwYAADAg7g13Jw9e1bJycnKyspScHCwOnXqpHXr1mngwIGSpJMnT8rH5/8Gl+644w4tXbpUL7zwgp5//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
}