如何将包含布尔列的 pandas df 转换为热图兼容 table?
How to transform pandas df containing boolean columns into a heatmap compatible table?
我有一个 table 像这样的东西:
A
B
C
1
1
1
1
2
0
1
1
3
0
0
1
每个单元格包含该行是否连接到指定列。
我想将其转换成这样的 table:
A
B
C
A
1
1
1
B
1
2
2
C
1
2
3
其中每个单元格包含的行数(来自原始 table)已连接到第二个 table 中的特定列和行名称。
比如第二个table中的3表示原来table中有3行与B列和C列相连
目标是使用 plotly 从第二个 table 开始绘制热图。
代码:
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
热图:
我有一个 table 像这样的东西:
A | B | C | |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 0 | 1 | 1 |
3 | 0 | 0 | 1 |
每个单元格包含该行是否连接到指定列。
我想将其转换成这样的 table:
A | B | C | |
---|---|---|---|
A | 1 | 1 | 1 |
B | 1 | 2 | 2 |
C | 1 | 2 | 3 |
其中每个单元格包含的行数(来自原始 table)已连接到第二个 table 中的特定列和行名称。
比如第二个table中的3表示原来table中有3行与B列和C列相连
目标是使用 plotly 从第二个 table 开始绘制热图。
代码:
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
热图: