# 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`。