从 DataFrame 中删除强相关列[重复]

2023-12-21

我有一个像这样的数据框

dict_ = {'Date':['2018-01-01','2018-01-02','2018-01-03','2018-01-04','2018-01-05'],'Col1':[1,2,3,4,5],'Col2':[1.1,1.2,1.3,1.4,1.5],'Col3':[0.33,0.98,1.54,0.01,0.99]}
df = pd.DataFrame(dict_, columns=dict_.keys())

然后,我计算列之间的皮尔逊相关性,并过滤掉相关性高于阈值 0.95 的列

def trimm_correlated(df_in, threshold):
    df_corr = df_in.corr(method='pearson', min_periods=1)
    df_not_correlated = ~(df_corr.mask(np.eye(len(df_corr), dtype=bool)).abs() > threshold).any()
    un_corr_idx = df_not_correlated.loc[df_not_correlated[df_not_correlated.index] == True].index
    df_out = df_in[un_corr_idx]
    return df_out

这产生

uncorrelated_factors = trimm_correlated(df, 0.95)
print uncorrelated_factors

    Col3
0   0.33
1   0.98
2   1.54
3   0.01
4   0.99

到目前为止,我对结果感到满意,但我想从每个相关对中保留一列,因此在上面的示例中我想包含 Col1 或 Col2。为了得到某物。像这样

    Col1   Col3
0    1     0.33
1    2     0.98
2    3     1.54
3    4     0.01
4    5     0.99

另外,我可以做进一步的评估来确定保留哪些相关列吗?

thanks


您可以使用np.tril() https://docs.scipy.org/doc/numpy/reference/generated/numpy.tril.html#numpy.tril代替np.eye()对于面具:

def trimm_correlated(df_in, threshold):
    df_corr = df_in.corr(method='pearson', min_periods=1)
    df_not_correlated = ~(df_corr.mask(np.tril(np.ones([len(df_corr)]*2, dtype=bool))).abs() > threshold).any()
    un_corr_idx = df_not_correlated.loc[df_not_correlated[df_not_correlated.index] == True].index
    df_out = df_in[un_corr_idx]
    return df_out

Output:

    Col1    Col3
0   1       0.33
1   2       0.98
2   3       1.54
3   4       0.01
4   5       0.99
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 DataFrame 中删除强相关列[重复] 的相关文章

  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 在 Tensorflow tf.nn.nce_loss 中出现 TypeError:'Mul' Op 的输入 'y' 的类型为 float32,与参数 'x' 的 int32 类型不匹配

    我正在研究 Tensor Flow 中的 Bag of Words 实现 并得到了 类型错误 Mul Op 的输入 y 的类型为 float32 与参数 x 的 int32 类型不匹配 在 tf nn nce loss 中 我尝试查看 tf
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 如何将 UDF 中的结构或类数组返回到数据帧列值中?

    d ID 1 pID 1000 startTime 2018 07 02T03 34 20 endTime 2018 07 03T02 40 20 ID 1 pID 1000 startTime 2018 07 02T03 45 20 en
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包

随机推荐

  • Android OpenGL ES 和 2D

    嗯 这是我的要求 我还不知道OpenGL 而且我也不愿意学习它 我想直接学习OpenGL ES 因为我的开发目标是android 我想学习 OpenGL ES 以发展我的能力2D游戏 我选择它是出于性能目的 因为基本的 SurfaceVie
  • 名词、动词、形容词等的单独单词列表

    通常单词列表是 1 个包含所有内容的文件 但是是否有可单独下载的名词列表 动词列表 形容词列表等 我特别需要它们来学习英语 如果您只下载数据库文件wordnet princeton edu download 当前版本 https wordn
  • 多个字段的 Laravel SUM 使用原始查询返回 null

    以下是我的查询 sales DB table sales gt leftJoin category sales category sales sale id sales id gt leftJoin department sales dep
  • 使用javascript的最大子数组[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定一个整数数组 nums 找到连续的子数组 至少包含一个数字 其总和最大并返回其总和 Example 输入 2 1 3 4 1 2
  • 将外来字符更改为对应的罗马字符

    我正在使用 php 我想知道是否有一种预定义的方法可以将外来字符转换为非外来字符 字符如 一切都导致 e 我正在寻找一个函数 它接受一个字符串并返回它 不带特殊字符 任何想法将不胜感激 在找不到合适的转换器之后 我创建了自己的集合来满足我的
  • 调用 Windows 安全对话框(在 C# 或 VB.NET 中)

    我想知道如何调用 Windows 安全对话框 在 Windows 工作站上按 ctrl alt del注意 我不需要任务管理器 以编程方式 在 XP 工作站上 不必担心 Win7 或 Vista 最好有一个 C 快速示例 如果必须的话 也可
  • .remove() 在 Internet Explorer 中不起作用[重复]

    这个问题在这里已经有答案了 此代码在 Google Chrome 中运行良好 但在 Internet Explorer 中不起作用 document getElementsByClassName info i remove 有没有其他方法可
  • Shell 脚本来源:未找到

    我正在运行以下简单脚本来测试代码块 bin bash Load nvm and install latest production node source HOME nvm nvm sh nvm install v0 10 12 nvm u
  • Kotlin:流与序列 - 为什么有多种方法来做同一件事?

    为什么在 Kotlin 中有多种方法可以做同样的事情 这是有原因的吗 val viaSequence items asSequence filter it 2 0 map it 2 toList println viaSequence va
  • 为什么 Rails 在 schema.rb 中的所有列上设置“:null => false”?

    即使我从未具体说明 null gt false在我最初向表添加列的迁移中 rails 仍然在中生成代码schema rb指定列具有 null gt false 为什么是这样 如果我在我的盒子上开发 然后使用rake db schema lo
  • Codeigniter 中的图像文件、css、js 等放在哪里?

    css文件夹和图片文件夹放在哪里可以接受 我在想在视图文件夹里面 但是 控制器总是将路径重新路由到基本 url 因此我必须将 html 文件中的路径指定到它所在的位置 这是多余的 我有这样的设置 应用 system assets js im
  • 为 execvp() 创建 char* const *

    满足 execvp 的第二个参数时遇到很大困难 编译器说它需要传递一个 char const 而我有一个 const char 我更喜欢它由用户输入制成 std string x std cout lt lt CMD getline std
  • 如何在android中自动滚动列表视图?

    如何在android中自动滚动列表视图 我正在将数据添加到列表中 所以我希望当我添加它时它应该自动滚动并且最后添加的项目应该可见 使用函数 setSelectionFromTop int position int y http develo
  • 在 Android 的 Auth0 Lock 中获取 403 不允许的用户代理

    在我的 Android 应用程序中集成 Auth0 登录 对于此集成 我正在关注这个https auth0 com docs libraries lock android https auth0 com docs libraries loc
  • widget.SearchView 不显示 Android 中语音搜索的 MIC 按钮

    我在名为activity products final的布局文件中有一个seachview
  • 如何在 python 正则表达式中匹配双引号?

    我用这个语句result re match r sentence 匹配sentence balabala 但我总是得到None 为什么 我尝试了很多次 在线正则表达式测试表明它有效 正则表达式中的双引号是分隔字符串而不是正则表达式的一部分
  • 当属性不存在时,Spring @Value 注释不使用默认值

    我尝试在构造函数的参数中使用 Value 注释 如下所示 Autowired public StringEncryptor Value encryptor password String password Value encryptor a
  • 两个数据帧之间的相关性

    类似的问题已经被问过 但我还没有看到清晰的答案 请原谅我再次询问 我有两个数据帧 我只是想要第一个数据帧与第二个数据帧中的每一列的相关性 这是完全符合我想要的功能的代码 df1 pd DataFrame Y np random randn
  • 包含库和二进制文件的软件包?

    我想制作一个 Rust 包 其中包含可重用库 其中实现了大部分程序 以及使用它的可执行文件 假设我没有混淆 Rust 模块系统中的任何语义 我应该做什么Cargo toml文件是什么样的 Tok tmp doug du a 8 Cargo
  • 从 DataFrame 中删除强相关列[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 dict Date 2018 01 01 2018 01 02 2018 01 03 2018 01 04 2018 01 05 Col1 1 2 3 4 5 Col2 1 1 1 2 1