[英]convert dataframe to the heatmap matrix?
我有一個具有以下結構的熊貓數據框:
df = pd.DataFrame({'entry': [['A','B','C'],['A','B','E','D'],['C'],['D','A', 'B'],['D','C','E'],['E','A']]})
這使:
entry
0 [A, B, C]
1 [A, B, E, D]
2 [C]
3 [D, A, B]
4 [D, C, E]
5 [E, A]
我想將其轉換為方陣 ,即在數據框中看到的唯一符號的大小(在本例中為5:'A','B','C','D','E'),其中每個交集是這對貨幣對一起出現的頻率(就像這里[A,B]對貨幣對被看到3次,[D,A]貨幣對-只有一次。如果同時存在3個或更多符號,我希望所有組合都因此)的輸出如下所示:
A B C D E
A 3 1 1 1
B 1 1
C 1 1
D 2
E
我是該領域的初學者,試圖編寫一個遍歷所有組合的循環。 對於條目中可能有任意數量的項存在疑問。
如果您想要無序對,則下面的方法應該起作用。
import pandas as pd
import itertools
# First get a DataFrame (or could be a Series) of the pairwise combinations in each row
combinations = df['entry'].apply(lambda x: list(itertools.combinations(sorted(x), 2)))
# Then get a list of unique values - A,B,C,D,E
unique_values = sorted(list(set(
symbol for symbol_list in df.values.flatten() for symbol in symbol_list)))
# Create empty dataframe
result = pd.DataFrame(columns=unique_values, index=unique_values)
# Iterate through symbols and fill dataframe
for symbol_pair in list(itertools.combinations(unique_values, 2)):
result.loc[symbol_pair[0], symbol_pair[1]] = combinations.apply(lambda x: symbol_pair in x).sum()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.