簡體   English   中英

將數據框轉換為熱圖矩陣?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM