Python 面向对象的数据帧转换设计

Python 面向对象的数据帧转换设计,python,pandas,oop,Python,Pandas,Oop,我正在尝试将面向对象设计应用到我的数据科学项目中。对于数据清理,我们通常从一个表(dataframe)开始,然后在此dataframe上进行转换(例如,基于现有列创建一个新列,将两列添加在一起等) 我最初的想法是(在python中)创建一个类数据,该类数据将有一个底层dataframe作为私有成员,并在类中提供额外的方法来转换数据。当我走到这一步后,我想知道: 我做面向对象编程是为了做它吗?与只用纯pandas编写代码而忘记创建自己的类相比,这有什么好处吗 或者干脆做: def clean_da

我正在尝试将面向对象设计应用到我的数据科学项目中。对于数据清理,我们通常从一个表(dataframe)开始,然后在此dataframe上进行转换(例如,基于现有列创建一个新列,将两列添加在一起等)

我最初的想法是(在python中)创建一个类数据,该类数据将有一个底层dataframe作为私有成员,并在类中提供额外的方法来转换数据。当我走到这一步后,我想知道:

  • 我做面向对象编程是为了做它吗?与只用纯pandas编写代码而忘记创建自己的类相比,这有什么好处吗
  • 或者干脆做:

    def clean_dataframe(df):
        df = some_operations(df)
        return df
    
    df = clean_dataframe(df)
    
  • 以完全不同的方式。一旦我们从dataframe(d0)转换到dataframe(d1),从面向对象的角度来看,我是否需要为d1创建一个新类,因为基础dataframe已经更改(例如,添加了一个新列)。在同一示例中,请注意,我们在clean_dataframe方法之后重新定义了self.\u df。
    我应该改变这个变量,还是应该创建一个新的变量,甚至是一个新的类来表示转换后的数据

  • 对面向对象设计非常陌生,希望获得更多的视角。

    编译几个用于数据处理的辅助函数肯定是有意义的,尤其是在需要重复使用的情况下。我不太确定创建一个数据类是否有任何好处,除非有其他对象需要“捆绑”ala C-type结构

    这就是说,出于建模目的,当现成的估计量似乎不够时,人们可能会经常求助于编写定制的估计量


    关于2,在我看来,您不需要创建单独的数据帧,特别是如果唯一的区别是一个额外的列。不过,作为一个警告,我偶尔会遇到的一个问题是数据帧变得太笨重,这甚至可能会影响IDE的性能。但这也取决于原始数据帧的数据类型和大小。

    请给出一个您尝试过的示例
    def clean_dataframe(df):
        df = some_operations(df)
        return df
    
    df = clean_dataframe(df)