首页 > 其他分享 >计算两列的相关性

计算两列的相关性

时间:2024-03-26 19:22:40浏览次数:28  
标签:subset file 计算 output 相关性 corr path 两列 col

计算两列的相关性

使用Pandas中的corr()函数计算DataFrame中特定的两列之间相关系数。

def corr_analys(input_file_path, col_1, col_2, output_pic_path, sheet_name='Sheet1'):
    '''
    # ######################################
    # 计算两列之间的相关系数(Pearson相关系数)
    # 打印输出计算结果
    # 并绘制相关性热图
    # 输入数据建议先归一化处理
    # ######################################

    Parameters
    ----------
    input_file_path : 包含要计算的列的文件,这里是excel文件

    col_1, col_2 : 要计算的两列

    output_pic_path :生成的相关性热图存储的路径,图片名称是日期

    sheet_name : 指定具体的excel工作表
    '''
    
    df = pd.read_excel(input_file_path, sheet_name=sheet_name)

    subset = df[[col_1, col_2]]

    corr_coefficient = subset[col_1].corr(subset[col_2])
    print('Correlation coefficient between {} and {} : {:.7f}'.format(col_1, col_2, corr_coefficient))

    corr_matrix = subset.corr()

    plt.figure(figsize=(8, 6))
    # 显示中文,防止乱码
    plt.rcParams['font.family'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    # 使用sns中的heatmap()函数讲计算出来的相关系数转化为热力图
    sns.heatmap(corr_matrix, cmap='coolwarm', annot=True, fmt='.2f')
    plt.title('Correlation Heatmap between {} and {}'.format(col_1, col_2))
    plt.xlabel(col_2)
    plt.ylabel(col_1)

    current_time = datetime.datetime.now()
    file_time = current_time.strftime("%Y%m%d%H%M%S") + '.png'
    output_file_path = output_pic_path + 'Corr_' + file_time
    # 检查目录是否存在,如果不存在则创建
    output_dir = os.path.dirname(output_pic_path)
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    plt.savefig(output_file_path)

    plt.close()

    print('Correlation coefficient completed')

    return output_file_path


def call_corr():
    input_file_path = '../n.xlsx'
    output_pic_path = './cor/'
    col_1 = 'xxxx'
    col_2 = 'xxxx'

    output_file_path = corr_analys(input_file_path, col_1, col_2, output_pic_path)
    print('Hotmap saved to {}'.format(output_file_path))

关键的代码其实就是

corr_coefficient = subset[col_1].corr(subset[col_2])

这里corr()默认是使用Pearson方法,如果需要使用Spearman方法或者Kendall方法,需要在执行计算式显式指定。

例如下面是一个计算Spearman相关系数的函数接口:

def corr_analys_spearman(input_file_path, col_1, col_2, output_pic_path, sheet_name='Sheet1'):
    # 计算斯皮尔曼相关系数
    df = pd.read_excel(input_file_path, sheet_name=sheet_name)

    subset = df[[col_1, col_2]]

    corr_coefficient = subset[col_1].corr(subset[col_2], method='spearman')
    print('Spearman correlation coefficient between {} and {} : {:.7f}'.format(col_1, col_2, corr_coefficient))

关键是在corr中显示的指定method='spearman'

Reference

不错的网站:极客笔记

https://deepinout.com/pandas/pandas-tutorials/t_how-to-get-the-correlation-between-two-columns-in-pandas.html

标签:subset,file,计算,output,相关性,corr,path,两列,col
From: https://www.cnblogs.com/benbenlzw/p/18097378

相关文章

  • 计算机专业1
    计算机专业是现代信息技术领域中最重要的学科之一。它不仅涉及到软件和硬件的开发,还涉及到计算机和网络系统的设计、管理和维护。计算机专业的学生需要掌握程序设计语言、数据结构和计算机网络等课程,以及计算机操作系统、数据库等方面的实践经验。计算机专业拥有广阔的就业前景,工......
  • 2024最新 JAVA SSM 教育管理系统 (学生网上请假系统)(计算机毕业设计LW + 源码)
    教育管理系统设计项目简介本项目开发了一个教育管理系统,旨在为学校管理提供全面的解决方案。系统使用Java语言开发,采用SSM框架,结合MySQL数据库,以提高系统的稳定性和可用性。本系统涵盖了管理员登录、班级信息管理、学生请假管理、基础信息管理和用户权限管理等多个管理模......
  • 计算机专业
    计算机专业是现代信息技术领域中最重要的学科之一。它不仅涉及到软件和硬件的开发,还涉及到计算机和网络系统的设计、管理和维护。计算机专业的学生需要掌握程序设计语言、数据结构和计算机网络等课程,以及计算机操作系统、数据库等方面的实践经验。计算机专业拥有广阔的就业前景,工......
  • Python——timeit(运行时间平均值计算)
    可以计算其中运行代码所用的平均时间。importtimeitprint(timeit.timeit('a,b=10,20;a1=a;a=b;'))0.015125599999009864使用多重赋值的技巧来交换两个变量,也就是所谓的“迭代解包”它的运行时间是:importtimeitprint(timeit.timeit('a,b=10,20;a,b=b,......
  • 计算机网络——数据链路层(差错控制)
    计算机网络——数据链路层(差错控制)差错从何而来数据链路层的差错控制检错编码奇偶校验码循环冗余校验(CRC)FCS纠错编码海明码海明距离纠错流程确定校验码的位数r确定校验码和数据位置求出校验码的值检错并纠错我们今年天来继续学习计算机网络数据链路层这一小节的......
  • 【一】了解计算机的原理以及Python
    【一】编程和编程语言是什么【1】什么是编程编程其实就是将人类的语言转换为计算机能识别的语言【2】什么是编程语言人和人之间都会进行交流人和人之间交流的媒介就是语言编程语言就是人与计算机之间进行交流的语言【3】为什么要出现编程语言最根本的原因就是计算机......
  • jieba分词+sk-learn计算样本问题最相似的问题
    场景:输入一段内容,找到问题集中跟该内容最相似的问题importjiebafromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.metrics.pairwiseimportcosine_similaritytemplates=["出来钓鱼了喂","王大腚爱钓鱼","格小格爱爱钓鱼",......
  • 哈尔滨理工大学 计算机调剂仪器仪表工程 经验分享
    教育背景:本科二本,专业是计算机科学与技术,23考研总分341分,报考专业代码是085400,调剂哈尔滨理工大学仪器仪表工程。拒绝拟录取,最终调剂到安徽大学。调剂流程分享:去年在得知自己没有通过一志愿复试以后,那段时间一直在找调剂,有幸得到哈尔滨的某位学姐的指导,在这里感谢一下这位......
  • [计算机效率] 文件搜索工具:Listary(附详细使用教程)
    3.5文件搜索工具:ListaryListary是一款实用的搜索工具,它能为我的电脑(资源管理器)增添许多智能命令,提高用户日常收藏和整理文件的效率。它具备多种实用功能,例如收藏文件夹、快速打开最近浏览的文件夹,以及快速显示/隐藏文件扩展名等。此外,Listary还是一个轻量级的软件,不会过多......
  • PTA基础编程题目集 6-10 阶乘计算升级版
    阶乘计算升级版本题要求实现一个打印非负整数阶乘的函数。函数接口定义:voidPrint_Factorial(constintN);其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalidinput”。裁判测试程序样例:#include<stdio.h>......