如何过滤 pandas DataFrame 并保留特定元素?
How to filter a pandas DataFrame and keep specific elements?
我有一个 pandas 数据框,它是一个 50x50 的相关矩阵。在下面的图片中你可以看到我的例子
我想做的是,如果可能的话,当然是制作一个新的数据框,它只包含旧数据框高于 0.5 或低于 -0.5 的元素,表明具有很强的线性关系,但不是 1,以避免方差部分。
我不认为我问的是完全可能的,因为当然变量 x0 不会具有与 x1 等相同的强关系,所以新数据框看起来不会很好。
但是有没有什么方法可以快速扫描这个数据框,找到我提到的值,也许至少将它们插入一个数组中?
任何见解都会有所帮助。谢谢
如果你想删除太低的相关对,你就不能真正查看相关矩阵。您可以做的一件事是堆叠框架并保留相关的相关对。
有(以随机生成为例):
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
我有一个 pandas 数据框,它是一个 50x50 的相关矩阵。在下面的图片中你可以看到我的例子
我想做的是,如果可能的话,当然是制作一个新的数据框,它只包含旧数据框高于 0.5 或低于 -0.5 的元素,表明具有很强的线性关系,但不是 1,以避免方差部分。
我不认为我问的是完全可能的,因为当然变量 x0 不会具有与 x1 等相同的强关系,所以新数据框看起来不会很好。
但是有没有什么方法可以快速扫描这个数据框,找到我提到的值,也许至少将它们插入一个数组中?
任何见解都会有所帮助。谢谢
如果你想删除太低的相关对,你就不能真正查看相关矩阵。您可以做的一件事是堆叠框架并保留相关的相关对。
有(以随机生成为例):
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