在 Pandas 中处理文本数据

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验介绍如何在 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)

字符串测试

你可以分别使用containsmatch方法来检查元素是否包含或匹配某个模式。

## 检查每个字符串是否包含模式 "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 中处理文本数据。我们学习了如何存储文本数据、使用字符串方法进行数据预处理和转换、使用正则表达式提取子字符串、测试元素是否包含或匹配某个模式以及创建虚拟变量。这些技术是为机器学习算法处理文本数据的基础。