Загрузка данных


Вот полный код для задания 2 и задания 3. Его можно скопировать в Jupyter Notebook или Google Colab и запускать по ячейкам.

Задание 2. Визуализация и анализ данных в Python

1. Импорт библиотек и загрузка данных

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="whitegrid", palette="Set2")
iris = sns.load_dataset("iris")
print("Первые пять строк:")
display(iris.head())
print("Названия столбцов:")
print(iris.columns.tolist())
print("\nТипы данных:")
print(iris.dtypes)
print("\nПропущенные значения:")
print(iris.isnull().sum())

2. Boxplot — сравнение длины лепестков у разных видов

plt.figure(figsize=(9, 5))
sns.boxplot(
    data=iris,
    x="species",
    y="petal_length"
)
plt.title("Распределение длины лепестков у разных видов ириса")
plt.xlabel("Вид ириса")
plt.ylabel("Длина лепестка (см)")
plt.tight_layout()
plt.show()

3. Scatterplot — зависимость длины чашелистика от ширины

plt.figure(figsize=(9, 6))
sns.scatterplot(
    data=iris,
    x="sepal_width",
    y="sepal_length",
    hue="species",
    s=75,
    alpha=0.85
)
plt.title("Зависимость длины чашелистика от его ширины")
plt.xlabel("Ширина чашелистика (см)")
plt.ylabel("Длина чашелистика (см)")
plt.legend(title="Вид ириса")
plt.tight_layout()
plt.show()

4. Выводы по заданию 2

Длина лепестков у Iris-setosa значительно меньше, чем у Iris-versicolor и Iris-virginica. Наибольшая длина лепестков наблюдается у Iris-virginica, у которого также заметен достаточно большой разброс значений.

На точечной диаграмме наблюдается общая положительная связь между длиной и шириной чашелистика: при увеличении ширины длина в среднем также увеличивается. Виды ириса частично различаются по расположению точек, однако некоторые наблюдения пересекаются. Отдельные точки на графиках могут быть выбросами, но для точного определения необходим дополнительный анализ.

⸻

Задание 3. Интерактивная визуализация в Plotly

1. Импорт библиотеки и загрузка данных

import plotly.express as px
import pandas as pd
election = px.data.election()
print("Первые пять строк:")
display(election.head())
print("\nНазвания столбцов:")
print(election.columns.tolist())
print("\nТипы данных:")
print(election.dtypes)
print("\nРазмер набора данных:")
print(election.shape)

2. Построение интерактивной диаграммы

В наборе election есть результаты выборов по округам. Построим диаграмму, сравнивающую результаты кандидатов.

fig = px.scatter(
    election,
    x="Joly",
    y="Coderre",
    color="district",
    hover_data=["district", "winner"],
    title="Сравнение результатов кандидатов на выборах"
)
fig.update_layout(
    xaxis_title="Количество голосов за Жоли",
    yaxis_title="Количество голосов за Кодерра",
    legend_title="Округ"
)
fig.show()

3. Дополнительная диаграмма — результаты по округам

fig = px.bar(
    election,
    x="district",
    y=["Joly", "Coderre", "Bergeron"],
    barmode="group",
    title="Сравнение результатов кандидатов по округам",
    labels={
        "district": "Округ",
        "value": "Количество голосов",
        "variable": "Кандидат"
    }
)
fig.update_layout(
    xaxis_title="Округ",
    yaxis_title="Количество голосов",
    legend_title="Кандидат"
)
fig.show()

4. Выводы по заданию 3

Интерактивные диаграммы позволяют сравнить результаты кандидатов в разных округах. При наведении курсора на точки можно увидеть дополнительные сведения о наблюдениях. Столбчатая диаграмма помогает сравнить количество голосов, полученных кандидатами в каждом округе.

⸻

Важно: если при выполнении px.data.election() появится ошибка, значит набор election недоступен в установленной версии Plotly. В этом случае проверь версию библиотеки:

import plotly
print(plotly.__version__)

По условию задания, если набор данных недоступен, необходимо сообщить об этом преподавателю и использовать предоставленный им набор данных, а не заменять его другим без пояснения.