【问题标题】:Is there a python function for finding the numeric and categorical columns?是否有用于查找数字和分类列的 python 函数?
【发布时间】:2020-09-03 13:21:05
【问题描述】:

从 python 中的 pandas 数据框中拆分/返回分类列和数字列的有效方法是什么?

到目前为止,我正在使用以下函数来查找分类列和数字列。

def returnCatNumList(df):
    
    object_cols = list(df.select_dtypes(exclude=['int', 'float', 'int64', 'float64', 
                                                 'int32', 'float32', 'int16', 'float16']).columns)
    numeric_cols = list(df.select_dtypes(include=['int', 'float', 'int64', 'float64', 
                                                  'int32', 'float32', 'int16', 'float16']).columns)

    return object_cols, numeric_cols

我正在寻找一种有效且更好的方法来做到这一点。任何建议或参考将不胜感激。

【问题讨论】:

    标签: python pandas dataframe categories numeric


    【解决方案1】:

    您可以通过np.number 而不是数字列表dtypes 来简化您的答案:

    def returnCatNumList(df):
        
        object_cols = list(df.select_dtypes(exclude=np.number).columns)
        numeric_cols = list(df.select_dtypes(include=np.number).columns)
    
        return object_cols, numeric_cols
    

    另一个想法是numeric_cols 使用Index.difference

    def returnCatNumList(df):
        
        object_cols = list(df.select_dtypes(exclude=np.number).columns)
        numeric_cols = list(df.columns.difference(object_cols, sort=False))
    
        return object_cols, numeric_cols
    

    【讨论】:

      【解决方案2】:

      您可以通过简单地使用 object dtype 来做到这一点

      def returnCatNumList(df):
          
          object_cols = df.select_dtypes(include="object").columns.tolist()
          numeric_cols = df.select_dtypes(exclude="object").columns.tolist()
      
          return object_cols, numeric_cols
      

      【讨论】:

        【解决方案3】:

        我们还可以使用pandas types API,它允许我们交互和操作数据类型

        def returnCatNumList(df):
            object_cols = []
            numeric_cols  = []
        
            for label, content in df.items():
                if pd.api.types.is_string_dtype(content):
                    numeric_cols.append(label)
                else:
                    object_cols.append(label)
            return object_cols, numeric_cols
        

        例子:

        iris = sns.load_dataset('iris')
        
        object_cols, numeric_cols = returnCatNumList(iris)
        
        print(object_cols)
        print(numeric_cols)
        

        输出:

        >>> ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
        
        >>> ['species']
        

        【讨论】:

          猜你喜欢
          • 2022-11-30
          • 2020-01-18
          • 2019-09-05
          • 2021-04-20
          • 2021-06-03
          • 2023-03-10
          • 2011-04-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多