首页 > 解决方案 > 如何过滤熊猫数据框并保留特定元素?

问题描述

我有一个熊猫数据框,它是一个 50x50 的相关矩阵。在下图中,您可以看到我的示例

在此处输入图像描述

如果可能的话,我想做的当然是制作一个新数据框,其中只有旧数据框的元素高于 0.5 或低于 -0.5,表示强线性关系,但不是 1,避免方差部分。

我不认为我问的是完全可能的,因为当然变量 x0 不会具有与 x1 等相同的强关系,所以新的数据框看起来不会很好。

但是有什么方法可以快速扫描这个数据框,找到我提到的值,或者至少将它们插入到数组中?

任何见解都会有所帮助。谢谢

标签: pythonpandasdataframepearson-correlation

解决方案


如果您想删除太低的相关对,您无法真正查看相关矩阵。您可以做的一件事是堆叠框架并保留相关的相关对。

具有(作为示例随机生成):

          0         1         2         3         4
0  0.038142 -0.881054 -0.718265 -0.037968 -0.587288
1  0.587694 -0.135326 -0.529463 -0.508112 -0.160751
2 -0.528640 -0.434885 -0.679416 -0.455866  0.077580
3  0.158409  0.827085  0.018871 -0.478428  0.129545
4  0.825489 -0.000416  0.682744  0.794137  0.694887

你可以这样做:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.uniform(-1, 1, (5, 5)))
df = df.stack()
df = df[((df > 0.5) | (df < -0.5)) & (df != 1)]


0  1   -0.881054
   2   -0.718265
   4   -0.587288
1  0    0.587694
   2   -0.529463
   3   -0.508112
2  0   -0.528640
   2   -0.679416
3  1    0.827085
4  0    0.825489
   2    0.682744
   3    0.794137
   4    0.694887

推荐阅读