简介
本实验介绍如何在 pandas 中处理文本数据。我们将学习如何存储文本数据、使用字符串方法进行数据预处理和转换,以及使用正则表达式提取子字符串。我们还将学习如何为机器学习算法创建虚拟变量。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到笔记本标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
存储文本数据
在 pandas 中,你可以通过两种方式存储文本数据:使用object数据类型的 NumPy 数组或StringDtype扩展类型。我们建议使用StringDtype,因为它比通用的object数据类型更安全、更具针对性。
import pandas as pd
## 创建一个具有 `object` 数据类型的序列
s1 = pd.Series(["a", "b", "c"], dtype="object")
## 创建一个具有 `StringDtype` 的序列
s2 = pd.Series(["a", "b", "c"], dtype="string")
使用字符串方法
Pandas 提供了一套字符串处理方法,便于对字符串数据进行操作。这些方法会自动排除缺失/NA 值。
s = pd.Series(
["A", "B", "C", "Aaba", "Baca", np.nan, "CABA", "dog", "cat"], dtype="string"
)
## 转换为小写
s.str.lower()
## 转换为大写
s.str.upper()
## 计算每个字符串的长度
s.str.len()
提取子字符串
你可以使用正则表达式提取子字符串。extract方法接受一个至少包含一个捕获组的正则表达式。
## 从每个字符串中提取第一个数字
s = pd.Series(["a1", "b2", "c3"], dtype="string")
s.str.extract(r"(\d)", expand=False)
字符串测试
你可以分别使用contains和match方法来检查元素是否包含或匹配某个模式。
## 检查每个字符串是否包含模式 "a"
s.str.contains("a", na=False)
## 检查每个字符串是否匹配模式 "a"
s.str.match("a", na=False)
创建虚拟变量
你可以使用get_dummies方法从字符串数据创建虚拟变量。
## 创建虚拟变量
s = pd.Series(["a", "a|b", np.nan, "a|c"], dtype="string")
s.str.get_dummies(sep="|")
总结
在本实验中,我们学习了如何在 pandas 中处理文本数据。我们学习了如何存储文本数据、使用字符串方法进行数据预处理和转换、使用正则表达式提取子字符串、测试元素是否包含或匹配某个模式以及创建虚拟变量。这些技术是为机器学习算法处理文本数据的基础。