: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

【Pandas 教程系列】- Pandas 相关性分析

【Pandas 教程系列】- Pandas 相关性分析

在 Pandas 中,数据相关性分析是通过计算不同变量之间的相关系数来了解它们之间的关系。

在 Pandas 中,数据相关性是一项重要的分析任务,它帮助我们理解数据中各个变量之间的关系。

Pandas 使用 corr() 方法计算数据集中每列之间的关系。
  1. df.corr(method='pearson', min_periods=1)
复制代码
method (可选): 字符串类型,用于指定计算相关系数的方法。默认是 'pearson',还可以选择 'kendall'(Kendall Tau 相关系数)或 'spearman'(Spearman 秩相关系数)。

min_periods (可选): 表示计算相关系数时所需的最小观测值数量。默认值是 1,即只要有至少一个非空值,就会进行计算。如果指定了 min_periods,并且在某些列中的非空值数量小于该值,则相应列的相关系数将被设为 NaN。

df.corr() 方法返回一个相关系数矩阵,矩阵的行和列对应数据框的列名,矩阵的元素是对应列之间的相关系数。

常见的相关性系数包括 Pearson 相关系数和 Spearman 秩相关系数:

Pearson 相关系数: 即皮尔逊相关系数,用于衡量了两个变量之间的线性关系强度和方向。它的取值范围在 -1 到 1 之间,其中 -1 表示完全负相关,1 表示完全正相关,0 表示无线性相关。可以使用 corr() 方法计算数据框中各列之间的 Pearson 相关系数。

Spearman 相关系数:即斯皮尔曼相关系数,是一种秩相关系数。用于衡量两个变量之间的单调关系,即不一定是线性关系。它通过比较变量的秩次来计算相关性。可以使用 corr(method='spearman') 方法计算数据框中各列之间的 Spearman 相关系数。

Pearson 相关系数

实例
  1. import pandas as pd

  2. # 创建一个示例数据框
  3. data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
  4. df = pd.DataFrame(data)

  5. # 计算 Pearson 相关系数
  6. correlation_matrix = df.corr()
  7. print(correlation_matrix)
复制代码
输出结果:
  1.      A    B
  2. A  1.0 -1.0
  3. B -1.0  1.0
复制代码
说明:由于数据集是线性相关的,因此 Pearson 相关系数矩阵对角线上的值为 1,而非对角线上的值为 -1 表示完全负相关。

Spearman 秩相关系数

实例
  1. import pandas as pd

  2. # 创建一个示例数据框
  3. data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
  4. df = pd.DataFrame(data)

  5. # 计算 Spearman 相关系数
  6. spearman_correlation_matrix = df.corr(method='spearman')
  7. print(spearman_correlation_matrix)
复制代码
输出结果:
  1.      A    B
  2. A  1.0 -1.0
  3. B -1.0  1.0
复制代码
说明:Spearman 相关系数矩阵的结果与 Pearson 相关系数矩阵相同,因为这两个变量之间是完全的单调负相关。

可视化相关性

这里我们要使用 Python 的 Seaborn 库, Seaborn 是一个基于 Matplotlib 的数据可视化库,专注于统计图形的绘制,旨在简化数据可视化的过程。

Seaborn 提供了一些简单的高级接口,可以轻松地绘制各种统计图形,包括散点图、折线图、柱状图、热图等,而且具有良好的美学效果。

安装 Seaborn:
  1. pip install seaborn
复制代码
实例
  1. import seaborn as sns
  2. import matplotlib.pyplot as plt
  3. import pandas as pd

  4. # 创建一个示例数据框
  5. data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
  6. df = pd.DataFrame(data)

  7. # 计算 Pearson 相关系数
  8. correlation_matrix = df.corr()
  9. # 使用热图可视化 Pearson 相关系数
  10. sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
  11. plt.show()
复制代码
说明:这段代码将生成一个热图,用颜色表示相关系数的强度,其中正相关用温暖色调表示,负相关用冷色调表示。annot=True 参数在热图上显示具体的数值。



选择相关性阈值

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表