簡體   English   中英

來自 DataFrame 的熱圖

[英]Heatmap from DataFrame


我在數據幀和結果(output1、output2、output3)中有實驗列表(exp_id)(
exp_id 輸出1 輸出2 輸出3
exp1 一種 b 鈉鹽
exp2 c 一種 b
exp3 一種 鈉鹽 d
exp4 一種 d c

我想創建另一個表,其中“頻率”列描述了前一個表中一個實驗(行)中一對的出現頻率。 然后我需要從這個表中構建一個熱圖,其中顏色的亮度表示圖對的出現頻率

一對 搭檔1 搭檔2 頻率
1個 一種 b 2個
2個 一種 c 2個
3個 一種 d 2個
4個 b 一種 2個
5個 b d 0
6個 b c 1個
7 c 一種 2個
8個 c b 1個
9 c d 1個
10 d 一種 2個
11 d b 0
12 d c 1個

您可以創建每行的所有組合 ( q1,q2 ) 的 dataframe ,然后以兩種方式使用這些組合( q1,q2q2,q1 ),然后對它們進行計數並創建一個表。

from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from itertools import combinations

df = pd.read_html('https://stackoverflow.com/questions/71877699/heatmap-from-dataframe')[0]

combos1 = pd.DataFrame([[q1, q2] for p1, p2, p3 in zip(df['output1'], df['output2'], df['output3'])
                        for q1, q2 in combinations([p1, p2, p3], 2) if not np.NaN in [q1, q2]],
                       columns=['q1', 'q2'])
combos2 = pd.DataFrame({'q1': list(combos1['q1']) + list(combos1['q2']),
                        'q2': list(combos1['q2']) + list(combos1['q1'])})
table = combos2.value_counts().reset_index(name='count').pivot('q1', 'q2', 'count')
sns.heatmap(data=table, annot=True, fmt='.0f', cmap='rocket')
plt.show()

來自組合的熱圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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