如何将包含布尔列的 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 转换为热图兼容表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas TimeSeries 创建热图

将 NumPy 数组转换为带有列的 Pandas 数据框

将 NumPy 数组转换为带有列的 Pandas 数据框

如何将包含嵌套列表的字典列表转换为 pandas df

将 pandas 转换为定义用于键值的列的字典

将 pandas 列中的列表转换为字符串