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

Python如何导入xlsx文件数据集并生成指定的两种矩阵

Xlsx数据集导入Python生成目标矩阵实现方案

依赖安装

首先安装所需的第三方库:
pip install pandas openpyxl numpy

  • pandas用于读取xlsx文件和处理表格数据
  • openpyxl是pandas读取xlsx格式文件的必要驱动
  • numpy用于矩阵数值计算

步骤1:读取xlsx数据集

import pandas as pd
import numpy as np

# 替换为你的xlsx文件实际路径,sheet_name可指定要读取的工作表序号/名称,默认0为第一个工作表
df = pd.read_excel("你的数据集路径.xlsx", sheet_name=0, engine="openpyxl")

步骤2:生成Matrix 1(同维度关联/共现矩阵)

适用于行、列索引为同一属性的所有唯一值,单元格值为两个值共现次数的场景:

# 替换col_a为你要生成矩阵的对应属性列名
target_col = "col_a"
# 替换group_id为你用来判断共现的分组列名,比如同订单、同事件的id列
group_col = "group_id"

# 生成属性值到索引的映射
unique_vals = df[target_col].unique()
val_to_idx = {val: idx for idx, val in enumerate(unique_vals)}
n = len(unique_vals)
matrix1 = np.zeros((n, n), dtype=int)

# 统计共现次数
for _, group_data in df.groupby(group_col):
    current_vals = group_data[target_col].unique()
    for i in range(len(current_vals)):
        for j in range(i, len(current_vals)):
            idx1 = val_to_idx[current_vals[i]]
            idx2 = val_to_idx[current_vals[j]]
            matrix1[idx1][idx2] += 1
            if i != j:
                matrix1[idx2][idx1] += 1

# 可转为带行列名的DataFrame方便查看
matrix1_df = pd.DataFrame(matrix1, index=unique_vals, columns=unique_vals)

步骤3:生成Matrix 2(跨维度关联矩阵)

适用于行、列索引为不同属性的唯一值,单元格值为两个属性值关联次数/是否存在关联的场景:

# 替换为你对应的行、列属性列名
row_col = "col_a"
col_col = "col_b"

row_vals = df[row_col].unique()
col_vals = df[col_col].unique()
row_to_idx = {val: idx for idx, val in enumerate(row_vals)}
col_to_idx = {val: idx for idx, val in enumerate(col_vals)}

matrix2 = np.zeros((len(row_vals), len(col_vals)), dtype=int)
for _, row in df.iterrows():
    r_idx = row_to_idx[row[row_col]]
    c_idx = col_to_idx[row[col_col]]
    # 如果仅需标记是否存在关联,改为matrix2[r_idx][c_idx] = 1即可
    matrix2[r_idx][c_idx] += 1

# 转为带行列名的DataFrame
matrix2_df = pd.DataFrame(matrix2, index=row_vals, columns=col_vals)

可选:矩阵导出

如果需要将生成的矩阵保存到本地:

# 导出为csv格式
matrix1_df.to_csv("matrix1.csv")
matrix2_df.to_csv("matrix2.csv")

# 导出为单个xlsx文件的不同工作表
with pd.ExcelWriter("生成的矩阵.xlsx") as writer:
    matrix1_df.to_excel(writer, sheet_name="Matrix1")
    matrix2_df.to_excel(writer, sheet_name="Matrix2")

注意:上述代码中的列名均为示例,需要替换为你自己数据集对应的实际列名即可运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:06:04