加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-.astype(‘categorical’)和`pd.Catego

发布时间:2020-12-17 17:38:54 所属栏目:Python 来源:网络整理
导读:我有一个带有字符串列(名称:14)的数据集,我想将其转换为解释为分类特征.据我所知,有两种方法可以做到这一点: pd.Categorical(data[14])data[14].astype('category') 虽然这两个结果都具有相同的.dtype:CategoricalDtype(categories = [ 50K],ordered = Fa

我有一个带有字符串列(名称:14)的数据集,我想将其转换为解释为分类特征.据我所知,有两种方法可以做到这一点:

pd.Categorical(data[14])
data[14].astype('category')

虽然这两个结果都具有相同的.dtype:CategoricalDtype(categories = [‘< = 50K','> 50K’],ordered = False),但它们并不相同.

在结果上调用.describe()会产生不同的输出.第一个输出有关各个类别的信息,而第二个(astype(..))生成典型的描述输出,其中包含count,unique,top,freq和name,并列出dtype:对象.

我的问题是,为什么/它们有何不同?

这个数据集:http://archive.ics.uci.edu/ml/datasets/Adult

data = pd.read_csv("./adult/adult.data",header=None)

pd.Categorical(data[14]).describe()
data[14].astype('category').describe()

pd.Categorical(data[14]).dtype
data[14].astype('category').dtype
最佳答案
作为Bakuriu points out,type(pd.Categorical(data [14]))是Categorical,而
type(data [14] .astype(‘category’))是Series:

import pandas as pd
data = pd.read_csv("./adult/adult.data",header=None)

cat = pd.Categorical(data[14])
ser = data[14].astype('category')
print(type(cat))
# pandas.core.arrays.categorical.Categorical
print(type(ser))
# pandas.core.series.Series

describe()的行为不同
因为Categorical.describe的定义不同于Series.describe.

每当调用Categorical.describe()时,您都会获得每个类别的计数和频率:

In [174]: cat.describe()
Out[174]: 
            counts    freqs
categories                 
 <=50K       24720  0.75919
 >50K         7841  0.24081

每当您在分类系列you’ll get count,unique,top and freq上调用Series.describe()时,请注意count和freq在这里也具有不同的含义:

In [175]: ser.describe()
Out[175]: 
count      32561
unique         2
top        <=50K
freq       24720
Name: 14,dtype: object

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读