45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
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()
|