AIM-PIbd-31-Masenkin-M-S/lab_1/lab1.ipynb

240 lines
208 KiB
Plaintext
Raw Normal View History

2024-09-16 03:56:08 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Начало лабораторной работы.\n",
"Выгрузка данных их csv-файла в датафрейм:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"from typing import Any\n",
"\n",
"import pandas as pd\n",
"from pandas import DataFrame, Series\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"df: DataFrame = pd.read_csv('..//static//csv//TSLA.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Краткая информация о столбцах датафрейма:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 156 entries, 0 to 155\n",
"Data columns (total 9 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Insider Trading 156 non-null object \n",
" 1 Relationship 156 non-null object \n",
" 2 Date 156 non-null object \n",
" 3 Transaction 156 non-null object \n",
" 4 Cost 156 non-null float64\n",
" 5 Shares 156 non-null object \n",
" 6 Value ($) 156 non-null object \n",
" 7 Shares Total 156 non-null object \n",
" 8 SEC Form 4 156 non-null object \n",
"dtypes: float64(1), object(8)\n",
"memory usage: 11.1+ KB\n",
" count mean std min 25% 50% 75% max\n",
"Cost 156.0 478.785641 448.922903 0.0 50.5225 240.225 934.1075 1171.04\n"
]
}
],
"source": [
"df.info()\n",
"print(df.describe().transpose())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## График 1.\n",
"\n",
"### Круговая диаграмма.\n",
"\n",
"Данная круговая диаграмма отображает распределение количества сделок, совершенных инсайдерами. Это позволяет сделать вывод о том, какие инсайдеры были наиболее активны в торговле акциями, давая возможность быстро оценить лидеров по количеству транзакций, коим в данном случае является CEO компании — Илон Маск."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Подсчет количества сделок для каждого инсайдера\n",
"insider_count: Series[int] = df['Insider Trading'].value_counts()\n",
"\n",
"# Получение цветовой схемы\n",
"colors = plt.get_cmap('tab10')(range(len(insider_count)))\n",
"\n",
"# Визуализация в виде круговой диаграммы\n",
"plt.figure(figsize=(8, 8))\n",
"insider_count.plot(kind='pie', autopct='%1.1f%%', startangle=90, colors=colors, labels=['']*len(insider_count))\n",
"\n",
"# Добавление легенды\n",
"plt.legend(labels=insider_count.index, loc='upper right', bbox_to_anchor=(1.3, 1))\n",
"plt.title('Распределение количества сделок среди инсайдеров')\n",
"plt.ylabel('')\n",
"plt.axis('equal')\n",
"\n",
"# Отображение графика\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## График 2.\n",
"\n",
"### Столбчатая диаграмма.\n",
"\n",
"Диаграмма показывает сколько сделок каждого типа было совершено инсайдерами. Для каждого инсайдера отдельный столбец, где каждый цвет представляет один тип сделки. На основе полученного графика можно сделать вывод, что основную часть сделок составляют продажи акций, а не опционов."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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5Orqqq5duypnzpw6efKkli5davvedu7cqa1bt+q1115TtmzZdObMGc2cOVPVq1fXoUOH5O7u/sjlf/vtt/rnn39ijeFJtnG3bt1s9bFXr146ffq0PvvsM+3du1dbtmyRq6urbd7jx4/r1Vdf1dtvv60OHTpo7ty5at26tVauXKk6depIenBsqlSpku7evatevXopbdq0mj9/vpo0aaJffvlFzZs3t1v/4469AJIwAwAJ3Ny5c40ks2zZMpM7d24jydStWzfGee/fv28yZMhgihQpYu7du2crX7ZsmZFkhgwZYjd/WFiYkWSGDx8ebX2nT5+2lUkyQ4cOtb1+//33TYYMGUzp0qVNtWrVbOXDhw83kozVarVbT44cOUyHDh1sr0eOHGk8PDzMsWPH7OYbOHCgSZYsmTl37pwxxpg///zTSDK9evWK9lkfXsejYo+0fv16I8msX7/eVhYSEmJcXFzMO++8Yytr1qyZSZEihTl58qStLCAgwHh5eZmqVatGW25UTxPv6tWrjSTzyy+/2Mp69OhhHj41denSxWTOnNn8999/duWvvfaa8fHxMXfv3rUrb9u2rfH397cre/j7K1GihMmQIYO5fv26rWz//v3GxcXFtG/f3lY2dOhQWzxnzpwxmTNnNi+99JJd3XqUqNs7JCTEVK9e3WTIkMGcOHHCbr7w8HATGhpqV3bz5k2TMWNG07lz52jLHT9+vEmWLJlZuXKlMca+bn344YfGzc3NbN68OcaY5syZYySZXbt22coaNmxocuTIYTff026fa9euxbi+p90fY1OtWjW7fS2qDh062H2GgwcPGhcXF9OgQYNo+0OOHDlMw4YNoy0jprr3cN0yxph69eqZXLlyPXHcWbJkMY0aNbK93rlzp5Fk5s6dG23ejz76yFgsFruyh48ds2fPNpLMtm3b7OaTZHr06BFrLDEdA8qXL2/bTlH3kUd9tzHFX7VqVePl5WXOnj1rN2/UfT6mbblt2zYjyXzzzTe2soePYSEhISZ79uy2GGPabk+yjTdt2mQkme+//97uvStXroxWniNHDiPJLFq0yFYWFBRkMmfObEqWLGkr69Onj5FkNm3aZCu7deuW8ff3Nzlz5jQRERHGmCc/9gJIumheDiDR6Nixo86fP6/XX39dq1ev1sKFC6PNs2vXLl29elXvvPOOXT/vhg0bqkCBAtGa/d2/f1+S5Obm9sRxXLx4UZ9++qkGDx5sd3dPkjJkyCBJunDhQqzLWLhwoa156H///Wf7q127tiIiIvTXX39JkhYtWiSLxaKhQ4dGW0ZMzbCfRFBQkP777z+dO3dO48ePl9VqVc2aNSVJERERWr16tZo1a6ZcuXLZ3pM5c2a9/vrr2rx5s4KDgx+57KeJN/IuZGz98Y0xWrRokRo3bixjjN22qlevnoKCgrRnzx6799y/fz/W7/PSpUvat2+fOnbsqDRp0tjKixUrpjp16sR41+/69euqV6+evLy8tGTJkqcaQ8Bqtap9+/bavn27li9frty5c9tNT5YsmVKkSGGb98aNGwoPD1eZMmWifTZJGjBggN544w298sorOnTokK3822+/1SeffKLZs2ercuXKMcbyJNs8LtvnUZ52f4wvgwYNUqlSpdS6detnWk6qVKls/4/cb6pVq6ZTp04pKCjoiZYREhL
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Подсчет количества сделок каждого типа (Transaction) для каждого инсайдера\n",
"transaction_count: DataFrame | Series[Any] = df.groupby(['Insider Trading', 'Transaction']).size().unstack(fill_value=0)\n",
"\n",
"# Визуализация в виде столбчатой диаграммы\n",
"transaction_count[['Sale', 'Option Exercise']].plot(kind='bar', stacked=True, figsize=(10, 6), color=['skyblue', 'lightgreen'])\n",
"\n",
"# Добавление легенды\n",
"plt.title('Количество сделок каждого типа для инсайдеров')\n",
"plt.xlabel('Инсайдер')\n",
"plt.ylabel('Количество сделок')\n",
"plt.xticks(rotation=45, ha='right')\n",
"plt.legend(title='Тип сделки')\n",
"plt.grid(True)\n",
"\n",
"# Отображение графика\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## График 3.\n",
"\n",
"### Линейная диаграмма.\n",
"\n",
"Данная линейная диаграмма отображает количество сделок, совершённых инсайдерами, в разрезе по месяцам. Это помогает выявить периоды с наибольшей активностью инсайдеров или сезонные колебания на рынке. На графике видно, что продажи акций летом постепенно уменьшались и почти достигли своего минимума в конце сезона, после чего начался рост."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACtYklEQVR4nOzdd3hUZfrG8e+kE1KogQChg4B0REGkd5CODezYUVB3dXV3LazrYll/ir2sqyiiLgiCSu8goNKLgPQk9JaEENLP7483CcYECMPMnJnJ/bmuuebMmZkzd5JhmHnmfZ/XYVmWhYiIiIiIiIiIiAcF2B1ARERERERERERKHxWlRERERERERETE41SUEhERERERERERj1NRSkREREREREREPE5FKRERERERERER8TgVpURERERERERExONUlBIREREREREREY9TUUpERERERERERDxORSkREREREREREfE4FaVERERERERERMTjVJQSERERERERERGPU1FKRETEJp9++ikOh4M1a9YUue6jjz7C4XAwePBgcnJybEgnIiIiIuJeKkqJiIh4menTp/Pggw/SsWNHvvrqKwIDA+2OJCIiIiLicipKiYiIeJElS5Zwyy230KRJE7777jvCwsLsjiQiIiIi4hYqSomIiHiJDRs2MGjQIGJjY5k7dy7R0dFFbjNlyhTatGlDmTJlqFSpErfeeisHDhwo9ngOh6PY0759+wrd5vnnny90v1dffRWHw0GXLl0K9j3//PM4HI4ij1G7dm3uvPPOQvuSkpJ49NFHiYuLIzQ0lPr16/Pyyy+Tm5tb6Ha5ublMmDCBZs2aERYWRuXKlenTp0/BdMbz5c8/5edbsmRJof2hoaE0bNiQ8ePHY1lWocdcv349ffv2JSoqioiICLp3787q1auL/f390cXy5vtjnt+f/ujAgQPcfffdVKlShdDQUK688kr++9//Fvv4d955Z7HH/OPfb9GiRXTs2JGyZctSrlw5Bg0axLZt2wrdpri/5+LFiwkNDeWBBx644O/hQj+fw+Eo8nzYs2cPN9xwAxUqVCA8PJx27drxww8/XPAx8uUf84033ihyXaNGjXA4HDz88MOF9rvq+QeQmprKn/70J+rWrUtwcHChn/P48eOFcv4xB8D1119P7dq1C+3btGkTd955J3Xr1iUsLIyqVaty9913c+LEiUK3y/8bxcTEkJWVVei6L7/8stgcIiIivibI7gAiIiICu3fvpk+fPoSGhjJ37lxiY2OL3ObTTz/lrrvuom3btowfP54jR44wYcIEfvzxR9avX0+5cuWK3GfIkCEMHToUgOXLl/Phhx9eMEdSUhLjx493+udIS0ujc+fOHDhwgPvvv5+aNWuycuVKnn76aQ4dOlSouDBq1Cg+/fRT+vbtyz333EN2djbLly9n9erVXHXVVXz++ecFt83P/vrrr1OpUiUAqlSpUuix//rXv9K4cWPOnj3L119/zV//+ldiYmIYNWoUAFu3bqVjx45ERUXx5JNPEhwczAcffECXLl1YunQp11xzzQV/tovl/aMxY8bQtm1bAD777DPmz59f6PojR47Qrl27goJG5cqVmT17NqNGjSIlJYVHH320yDErVarE66+/XnD5tttuK3T9ggUL6Nu3L3Xr1uX555/n7NmzvPXWW3To0IF169YVKZDk27hxI4MHD6Zfv3688847F/w9FPfz5bvnnnuK/IzXXnstaWlpjBkzhooVKzJx4kQGDhzI1KlTGTJkyEUfJywsjE8++aTQ72PlypXs37+/yG1d+fwDeOKJJ3j//fcZNWoUHTp0IDg4mGnTpjF9+vQS/Y6KM3/+fPbs2cNdd91F1apV2bp1Kx9++CFbt25l9erVRYqFp0+f5vvvvy/0u/rkk08ICwsjPT3d6RwiIiJewRIRERFbfPLJJxZgff/991a9evUswOrVq1ext83MzLRiYmKspk2bWmfPni3Y//3331uA9eyzzxa6fVZWlgVY48aNK/J4e/fuLdgHWM8991zB5SeffNKKiYmx2rRpY3Xu3Llg/7hx4yzAys3NLfQ4tWrVsu64446Cyy+88IJVtmxZ67fffit0u6eeesoKDAy04uPjLcuyrEWLFlmANWbMmCI/6x8f43zZ8y1evNgCrMWLFxfsS09PtwICAqyHHnqoYN/gwYOtkJAQa/fu3QX7Dh48aEVGRlqdOnUqctzfu5S88+bNswBr6tSpBftGjx5t/fFt16hRo6zY2Fjr+PHjhfbffPPNVnR0tJWWllZo/8iRI606deoU2vfHv1/Lli2tmJgY68SJEwX7Nm7caAUEBFi33357wb7nnnuuIM++ffus2NhY67rrriv03Dqf/N/3lClTilxXtmzZQs+HRx991AKs5cuXF+w7ffq0VadOHat27dpWTk7OBR8LsIYPH24FBQVZa9asKdg/atQoa8SIERZgjR49umC/q59/sbGxVu/evQtdn/+7O3bsWKGcv8+Rr3///latWrUK7fvj39WyLOvLL7+0AGvZsmVFHueWW26xrr/++oL9+/fvtwICAqxbbrmlSA4RERFfo+l7IiIiNrvzzjtJSEhgxIgRzJs3jylTphS5zZo1azh69CgPPfRQoT5T/fv3p1GjRkWmQ2VmZgIQGhpa4hwHDhzgrbfe4plnniEiIqLQdTExMQAkJiZe8BhTpkyhY8eOlC9fnuPHjxecevToQU5ODsuWLQPgm2++weFw8NxzzxU5RnHT3EoiOTmZ48ePEx8fzyuvvEJubi7dunUDICcnh3nz5jF48GDq1q1bcJ/Y2FhGjBjBihUrSElJOe+xLyVv/uiVC/UDsyyLb775hgEDBmBZVqHfVe/evUlOTmbdunWF7pOZmXnBv+ehQ4fYsGEDd955JxUqVCjY37x5c3r27MmsWbOK3OfEiRP07t2byMhIZs6c6fIeZrNmzeLqq6/muuuuK9gXERHBfffdx759+/j1118veowqVarQv39/PvnkE8CMhvrf//7HXXfdVeS2rn7+nT59mooVK17yz30hZcqUKdhOT0/n+PHjtGvXDqDI3xzg7rvvZs6cORw+fBiAiRMn0r59exo2bOjSXCIiInZQUUpERMRmJ0+eZNKkSUycOJGWLVsyduxYkpOTC90mf6rSFVdcUeT+jRo1KjKVKSkpCaBIcelCnnvuOapVq8b9999f5Lr27dvjcDh4+umn2bdvX8GH/T/26dm5cydz5syhcuXKhU49evQA4OjRo4CZrlitWrVCxZPLNXjwYCpXrkytWrV4/vnn+fvf/86wYcMAOHbsGGlpacX+/ho3bkxubi4JCQnnPfal5M3v8VNcT7B8x44dIykpiQ8//LDI7yq/2JL/u8qXlJR0wb/nhZ4jjRs35vjx45w5c6bQ/uuvv54dO3aQlJRUpP+WK+zfv/+8eX6f+WLuuusuJk+eTEZGBlOmTKF8+fIFBcffc/Xzr3379kyfPp2pU6dy6NAhjh8/TlpaWokyn8/JkycZO3YsVapUoUyZMlSuXJk6deoAFPl3D9CyZUuaNm3KZ599hmVZBdN4RURE/IF6SomIiNjs1Vdf5YYbbgDgww8/pF27djz99NO8++67Th8zf1RF1apVS3T7bdu28emnnzJp0iSCg4OLXN+iRQuee+45xo0bxxdffHHe4+Tm5tKzZ0+efPLJYq935+iOf//737Ro0YKsrCx++eUX/vnPfxIUFFTsaBh3ym8kf77+TUBBMe/WW2/ljjvuKPY2zZs3L3T58OHD1KpVyyUZ823fvp3Zs2dz44038qc//algNJK36d+/PyEhIXz77bd88skn3HHHHQQEFP1u1dXPvw8//JBbbrml4N+nK9x4442sXLmSJ554gpYtWxIREUFubi59+vQpUuTNd/fdd/Puu+9y9dVXc/jwYW688UZee+01l2USERGxi4pSIiIiNuvUqVPBdtu2bRk9ejTvvPMOt99+e8G0nvxixI4dO4qMENmxY0eRYkX+tKj8ESkX8/TTT9OyZUtuuumm897mueee47777mP79u3k5OQApqjye/Xq1SM1NbVgZMr51KtXj7lz53L
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Преобразование колонки 'Date' в datetime формат\n",
"df['Date'] = pd.to_datetime(df['Date'])\n",
"\n",
"# Создание новой колонки с месяцами\n",
"df['Month'] = df['Date'].dt.to_period('M')\n",
"\n",
"# Подсчет количества сделок по месяцам\n",
"monthly_transactions: DataFrame | Series[int] = df.groupby('Month').size()\n",
"\n",
"# Визуализация в виде линейной диаграммы\n",
"plt.figure(figsize=(12, 6))\n",
"monthly_transactions.plot(kind='line', marker='o', color='darkorange')\n",
"\n",
"# Добавление легенды\n",
"plt.title('Количество сделок по месяцам')\n",
"plt.xlabel('Месяц')\n",
"plt.ylabel('Количество сделок')\n",
"plt.grid(True)\n",
"plt.xticks(rotation=45)\n",
"\n",
"# Отображение графика\n",
"plt.tight_layout()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "aimenv",
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}