Pandas`.astype('category')和`pd.类别(...)`

2024-04-25 12:00:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

虽然这两种方法产生的结果是相同的.dtypeCategoricalDtype(categories=[' <=50K', ' >50K'], ordered=False),但它们并不相同。在

对结果调用.describe(),它们会产生不同的输出。第一个输出关于单个类别的信息,而第二个(astype(..))将产生典型的describe输出,其中包括count、unique、top、freq和name,列出dtype: object。在

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


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

^{pr2}$

Tags: 数据方法字符串名称data分类特性pd
1条回答
网友
1楼 · 发布于 2024-04-25 12:00:53

作为Bakuriu points outtype(pd.Categorical(data[14]))Categorical,而 type(data[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

describe()的行为不同 因为^{}的定义与^{}不同。在

无论何时调用Categorical.describe(),每个类别都将得到count和{}:

^{pr2}$

当你在一个分类序列上调用Series.describe(),你可以使用you'll get ^{}, ^{}, ^{} and ^{}。注意,count和{}在这里也有不同的含义:

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

相关问题 更多 >

    热门问题