如何将包含布尔列的 pandas df 转换为热图兼容表?
Posted
技术标签:
【中文标题】如何将包含布尔列的 pandas df 转换为热图兼容表?【英文标题】:How to transform pandas df containing boolean columns into a heatmap compatible table? 【发布时间】:2022-01-15 17:08:32 【问题描述】:我有一张这样的桌子:
A | B | C | |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 0 | 1 | 1 |
3 | 0 | 0 | 1 |
其中每个单元格都包含该行是否连接到指定的列。
我想把它变成这样的表格:
A | B | C | |
---|---|---|---|
A | 1 | 1 | 1 |
B | 1 | 2 | 2 |
C | 1 | 2 | 3 |
其中每个单元格包含(来自原始表)同时连接到第二个表中的特定列和行名称的行数。
例如第二张表中的3表示原表中有3行连接到B列和C列。
目标是使用 plotly 从第二个表中绘制热图。
【问题讨论】:
【参考方案1】:代码:
import pandas as pd
import numpy as np
import plotly.express as px
# data for data frame
data = 'A': 0: 1, 1: 0, 2: 0,
'B': 0: 1, 1: 1, 2: 0,
'C': 0: 1, 1: 1, 2: 1
# create dataframe
df = pd.DataFrame(data)
# list for our combination values
values = []
# loop over each column combination -
# AA, AB, AC, BA, BB, BC, CA, CB, CC
for row in df.columns:
# create a list for each row value
# first iteration [AA, AB, AC]
# Second iteration [BA, BB, BC]
# third iteration [CA, CB, CC]
temp_val = []
for col in df.columns:
# get number of rows that are connected
val = sum(df[row] & df[col])
# add to temp list
temp_val.append(val)
# add the row to all rows list
values.append(temp_val)
# create data frame
heat_df = pd.DataFrame(values, index=df.columns, columns=df.columns)
# plot heatmap
fig = px.imshow(heat_df)
fig.show()
数据帧输出:
A B C
A 1 1 1
B 1 2 2
C 1 2 3
热图:
【讨论】:
以上是关于如何将包含布尔列的 pandas df 转换为热图兼容表?的主要内容,如果未能解决你的问题,请参考以下文章