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

标签 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]

最佳答案

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

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

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

您想要的是将所有数据重新组合到一个数据结构中,以将它们与其他数据源区分开来,所以我猜您想为什么不使用已经可用的东西,为什么不使用这个我刚刚使用的“模糊相关”数据框?

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

如果您没有理由专门使用此数据框,我会简单地创建一个新的数据结构,可能字典就足够了。 根据您的具体情况,一些原因是:

  1. 数据框可能超出了您要查找的内容。

  2. 通过将不同的内容放在一起,您会失去先前数据框的一些良好属性(例如,现在数据框的尺寸是多少?有多少行?)

  3. 人们/您可能会对数据框的不同部分感到困惑。例如,当您要改变数据时,您确定知道转换将应用于哪些数据吗?您还记得哪些数据是“原始”数据框的一部分以及之后添加的内容吗?

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

PS:请参阅 @roganjosh 在评论中提出的问题,作为当您开始将不应该出现的东西放在一起时出现的问题的好例子。

关于python - 将变量存储为另一个变量的属性是个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545028/

相关文章:

python-3.x - 根据条件截断 pandas 数据帧字符串列中的条目

python - 合并两个没有键列的数据框

dataframe - spark jdbc-到源的多个连接?

python - Python 3 和 MySQL 连接器的 Unicode 和参数数量错误

python - 如何可视化 BaseHTTPRequestHandler 的主体部分

python - 为什么 shutil.rmtree() 这么慢?

python - 在 Python 中检测非英文字符的字符串

python - 具有 NaN 索引的 Pandas pd.pivot_table

python - 如何处理修改 Pandas 数据框

r - 基于唯一字符列时,如何将多行与多列的事件数据合并?