Создать набор данных для диаграммы и графика аккордов - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь преобразовать приведенный ниже набор данных в правильный формат, чтобы затем отобразить его в диаграмме аккордов.

    a   b   c   d   e   f   g   h
0   1   0   0   0   0   1   0   0
1   1   0   0   0   0   0   0   0
2   1   0   1   1   1   1   1   1
3   1   0   1   1   0   1   1   1
4   1   0   0   0   0   0   0   0
5   0   1   0   0   1   1   1   1
6   1   1   0   0   1   1   1   1
7   1   1   1   1   1   1   1   1
8   1   1   0   0   1   1   0   0
9   1   1   1   0   1   0   1   0
10  1   1   1   0   1   1   0   0
11  1   0   0   0   0   1   0   0
12  1   1   1   1   1   1   1   1
13  1   1   1   1   1   1   1   1
14  0   1   1   1   1   1   1   0

Результатом будет диаграмма аккордов, показывающая все возможные комбинации между переменными, причем каждая ширина потока является счетчиком определенных случаев комбинации в наборе данных - например, счет + + b равен 7 в наборе данных выше (где оба 1).

1 Ответ

0 голосов
/ 11 июля 2019

Я не знаю много о том, какая библиотека аккордов может быть лучшей, но могу я вам немного помочь:

Сначала мы определим наши данные в наборе данных pandas

import pandas as pd

data = [
    [1,   0,   0,   0,   0,   1,   0,   0],
    [1,   0,   0,   0,   0,   0,   0,   0],
    [1,   0,   1,   1,   1,   1,   1,   1],
    [1,   0,   0,   0,   0,   0,   0,   0],
    [1,   0,   1,   1,   0,   1,   1,   1],
    [0,   1,   0,   0,   1,   1,   1,   1],
    [1,   1,   0,   0,   1,   1,   1,   1],
    [1,   1,   1,   1,   1,   1,   1,   1],
    [1,   1,   0,   0,   1,   1,   0,   0],
    [1,   1,   1,   0,   1,   0,   1,   0],
    [1,   1,   1,   0,   1,   1,   0,   0],
    [1,   0,   0,   0,   0,   1,   0,   0],
    [1,   1,   1,   1,   1,   1,   1,   1],
    [1,   1,   1,   1,   1,   1,   1,   1],
    [0,   1,   1,   1,   1,   1,   1,   0]]

dataframe = pd.DataFrame(data, columns = ['a','b','c','d','e','f','g','h'])

теперь мы реализуем алгоритм

def relationship (columnsList, dataframe):
    result = 0
    for index, row in dataframe.iterrows():
        equal = True
        for col in range(len(columnsList)-1):
            if (equal and row[columnsList[col]] == row[columnsList[col+1]]):
                equal = True
            else:
                equal = False
        result += 1 if equal else 0

    return result

Некоторые тесты

>>> relationship (['a','b','d'], dataframe) # a+b+d
3
>>> relationship (['a','b','h'], dataframe) # a+b+h
4
>>> relationship (['a','b'], dataframe) # a+b
7

Диаграмма на ваше усмотрение, надеюсь, вы найдете это полезным!

...