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