将df相关性数据帧转换为pyecharts热图数据源

2022年4月19日 1247点热度 0人点赞 0条评论

如果用python绘制相关性热图,通常选择seaborn包,内置的heatmap函数可以直接将df.corr()生成的相关性数据帧作为参数导入,只需要设置x轴y轴的标签,热图颜色等即可,不需要对数据源进行更改。

但是如果我们用pyecharts绘制交互式的热图,就不能直接利用df.corr()的结果了,因为pyecharts热图的数据源格式是这样的:

pyecharts热图数据源

这是一个嵌套列表,列表中的每一个元素也是列表,其前两位对应的是热图的x轴和y轴坐标索引,第三个值是需要进行展示的热图数据。这样的话,就不得不对dataframe生成的相关性矩阵数据进行转换。这里我们写一个简单的脚本实现它,如下:

import pandas as pd

def dfcorr2pyecharts(df:pd.DataFrame)->list:
    """
    将dataframe相关性数据帧转换为pyecharts热图数据源
    """
    corr_rows = df.shape[0]
    corr_cols = df.shape[1]
    return [[i, j, round(df.iloc[corr_rows-1-j,i],3)] for i in range(corr_cols) for j in range(corr_rows)]

很简单不是,来看运行一下效果,未经转换的相关性矩阵dataframe是这样的:

相关系数矩阵

写一个脚本对它进行转换:

corr_df = pd.read_csv(r'你的相关系数矩阵csv文件路径',index_col=0)
print ('\n转换前的dataframe:')
print ('-------------------------------------------------------')
print (corr_df)
print ('-------------------------------------------------------')
echart_data = dfcorr2pyecharts(corr_df)
print ('转换后的Pyecharts热图数据源:')
print ('-------------------------------------------------------')
print (echart_data)

结果如下,可以放到HeatMap.add_yaxis()里使用了:

QThinker

前地产从业者,假装是个程序员,热爱编程与交易 自研QThinker量化交易框架

文章评论