Построение дендрограммы с набором данных Евровидения 2016 в Python - PullRequest
0 голосов
/ 09 июля 2020

Я делаю упражнение, в котором мы строим дендрограмму для набора данных Евровидения. Образцы уже загружены для меня в упражнении. Я не думаю, что действительно учусь этому, поэтому я сам собрал образцы.

Моя проблема в том, что то, как я это сделал, не очень похоже на pythoni c, и я уверен, что у меня должен быть более быстрый и короткий способ достичь того же.

import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import linkage, dendrogram
import pandas as pd
import numpy as np

# Extract data from the data.
eurovision = pd.read_csv('eurovision-2016.csv')
country_names = eurovision['From country'].unique()
toCountry = eurovision['To country'].unique()
samples = np.empty((country_names.shape[0], toCountry.shape[0]))

# Set up samples such that each row corresponds to a voting coutry, and each
# column corresponds to a performance that was voted for.
for i in range(eurovision.shape[0]):
    toFound = False
    toCount = 0
    fromFound = False
    fromCount = 0
    while toFound == False:
        if eurovision['To country'][i] == toCountry[toCount]:
            toFound = True
            while fromFound == False:
                if eurovision['From country'][i] == country_names[fromCount]:
                    fromFound = True
                else:
                    fromCount += 1
        else:
            toCount += 1
    samples[fromCount,toCount] = eurovision['Televote Rank'][i]

samples = np.round(samples, 0)

#Plot the dendrogram.
mergings = linkage(samples, method='complete')
dendrogram(mergings, labels=country_names.tolist(), leaf_rotation=90, 
           leaf_font_size=12)
plt.show()

Я не уверен, как прикрепить набор данных csv к сообщению в Stack, но вот заголовки столбцов и 5 строк данных:

Из страны, В страну, Жюри A, Жюри B, Жюри C, Жюри D, Жюри E, Ранг жюри, Ранг телеголосования, Очки жюри, Очки телеголосования

Албания, Бельгия, 20,16,24,22,24,25,14``

Албания, Чешская Республика c, 21,15,25,23,16,22,22``

Албания, Нидерланды, 22,14,23,24,21,24,24``

Албания, Азербайджан, 19,12,11,21,11,13,19``

Албания, Венгрия, 8,13,9,14,9,10,10,1,1

И вот финальная дендрограмма:

Дендрограмма для Евровидения 2016

Есть ли лучший способ сделать это?

...