我正在使用熊猫提取数据集的类别,如以下代码所示:
data=pd.read_csv("iris.csv",header=None)
data[4]=data[4].astype("category")
当我打印data [4]的值时,我得到了以下列表:
1 Setosa
2 Setosa
3 Setosa
4 Setosa
5 Setosa
6 Setosa
7 Setosa
...
149 Virginica
150 Virginica
Name: 4, Length: 150, dtype: category
Categories (3, object): [Setosa, Versicolor, Virginica]
但是我想在数组中包含三个类别,以便具有以下内容:
[Setosa, Versicolor, Virginica]
我正在四处张望,但找不到任何可以服务的东西。
有帮助吗?
答案 0 :(得分:0)
data[4].cat.categories.values
可能比.unique()
优越。
看看https://pandas.pydata.org/pandas-docs/stable/categorical.html,“使用类别”。
注意:unique()的结果并不总是与 Series.cat.categories,因为Series.unique()有几个 保证,即按以下顺序返回类别 外观,并且只包含实际存在的值。
.cat.categories.values
似乎要快得多,因为我想像上面列出的原因。
示例:
import pandas as pd
import numpy as np
s = pd.Series(np.random.choice(['a', 'b', 'c'], 1000), dtype = "category")
% timeit a = s.unique()
# 303 µs ± 23.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
% timeit b = s.cat.categories.values
# 1.26 µs ± 27.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
print(s.cat.categories.values)
# ['a' 'b' 'c']
数据集的大小和其他要求可能会确定哪个更好。