IIS_2023_1/arzamaskina_milana_lab_4/main.py

45 lines
1.8 KiB
Python
Raw Normal View History

2023-12-02 17:02:45 +04:00
import pandas as pd
from scipy.cluster.hierarchy import linkage, fcluster
import matplotlib.pyplot as plt
import seaborn as sns
# Кластеризация: Группировка стран на основе их характеристик:
# количество выбросов от добычи нефтепродуктов, газа, угля в 2020 году.
# Загружаем данные, отбираем данные за 2020 год
# и удаляем строки, в которых данные отсутствуют
data_first = pd.read_csv('CO2.csv')
data_first = data_first.dropna()
data = data_first[data_first['Year'] == 2020]
data = data[data.Country != 'Global']
names = data['Country']
# Выделение признаков
features = data[['Coal', 'Oil', 'Gas']]
# Применение алгоритма linkage
link_cl = linkage(features, method='ward', metric='euclidean')
# Кластеризация на 3 кластера
clusters = fcluster(link_cl, 4, criterion='maxclust')
# Добавление информации о кластерах в исходные данные
features['cluster'] = clusters
# Диаграмма результатов кластеризации
plt.figure(figsize=(12, 6))
sns.scatterplot(x='Coal', y='Gas', size='Oil',
sizes=(10, 200), hue='cluster', palette='viridis', data=features)
plt.title('Clustering Results')
plt.xlabel('Coal')
plt.ylabel('Gas')
# Вывод таблицы с результатами кластеризации
# Добавление наименований стран
features.insert(loc=0, column='country', value=names)
# Вывод результатов кластеризации
result_clust = features[['cluster', 'country', 'Coal', 'Oil', 'Gas']]
print(result_clust)
plt.show()