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
兼容的选择转换器,这可能会很有用。