亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為列表字典創建共現熱圖

為列表字典創建共現熱圖

米琪卡哇伊 2021-12-29 10:16:58
我無法弄清楚解決此問題的包/邏輯流程最有效。我有一本這樣的字典(為了便于閱讀,已縮短了值列表):dict = {'term_1': ['30939593',  '30938516',  '30930058',  '30928978',  '30927713',  '30927284',  '30925500',  '30923740',  '30922102',   ...],'term_2': ['30931235',  '30938516',  '30928978',  '30922102',  '30858642',  '30828702',  '30815562',  '30805732',  '30766735',  '30746412',  '30740089',   ...],   etc. }在我列出的兩個術語之間,有三個值同時出現(30938516、30928978 和 30922102)。字典包含大約 1800 個鍵,每個鍵都有一個對應 ID 的值列表,其中一些列表可能有 100,000 個值。我希望能夠在熱圖中基于值列表中 ID 的共現來可視化字典中每個術語之間的相似程度。如在,熱圖的 x 軸和 y 軸將按順序用相同的術語標記,熱圖的每個單元格將通過計數有多少共現值來顯示一個術語和另一個術語之間 ID 的重疊(在這種情況下,term_1 和 term_2 之間的共現為 3)。這將對所有 1800 個術語重復,導致 1800x1800 熱圖。將值視為字符串,我嘗試將字典轉換為兩個數據框:一個是術語是列標題,值是按列列出的,另一個是術語是行標題,值是按行列出的.首先,我將字典轉換為數據框df = pd.DataFrame.from_dict(dict, orient = 'index')df = df[df.columns[0:]].apply(    lambda x: ','.join(x.dropna().astype(str).astype(str)),    axis = 1)但是,這只會將字典轉換為長度為 1800 的單列。我還需要找到一種方法來擴展數據框,以便每列復制 1800 次。一旦我有了這個 1800 x 1800 列,我就會轉置它。df_transposed = df.T如果我們要將要比較的數據幀的每組單元格視為兩個列表,我們可以像這樣處理每個比較l1 = ['30939593',  '30938516',  '30930058',  '30928978',  '30927713',  '30927284',  '30925500',  '30923740',  '30922102']l2 = ['30931235',  '30938516',  '30928978',  '30922102',  '30858642',  '30828702',  '30815562',  '30805732',  '30766735',  '30746412',  '30740089']from collections import Counterc = len(list((Counter(l1) & Counter(l2)).elements()))c = 3但是,我不確定如何在數據框的范圍內循環遍歷我想比較 1800x1800 網格的每個單元格,以便每個網格包含一個整數值,表示每個單元格中每個術語之間有多少共現 ID。然后我會將這個 1800x1800 的整數網格轉換為熱圖。
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

一種方法是首先根據字典計算重疊d,然后使用以下方法制作所需的數據幀pivot:


x = [(k1, k2, len(set(d1) & set(d2))) for k1,d1 in d.items() for k2,d2 in d.items()]

df = pd.DataFrame(x).pivot(index=0, columns=1, values=2)


print(df)

輸出:


1       term_1  term_2

0                     

term_1       9       3

term_2       3      11

當然,對于熱圖:


sns.heatmap(df)

輸出:

http://img1.sycdn.imooc.com//61cbc5460001f33603690262.jpg

查看完整回答
反對 回復 2021-12-29
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號