我想根據我的熊貓數據框繪製維恩圖。我明白matplotlib_venn
接受集作爲輸入。我的數據集包含客戶端ID和另外兩列包含信息,如果客戶端在廣告系列中。用熊貓和matplotlib_venn繪製維恩圖
df_dataset = pd.read_csv('...path...',delimiter=',',decimal=',')
campaign_a = df_dataset[(df_dataset['CAM_A'] == 1)]
campaign_b = df_dataset[(df_dataset['CAM_B'] == 1)]
plt.figure(figsize=(4,4))
set1 = set(campaign_a['CLI_ID'])
set2 = set(campaign_b['CLI_ID'])
venn3([set1, set2], ('Set1', 'Set2'))
plt.show()
不過,我得到一個錯誤:
File "C:\Python27\Lib\site-packages\matplotlib_venn_venn3.py", line 44, in compute_venn3_areas areas = np.array(np.abs(diagram_areas), float)
TypeError: bad operand type for abs(): 'set'
UPDATE
基於局域網的建議,現在的工作。但由於某些原因,圖表不在一起。但在他們的文檔中,相同的代碼起作用。
plt.figure(figsize=(4,4))
set1 = set(campaign_a['CLI_ID'])
set2 = set(campaign_b['CLI_ID'])
set3 = set(union['CLI_ID'])
venn3([set1, set2, set3], ('A', 'B', 'union'))
plt.show()
UPDATE 2 - 溶液
最後,最簡單的方法似乎是每個空間的僅插入片段大小,而不是數據集。靈感here。
您的套件之間可能沒有重疊。你可以檢查'len(set1&set2)','len(set1&set3)'和'len(set2&set3)'? – IanS
最後,我找到了不同的方法。而不是插入數據集,我只把這個數字,下面的例子:http://matthiaseisen.com/pp/patterns/p0144/ – HonzaB
感謝您接受我的答案:) – IanS