将变量存储为另一个变量的属性是一种好习惯吗?

时间:2018-11-29 18:01:31

标签: python pandas dataframe variables storage

我最近开始存储变量(例如X_train,y_train,X_test,y_test)作为其完整数据帧的属性。当我同时使用多个数据集时,它可以帮助我组织不同的培训和测试数据集。这通常被认为是好的/可以的做法吗?这是一个示例:

我最初的学习方式是:

X_train, X_test, y_train, y_test = train_test_split(some_dataframe[features],\
    some_dataframe[target]

我最近开始做的事情:

some_dataframe.X_train, some_dataframe.X_test,\
    some_dataframe.y_train, some_dataframe.y_test = \
    train_test_split(some_dataframe[features], some_dataframe[target]

1 个答案:

答案 0 :(得分:2)

tl; dr:如果找不到真正的理由,请避免合并。

我认为您正在做的事情是“坏机会” 的一部分。

由于我不知道您选择的所有细节,我并不是说这是一个坏主意,但您对问题的描述似乎指向了将不同数据源合并在一起的常见问题。

您想要的是在一个数据结构中重新组合所有数据,以将其与其他数据源区分开,所以我想您想为什么不使用现有的东西,为什么不使用它呢?我刚刚使用的“模糊关联”数据框?

但是您应该问自己为什么这个数据结构与您想要实现的目标相关?是什么使它成为正确的数据结构?您是否要将此df的先前数据与新数据一起使用?还是只是因为它是“那里”而选择了这种结构?

如果没有理由专门使用此数据框,则 我只是创建一个新的数据结构,可能一个字典就足够了 。 在您的特定情况下,某些原因是:

  1. 数据框可能会超出您想要的内容。

  2. 您可以通过将不同的内容放在一起来松散前一个数据框的一些不错的属性(例如,数据框的尺寸现在是多少?有多少行?)

  3. 人们/您可能会混淆数据框的不同部分。例如,当您要对数据进行突变时,您确定您知道转换将应用于哪个数据吗?您会记住哪些数据是“原始”数据框架的一部分,以及之后添加了哪些数据?

总而言之,将不同的数据(或一般的想法)融合到一个结构(概念)中总是有风险的,您应该始终出于一个充分的理由而不是仅仅因为您能做到而这样做。

PS:请参阅注释中的@roganjosh问题,作为当您开始整理本来不是本应存在的问题时出现的问题的很好示例。