是否有用于查找数字和分类列的 python 函数?
Is there a python function for finding the numeric and categorical columns?
splitting/returning 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
我正在寻找一种高效且更好的方法来执行此操作。任何建议或参考将不胜感激。
您可以通过 np.number
而不是数字列表 dtype
来简化您的答案:
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
您可以通过简单地使用对象数据类型来做到这一点
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
我们还可以使用 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']
splitting/returning 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
我正在寻找一种高效且更好的方法来执行此操作。任何建议或参考将不胜感激。
您可以通过 np.number
而不是数字列表 dtype
来简化您的答案:
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
您可以通过简单地使用对象数据类型来做到这一点
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
我们还可以使用 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']