【发布时间】:2018-11-29 18:01:30
【问题描述】:
我最近开始将变量(例如 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]
【问题讨论】:
-
我对你在问什么感到困惑。
some_dataframe.X_train是 pandas 引用列的语法 -
我认为您对“方法”和“属性”之间的区别也有一些混淆,这使您不太清楚您在问什么。我认为我们需要更多代码来准确理解您正在实施的内容。请提供MCVE
-
我更喜欢由具有这些其他属性的 df 组成的包装类。
-
好点@roganjosh,实际上熊猫数据框不是“常规 python对象”,因为它具有人们期望的一些补充属性。通过在此处添加属性,您有点打破了 pandas 数据框附带的“合同”。所以你有一个非常好的理由这样做......
-
@roganjosh 这不是语法或任何内容的模糊。数据框可能会重载其
__getattr__以检查属性是否对应于列,然后返回它,或者引发属性错误。但是设置一个属性仍然可以像任何其他 python 对象一样工作。 为什么他们这样做了,嗯,可能是因为对于数据分析的用例,它派上用场了。许多非软件工程师使用pandas仅用于数据分析,而不是构建质量代码库
标签: python pandas dataframe variables storage