【Pandas】pandas Series cat

发布于:2025-03-18 ⋅ 阅读:(38) ⋅ 点赞:(0)

# Pandas2.2 Series

## Accessors

|方法|描述|

|-|:-------|

|Series.str|对 `Series` 中的字符串元素进行矢量化字符串操作|

|Series.cat|用于处理分类数据(Categorical Data)的属性|

### pandas.Series.cat

`pandas.Series.cat` 是用于处理分类数据(Categorical Data)的属性。分类数据是一种数据类型,它将数据限制在一组有限的可能值(类别)中。`pandas.Series.cat` 提供了一系列方法来操作和管理这些分类数据。

#### 常用方法

以下是一些常用的 `pandas.Series.cat` 方法及其示例:

1. **`categories`**: 获取或设置分类的类别。

2. **`codes`**: 获取或设置分类的编码。

3. **`add_categories()`**: 添加新的类别。

4. **`remove_categories()`**: 移除指定的类别。

5. **`rename_categories()`**: 重命名类别。

6. **`reorder_categories()`**: 重新排序类别。

7. **`set_categories()`**: 设置新的类别。

8. **`as_ordered()` 和 `as_unordered()`**: 设置分类为有序或无序。

9. **`remove_unused_categories()`**: 移除未使用的类别。

#### 示例

假设我们有一个包含分类数据的 `Series`:

```python

import pandas as pd

# 创建一个分类 Series

data = pd.Series(['A', 'B', 'A', 'C', 'B', 'A'], dtype='category')

print(data)

```

输出:

```

0    A

1    B

2    A

3    C

4    B

5    A

dtype: category

Categories (3, object): ['A', 'B', 'C']

```

##### 1. `categories`

```python

# 获取类别

categories = data.cat.categories

print(categories)

```

输出:

```

Index(['A', 'B', 'C'], dtype='object')

```

##### 2. `codes`

```python

# 获取编码

codes = data.cat.codes

print(codes)

```

输出:

```

0    0

1    1

2    0

3    2

4    1

5    0

dtype: int8

```

##### 3. `add_categories()`

```python

# 添加新的类别

data = data.cat.add_categories(['D'])

print(data.cat.categories)

```

输出:

```

Index(['A', 'B', 'C', 'D'], dtype='object')

```

##### 4. `remove_categories()`

```python

# 移除指定的类别

data = data.cat.remove_categories(['D'])

print(data.cat.categories)

```

输出:

```

Index(['A', 'B', 'C'], dtype='object')

```

##### 5. `rename_categories()`

```python

# 重命名类别

data = data.cat.rename_categories(['X', 'Y', 'Z'])

print(data)

```

输出:

```

0    X

1    Y

2    X

3    Z

4    Y

5    X

dtype: category

Categories (3, object): ['Z', 'X', 'Y']

```

##### 6. `reorder_categories()`

```python

# 重新排序类别

data = data.cat.reorder_categories(['Z', 'X', 'Y'])

print(data)

```

输出:

```

0    X

1    Y

2    X

3    Z

4    Y

5    X

dtype: category

Categories (3, object): ['Z', 'X', 'Y']

```

##### 7. `set_categories()`

```python

# 设置新的类别

data = data.cat.set_categories(['A', 'B', 'C'])

print(data)

```

输出:

```

0    NaN

1    NaN

2    NaN

3    NaN

4    NaN

5    NaN

dtype: category

Categories (3, object): ['A', 'B', 'C']

```

##### 8. `as_ordered()` 和 `as_unordered()`

```python

# 设置分类为有序

data = data.cat.as_ordered()

print(data)

# 设置分类为无序

data = data.cat.as_unordered()

print(data)

```

输出:

```

0    NaN

1    NaN

2    NaN

3    NaN

4    NaN

5    NaN

dtype: category

Categories (3, object): ['A' < 'B' < 'C']

0    NaN

1    NaN

2    NaN

3    NaN

4    NaN

5    NaN

dtype: category

Categories (3, object): ['A', 'B', 'C']

```

##### 9. `remove_unused_categories()`

```python

# 移除未使用的类别

data = data.cat.remove_unused_categories()

print(data.cat.categories)

```

输出:

```

Index([], dtype='object')

```

#### 总结

`pandas.Series.cat` 提供了一系列方法来管理和操作分类数据。通过这些方法,你可以轻松地对分类数据进行各种操作,如添加、移除、重命名和重新排序类别。希望这些示例能帮助你更好地理解和使用 `pandas.Series.cat`。