微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python:未检测到的分类值

如何解决python:未检测到的分类值

我想找出数据框的哪些列是分类的。 这个数据框确实有 z 列,但我的代码无法检测到它并打印一个空列表。 我该如何解决

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

data=[[ 10,10,'a'],[ 15,15,[ 14,14,'b'],[16,16,[19,19,[17,17,[6,6,'c'],[5,5,[20,20,[22,22,[21,21,[18,45,'a']]
df = pd.DataFrame(data,columns=['x','y','z'])
categorical_values=[]
for i in df.columns.values.tolist():
    if (type(df[i].all()))==str:
        categorical_values.append(i)

print(categorical_values,'CATEGORICAL VALUES')
print(len(categorical_values),'total of categorical variables')

解决方法

这里似乎有问题的是您的测试 if (type(df[i].all()))==str,让我们分解它:

  • 获取列 i
  • 检查该列的所有值是否都为 True,请参阅 the doc for .all()

    Series.all(axis=0,bool_only=None,skipna=True,level=None,**kwargs)

    返回是否所有元素都为 True,可能在一个轴上。

    除非在系列中或沿 Dataframe 轴至少有一个元素为 False 或等效(例如零或空),否则返回 True。

  • 获取返回类型
  • 检查此类型是否为 str

您似乎想检查列的数据类型。为此,请使用 dtypes

>>> df.dtypes
x     int64
y     int64
z    object

您甚至可以直接从数据框中select dtypes

>>> df.select_dtypes(include=['object'])
    z
0   a
1   a
2   b
3   b
4   a
5   a
6   c
7   b
8   c
9   c
10  b
11  a
>>> categorical_values = df.select_dtypes(include=['object']).columns.to_list()
>>> categorical_values
['z']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。