Python “.astype(';Category';”和“pd.Category(…)之间的区别`

Python “.astype(';Category';”和“pd.Category(…)之间的区别`,python,pandas,Python,Pandas,我有一个带有字符串列(名称:14)的数据集,我想将其转换为分类特征。据我所知,有两种方法可以做到这一点: pd.category(数据[14]) 数据[14]。aType('类别') 虽然这两种方法产生的结果都是相同的.dtype:CategoricalDtype(categories=['50K',ordered=False)但它们并不相同 对结果调用.descripe(),它们会产生不同的输出。第一个输出有关单个类别的信息,而第二个(astype(..))则生成典型的描述输出,其中包含co

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

pd.category(数据[14])
数据[14]。aType('类别')
虽然这两种方法产生的结果都是相同的
.dtype
CategoricalDtype(categories=['50K',ordered=False)
但它们并不相同

对结果调用
.descripe()
,它们会产生不同的输出。第一个输出有关单个类别的信息,而第二个(
astype(..)
)则生成典型的描述输出,其中包含count、unique、top、freq和name,并列出
dtype:object

那么,我的问题是,它们为什么/如何不同


这是一个数据集:

data=pd.read\u csv(“./maintal/maintal.data”,标题=None)
pd.分类(数据[14])。描述()
数据[14]。类型('category')。描述()
pd.分类(数据[14])数据类型
数据[14]。aType('category')。dtype
As,
类型(pd.category(数据[14])
category
,而
类型(数据[14]。astype('category')
系列

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
descripe()
的行为不同 因为定义不同于

无论何时调用
category.descripe()
,都会得到每个类别的
count
freq

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

我不是pandas的专家用户,但看起来它似乎就是你想要的。返回类型不同,
分类
不返回
系列
In [175]: ser.describe()
Out[175]: 
count      32561
unique         2
top        <=50K
freq       24720
Name: 14, dtype: object