我正在尝试将以下数据集转换为正确的格式,然后将其绘制成和弦图。
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
结果将是一个弦图,显示变量之间的所有可能组合,每个流宽度是数据集中出现的特定组合的计数 - 例如,在上面的数据集中,a + b 计数为 7(其中两者都为 1(。
我不知道哪个可能是最好的和弦图库,但我可以帮你一点:
首先,我们在熊猫数据集中定义数据
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
图表由您决定,希望对您有所帮助!