如何修改Python代码实现相关系数矩阵的金字塔形打印?
实现金字塔形相关系数矩阵打印的代码修改方案
我来帮你调整代码,实现想要的金字塔形上三角相关系数打印效果~
问题根源
你当前的代码已经能正确计算上三角的相关系数,但缺少每行的前置缩进,所以所有行都是顶格输出,没法形成金字塔的视觉效果。
修改后的代码(简化版,推荐)
直接用Pandas内置的列名获取方式,省去额外的csv模块读取步骤,更简洁:
import pandas as pd # 读取CSV数据 rs = pd.read_csv(r'D:/Clustering_TOP.csv', encoding='utf-8') # 获取从第2列开始的所有标题(对应你原需求的csv_title[1:]) csv_title = rs.columns[1:] title_count = len(csv_title) for i in range(title_count): # 核心改动:打印i个制表符实现金字塔缩进 print('\t' * i, end='') for j in range(i, title_count): # 计算相关系数并格式化保留4位小数(让输出更整齐) corr_result = rs[csv_title[i]].corr(rs[csv_title[j]]) print(f'{corr_result:.4f}', end='\t') print()
如果你想保留原代码的csv模块读取逻辑
可以只添加缩进的关键代码:
import pandas as pd import csv rs = pd.read_csv(r'D:/Clustering_TOP.csv', encoding='utf-8') with open('D:/Clustering_TOP.csv','r') as csvfile: reader = csv.reader(csvfile) rows = [row for row in reader] csv_title = rows[0] csv_title = csv_title[1:] title_count = len(csv_title) for i in range(title_count): # 新增:每行开头添加i个制表符实现缩进 print('\t' * i, end='') for j in range(i, title_count): corr_result = rs[csv_title[i]].corr(rs[csv_title[j]]) # 可选:格式化数值让输出更整齐 print(f'{corr_result:.4f}', end='\t') print()
关键改动说明
- 缩进实现:通过
print('\t' * i, end='')让第i行开头自动添加i个制表符,第一行无缩进,第二行1个缩进,以此类推,完美匹配金字塔形状 - 数值格式化:用
f'{corr_result:.4f}'将相关系数格式化为4位小数,避免过长的浮点数值导致排版混乱,让输出更整齐美观
内容的提问来源于stack exchange,提问作者user9270170
相关产品推荐
相关产品推荐

