Загрузка данных
Вот полный код для задания 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__)
По условию задания, если набор данных недоступен, необходимо сообщить об этом преподавателю и использовать предоставленный им набор данных, а не заменять его другим без пояснения.