处理分类数据

对于给定的分类数据,可以进行增、删、改、查等操作。[大谦Excel,dqexcel点com]

查找分类

【问题描述】

查询分类数据中指定值对应的行数据。

【示例8-4】

本例使用示例3-17的数据。用pandas导入Excel文件中第1个工作表中的数据,将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL"。请查询“大小”为"M"的行数据。

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家。文件路径为:D:/Samples/ch08/男裤库存.xlsx。用pandas导入Excel文件中第1个工作表中的数据,引擎为”openpyxl”。将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL"。请查询“大小”为"M"的行数据并输出。添加代码注释。

2. 代码

  • 根据提示词得到类似下面的代码:
code.python
# 导入pandas库
import pandas as pd
# 定义数据文件路径
file_path = "D:/Samples/ch08/男裤库存.xlsx"
# 读取Excel文件中第1个工作表中的数据,引擎为"openpyxl"
data = pd.read_excel(file_path, engine="openpyxl")
# 将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL"
data["大小"] = data["大小"].astype("category").cat.set_categories(["S", "M", "L", "XL","XXL"])
# 查询“大小”为"M"的行数据并输出
m_data = data[data["大小"]=="M"]
print(m_data)

3. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出查询数据。

code.python
>>> == RESTART: D:/Samples/1.py =
    产品代码  颜色 大小    库存
2  A0001  白色  M   357
4  A0001  黑色  M  1520

增加分类

【问题描述】

给分类数据增加分类值。

【示例8-5】

本例使用示例3-17的数据。用pandas导入Excel文件中第1个工作表中的数据,将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL",要求增加一个分类"XS"。

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家。文件路径为:D:/Samples/ch08/男裤库存.xlsx。用pandas导入Excel文件中第1个工作表中的数据,引擎为”openpyxl”。将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL",请增加一个分类"XS"。输出“大小”列的所有分类。添加代码注释。

2. 代码

  • 根据提示词得到类似下面的代码:
code.python
import pandas as pd # 导入pandas库
# 读取Excel文件中第1个工作表中的数据
df = pd.read_excel('D:/Samples/ch08/男裤库存.xlsx', engine='openpyxl')
# 将“大小”列的数据类型转换为分类数据,并增加一个分类"XS"
df['大小'] = df['大小'].astype('category').cat.add_categories(['XS'])
# 输出“大小”列的所有分类
print(df['大小'].cat.categories)

3. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出增加分类后的所有分类值。

code.python
>>> == RESTART: D:/Samples/1.py =
Index([‘L’, ‘M’, ‘S’, ‘XL’, ‘XXL’, ‘XS’], dtype=’object’)

修改分类

【问题描述】

修改分类数据中的分类值。

【示例8-6】

本例使用示例3-17的数据。用pandas导入Excel文件中第1个工作表中的数据,将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL",要求把分类"XXL"重命名为"VL"。

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家。文件路径为:D:/Samples/ch08/男裤库存.xlsx。用pandas导入Excel文件中第1个工作表中的数据,引擎为”openpyxl”。将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL"。把分类"XXL"重命名为"VL"。输出数据。添加代码注释。

2. 代码

  • 根据提示词得到类似下面的代码:
code.python
import pandas as pd
# 读取Excel文件,引擎为"openpyxl"
df = pd.read_excel('D:/Samples/ch08/男裤库存.xlsx', engine='openpyxl')
# 将“大小”列的数据类型转换为分类数据,并定义分类的值包括:"S", "M", "L", "XL","XXL"
df["大小"] = pd.Categorical(df["大小"], categories=["S", "M", "L", "XL", "XXL"])
# 将分类"XXL"重命名为"VL"
df["大小"] = df["大小"].cat.rename_categories({"XXL": "VL"})
# 输出数据
print(df)

3. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出修改分类后的数据。

code.python
>>> == RESTART: D:/Samples/1.py =
    产品代码  颜色  大小    库存
0  A0001  白色  XL    30
1  A0001  白色   L   760
2  A0001  白色   M   357
3  A0001  白色   S   730
4  A0001  黑色   M  1520
5  A0001  黑色   L   666
6  A0002  白色  VL    30

删除分类

【问题描述】

删除分类数据中的分类值。

【示例8-7】

本例使用示例3-17的数据。用pandas导入Excel文件中第1个工作表中的数据,将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL",要求用remove_categories方法删除分类"M"。

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家。文件路径为:D:/Samples/ch08/男裤库存.xlsx。用pandas导入Excel文件中第1个工作表中的数据,引擎为”openpyxl”。将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL"。用remove_categories方法删除分类"M"。输出数据。添加代码注释。

2. ChatGPT提示词模板说明

指定删除分类值的方法。

3. 代码

  • 根据提示词得到类似下面的代码:
code.python
import pandas as pd
# 导入Excel文件第1个工作表中的数据,引擎为”openpyxl“
df = pd.read_excel('D:/Samples/ch08/男裤库存.xlsx', engine='openpyxl')
# 将“大小”列的数据类型转换为分类数据,分类的值包括:"S", "M", "L", "XL","XXL"
df['大小'] = df['大小'].astype('category')
df['大小'].cat.categories = ['S', 'M', 'L', 'XL', 'XXL']
# 用remove_categories方法删除分类"M"
df['大小'].cat.remove_categories('M', inplace=True)
# 输出数据
print(df)

4. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出删除分类值后的数据。

code.python
>>> == RESTART: D:/Samples/1.py =
    产品代码  颜色   大小    库存
0  A0001  白色   XL    30
1  A0001  白色    S   760
2  A0001  白色  NaN   357
3  A0001  白色    L   730
4  A0001  黑色  NaN  1520
5  A0001  黑色    S   666
6  A0002  白色  XXL    30

可见,因为分类中删除了分类值”M”,数据中的”M”值变成了NaN,成了缺失值。