You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas将DataFrame两列数据构建为相似度矩阵?

pandas DataFrame 相似度矩阵可视化实现方案
  • 前置依赖安装
    执行以下命令安装需要的第三方库:
    pip install pandas seaborn matplotlib numpy
  • 数据预处理
    原始数据如果是长表结构(每行存储两个实体及对应的相似度值),需要先透视为矩阵结构,行、列分别对应两组实体,单元格填充对应相似度数值:
    import pandas as pd
    import numpy as np
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 读取本地存储的matrix.csv文件
    df = pd.read_csv("matrix.csv")
    # 透视生成宽表矩阵,把代码里的col1、col2、similarity替换成你数据集里的实际列名
    # col1/col2是你要作为矩阵行、列的两列字段名,similarity是相似度值字段名
    sim_matrix = df.pivot(index="col1", columns="col2", values="similarity")
    # 若为对称相似度矩阵(A与B的相似度=B与A的相似度),执行以下补全逻辑
    sim_matrix = sim_matrix.combine_first(sim_matrix.T)
    # 补全对角线值:实体与自身的相似度默认设为1
    np.fill_diagonal(sim_matrix.values, 1)
    
  • 可视化绘制
    直接调用seaborn的热力图接口即可生成带数值标注的矩阵图,样式匹配参考效果:
    # 设置画布尺寸,可根据实体数量调整大小避免标签拥挤
    plt.figure(figsize=(12, 10))
    # 绘制热力图
    sns.heatmap(
        sim_matrix,
        annot=True, # 开启单元格数值标注
        cmap="Blues", # 蓝色渐变配色
        vmin=0, vmax=1, # 相似度取值范围,根据你的实际数值范围调整
        square=True, # 单元格设置为正方形
        linewidths=0.5 # 添加单元格分割线
    )
    # 调整x轴标签角度避免重叠
    plt.xticks(rotation=45, ha="right")
    # 自动调整布局防止文字截断
    plt.tight_layout()
    # 展示图像
    plt.show()
    

常见问题排查:如果运行后提示透视时存在重复值报错,可将pivot步骤替换为pivot_table,设置聚合函数比如aggfunc="mean"对重复的相似度值取平均即可。如果你的数据集本身已经是行、列、值齐全的宽表矩阵格式,直接跳过透视步骤传入heatmap即可。

内容的提问来源于stack exchange,提问作者Noob Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:51:27