208 KiB
Начало лабораторной работы.¶
Выгрузка данных их csv-файла в датафрейм:
from typing import Any
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
df: DataFrame = pd.read_csv('..//static//csv//TSLA.csv')
Краткая информация о столбцах датафрейма:
df.info()
print(df.describe().transpose())
График 1.¶
Круговая диаграмма.¶
Данная круговая диаграмма отображает распределение количества сделок, совершенных инсайдерами. Это позволяет сделать вывод о том, какие инсайдеры были наиболее активны в торговле акциями, давая возможность быстро оценить лидеров по количеству транзакций, коим в данном случае является CEO компании — Илон Маск.
# Подсчет количества сделок для каждого инсайдера
insider_count: Series[int] = df['Insider Trading'].value_counts()
# Получение цветовой схемы
colors = plt.get_cmap('tab10')(range(len(insider_count)))
# Визуализация в виде круговой диаграммы
plt.figure(figsize=(8, 8))
insider_count.plot(kind='pie', autopct='%1.1f%%', startangle=90, colors=colors, labels=['']*len(insider_count))
# Добавление легенды
plt.legend(labels=insider_count.index, loc='upper right', bbox_to_anchor=(1.3, 1))
plt.title('Распределение количества сделок среди инсайдеров')
plt.ylabel('')
plt.axis('equal')
# Отображение графика
plt.show()
График 2.¶
Столбчатая диаграмма.¶
Диаграмма показывает сколько сделок каждого типа было совершено инсайдерами. Для каждого инсайдера отдельный столбец, где каждый цвет представляет один тип сделки. На основе полученного графика можно сделать вывод, что основную часть сделок составляют продажи акций, а не опционов.
# Подсчет количества сделок каждого типа (Transaction) для каждого инсайдера
transaction_count: DataFrame | Series[Any] = df.groupby(['Insider Trading', 'Transaction']).size().unstack(fill_value=0)
# Визуализация в виде столбчатой диаграммы
transaction_count[['Sale', 'Option Exercise']].plot(kind='bar', stacked=True, figsize=(10, 6), color=['skyblue', 'lightgreen'])
# Добавление легенды
plt.title('Количество сделок каждого типа для инсайдеров')
plt.xlabel('Инсайдер')
plt.ylabel('Количество сделок')
plt.xticks(rotation=45, ha='right')
plt.legend(title='Тип сделки')
plt.grid(True)
# Отображение графика
plt.tight_layout()
plt.show()
График 3.¶
Линейная диаграмма.¶
Данная линейная диаграмма отображает количество сделок, совершённых инсайдерами, в разрезе по месяцам. Это помогает выявить периоды с наибольшей активностью инсайдеров или сезонные колебания на рынке. На графике видно, что продажи акций летом постепенно уменьшались и почти достигли своего минимума в конце сезона, после чего начался рост.
# Преобразование колонки 'Date' в datetime формат
df['Date'] = pd.to_datetime(df['Date'])
# Создание новой колонки с месяцами
df['Month'] = df['Date'].dt.to_period('M')
# Подсчет количества сделок по месяцам
monthly_transactions: DataFrame | Series[int] = df.groupby('Month').size()
# Визуализация в виде линейной диаграммы
plt.figure(figsize=(12, 6))
monthly_transactions.plot(kind='line', marker='o', color='darkorange')
# Добавление легенды
plt.title('Количество сделок по месяцам')
plt.xlabel('Месяц')
plt.ylabel('Количество сделок')
plt.grid(True)
plt.xticks(rotation=45)
# Отображение графика
plt.tight_layout()
plt.show()