retain_variables_if_in_df#

retain_variables_if_in_df() 返回在数据集中存在的列表中的变量子集。

让我们创建一个包含数值、分类和日期时间变量的玩具数据集:

import pandas as pd
df = pd.DataFrame({
    "Name": ["tom", "nick", "krish", "jack"],
    "City": ["London", "Manchester", "Liverpool", "Bristol"],
    "Age": [20, 21, 19, 18],
    "Marks": [0.9, 0.8, 0.7, 0.6],
    "dob": pd.date_range("2020-02-24", periods=4, freq="T"),
})

print(df.head())

我们在下面看到生成的数据框:

    Name        City  Age  Marks                 dob
0    tom      London   20    0.9 2020-02-24 00:00:00
1   nick  Manchester   21    0.8 2020-02-24 00:01:00
2  krish   Liverpool   19    0.7 2020-02-24 00:02:00
3   jack     Bristol   18    0.6 2020-02-24 00:03:00

使用 retain_variables_if_in_df() 我们可以在一个列表中捕获数据集中存在的变量名称。所以让我们这样做,然后显示结果列表:

from feature_engine.variable_handling import retain_variables_if_in_df

vars_in_df = retain_variables_if_in_df(df, variables = ["Name", "City", "Dogs"])

var_in_df

我们看到了数据框中变量子集的名称如下:

['Name', 'City']

如果列表中的变量都不在数据集中,retain_variables_if_in_df() 将引发错误。

用途#

此功能最初是为内部使用而开发的。

当我们依次运行各种特征选择转换器时,例如,DropConstantFeatures,然后是`DropDuplicateFeatures`,最后是`RecursiveFeatureElimination`,我们无法预知每个转换器会丢弃哪些变量。因此,这些转换器在幕后使用 retain_variables_if_in_df() ,以选择那些由用户输入且在数据集中仍然存在的变量,然后在应用选择算法之前进行选择。

我们现在决定将此功能作为 variable_handling 模块的一部分公开。例如,如果您正在创建与 Feature-engine 兼容的选择转换器,这可能会很有用。