《Pandas 简易速速上手小册》第7章:Pandas 文本和类别数据处理(2024 最新版)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 《Pandas 简易速速上手小册》第7章:Pandas 文本和类别数据处理(2024 最新版)

c8d8ed47f9a1368db458c1960ee26c7.png

7.1 文本数据的基本操作

处理文本数据是数据预处理中的一个重要环节,它包括了一系列的操作,如清洗、分割、替换等,旨在从原始文本中提取有用信息或将其转换为更适合分析的格式。

7.1.1 基础知识

  1. 字符串操作: 包括大小写转换、分割(split)、连接(join)、替换(replace)等。
  2. 去除无用字符: 如去除空格、标点符号等。
  3. 提取特定信息: 使用字符串操作或正则表达式来提取文本中的特定信息。

7.1.2 重点案例:客户反馈分析

假设你有一份客户反馈的文本数据,需要进行初步的文本清洗和关键信息提取。

数据准备

# 示例客户反馈文本数据
feedback_data = [
    "Great product! I've been using it for a month and very satisfied.",
    "The item did not meet my expectations and arrived late.",
    "Excellent service, fast shipping.",
    "Product was damaged. Terrible experience!"
]
feedback_df = pd.DataFrame(feedback_data, columns=['feedback'])

文本数据处理

# 转换为小写
feedback_df['feedback'] = feedback_df['feedback'].str.lower()
# 去除标点符号
feedback_df['feedback'] = feedback_df['feedback'].str.replace('[^\w\s]', '', regex=True)
# 提取包含特定关键词的反馈
positive_feedback = feedback_df[feedback_df['feedback'].str.contains('great|excellent')]
negative_feedback = feedback_df[feedback_df['feedback'].str.contains('not|damaged|terrible')]

7.1.3 拓展案例一:产品评论的关键词提取

分析一份产品评论数据,提取出每条评论中的关键产品特性词汇。

数据准备

# 示例产品评论数据
product_reviews = [
    "The camera quality is outstanding, but the battery life is short.",
    "Amazing battery performance, but the images are not very clear."
]
reviews_df = pd.DataFrame(product_reviews, columns=['review'])

关键词提取

# 提取评论中的关键词
keywords = ['camera', 'battery', 'images']
for keyword in keywords:
    reviews_df[keyword] = reviews_df['review'].str.contains(keyword).astype(int)

7.1.4 拓展案例二:日志文件中的日期提取

假设你有一份服务器日志文件,需要从每条日志中提取日期信息。

数据准备

# 示例日志数据
log_entries = [
    "2023-01-01 12:34:56: User logged in",
    "2023-01-02 13:14:16: User logged out",
    "2023-01-03 15:04:26: System error occurred"
]
log_df = pd.DataFrame(log_entries, columns=['log'])

日期提取

# 提取日志中的日期
log_df['date'] = log_df['log'].str.extract('(^\d{4}-\d{2}-\d{2})')

通过这些案例,我们展示了如何进行文本数据的基本操作,包括清洗文本、提取关键信息,以及从日志文件中提取日期。这些操作为深入分析文本数据打下了坚实的基础。


7.2 使用正则表达式处理文本

正则表达式是一种强大的文本处理工具,它允许我们进行复杂的搜索、匹配、替换等操作,非常适用于处理那些结构复杂或格式不统一的文本数据。

7.2.1 基础知识

  1. 正则表达式基本概念: 正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
  2. 常用符号: 包括特殊字符(如 .*+?[]())和转义字符(如 \d\w\s 等)。
  3. 匹配和搜索: 使用正则表达式进行模式匹配和搜索特定模式的文本。
  4. 替换: 使用正则表达式替换文本中的特定部分。

7.2.2 重点案例:日志文件错误类型提取

假设你有一份应用程序的日志文件,需要从中提取出所有错误类型。

数据准备

import pandas as pd
# 示例日志数据
log_entries = [
    "ERROR: Invalid user input at 2023-01-01 12:34",
    "WARNING: System overload at 2023-01-02 13:14",
    "ERROR: Disk full at 2023-01-03 15:04"
]
logs_df = pd.DataFrame(log_entries, columns=['log'])

错误类型提取

# 使用正则表达式提取错误类型
logs_df['error_type'] = logs_df['log'].str.extract('(ERROR|WARNING)')

7.2.3 拓展案例一:提取电子邮件地址

处理一份含有用户反馈的文本数据,需要从中提取出所有电子邮件地址。

数据准备

# 示例用户反馈数据
feedbacks = [
    "Please contact us at support@example.com",
    "You can also reach out to feedback@example.net for more info."
]
feedback_df = pd.DataFrame(feedbacks, columns=['text'])

电子邮件地址提取

# 使用正则表达式提取电子邮件地址
feedback_df['email'] = feedback_df['text'].str.extract('([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)')

7.2.4 拓展案例二:从文本中提取日期

假设你正在处理一份报告文档,需要从文本中提取所有的日期信息。

数据准备

# 示例报告文档数据
reports = [
    "The project started on 2023-01-10 and is expected to end by 2023-04-15.",
    "Our next meeting will be on 2023-02-20."
]
reports_df = pd.DataFrame(reports, columns=['text'])

日期提取

# 使用正则表达式提取日期
reports_df['date'] = reports_df['text'].str.extract('(\d{4}-\d{2}-\d{2})')

通过这些案例,我们展示了如何使用正则表达式在文本数据处理中进行模式匹配、搜索、和替换操作。无论是提取日志文件中的错误类型、从反馈中提取电子邮件地址,还是从报告文档中提取日期信息,正则表达式都是一个强大而灵活的工具。


7.3 类别数据的处理

类别数据处理是数据预处理中的重要环节,特别是在准备数据以供机器学习模型使用时。类别数据通常指的是可以将其分为不同类别的非数值型数据。

7.3.1 基础知识

  1. 标签编码(Label Encoding): 将类别转换为一组数字,每个类别对应一个唯一的整数。
  2. 独热编码(One-Hot Encoding): 创建新的列,每个列对应一个类别,如果数据属于该类别,则列值为1,否则为0。
  3. Pandas 的 Categorical 类型: 用于提高处理类别数据的效率和性能。
  4. 使用 pd.get_dummies() 进行独热编码: 一个简便的方法来转换类别数据为独热编码格式。

7.3.2 重点案例:顾客满意度调查分析

假设你有一份顾客满意度调查数据,其中包含顾客对服务满意度的评价(如“满意”,“不满意”,“中立”)。

数据准备

import pandas as pd
# 示例顾客满意度调查数据
satisfaction_data = {
    'customer_id': [1, 2, 3, 4],
    'satisfaction': ['满意', '不满意', '满意', '中立']
}
satisfaction_df = pd.DataFrame(satisfaction_data)

类别数据处理

# 将满意度转换为类别类型
satisfaction_df['satisfaction'] = pd.Categorical(satisfaction_df['satisfaction'], categories=['不满意', '中立', '满意'])
# 使用独热编码
satisfaction_encoded = pd.get_dummies(satisfaction_df, columns=['satisfaction'])

7.3.3 拓展案例一:产品评价分类

分析一份产品评价数据,需要将文本评价转换为数值型标签以便进行进一步分析。

数据准备

# 示例产品评价数据
reviews_data = {
    'review_id': [101, 102, 103, 104],
    'review': ['positive', 'negative', 'positive', 'neutral']
}
reviews_df = pd.DataFrame(reviews_data)

类别数据处理

# 将评价转换为数值型标签
reviews_df['review_label'] = reviews_df['review'].astype('category').cat.codes

7.3.4 拓展案例二:员工信息管理

假设你正在处理一份员工信息表,其中包含员工的部门信息,你需要对部门信息进行独热编码以便进行聚类分析。

数据准备

# 示例员工信息数据
employees_data = {
    'employee_id': ['E001', 'E002', 'E003', 'E004'],
    'department': ['HR', 'Tech', 'HR', 'Marketing']
}
employees_df = pd.DataFrame(employees_data)

类别数据处理

# 对部门信息进行独热编码
department_encoded = pd.get_dummies(employees_df, columns=['department'])

通过这些案例,我们展示了如何处理类别数据,包括标签编码、独热编码以及利用 Pandas 的 Categorical 类型。这些方法在准备数据进行机器学习模型训练时尤为重要,能够有效地将非数值型数据转换成模型可以理解的格式。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
17天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
48 0
|
2月前
|
数据采集 数据可视化 数据挖掘
Pandas函数大合集:数据处理神器一网打尽!
Pandas函数大合集:数据处理神器一网打尽!
35 0
|
2月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
76 0
|
18天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2
|
1月前
|
并行计算 大数据 数据处理
亿级数据处理,Pandas的高效策略
在大数据时代,数据量的爆炸性增长对处理技术提出更高要求。本文介绍如何利用Python的Pandas库及其配套工具高效处理亿级数据集,包括:采用Dask进行并行计算,分块读取以减少内存占用,利用数据库进行复杂查询,使用内存映射优化Pandas性能,以及借助PySpark实现分布式数据处理。通过这些方法,亿级数据处理变得简单高效,助力我们更好地挖掘数据价值。
56 1
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
87 3
|
6月前
|
数据可视化 数据挖掘 数据处理
进阶 pandas DataFrame:挖掘高级数据处理技巧
【5月更文挑战第19天】本文介绍了Pandas DataFrame的高级使用技巧,包括数据重塑(如`pivot`和`melt`)、字符串处理(如提取和替换)、日期时间处理(如解析和时间序列操作)、合并与连接(如`merge`和`concat`),以及使用`apply()`应用自定义函数。这些技巧能提升数据处理效率,适用于复杂数据分析任务。推荐进一步学习和探索Pandas的高级功能。
|
6月前
|
数据处理 索引 Python
使用pandas的merge()和join()函数进行数据处理
使用pandas的merge()和join()函数进行数据处理
109 2
|
2月前
|
数据采集 数据挖掘 数据处理
Pandas实践:南京地铁数据处理分析
Pandas实践:南京地铁数据处理分析
38 2
|
3月前
|
数据采集 数据挖掘 数据处理
解锁Python数据分析新技能!Pandas实战学习,让你的数据处理能力瞬间飙升!
【8月更文挑战第22天】Python中的Pandas库简化了数据分析工作。本文通过分析一个金融公司的投资数据文件“investment_data.csv”,介绍了Pandas的基础及高级功能。首先读取并检查数据,包括显示前几行、列名、形状和数据类型。随后进行数据清洗,移除缺失值与重复项。接着转换日期格式,并计算投资收益。最后通过分组计算平均投资回报率,展示了Pandas在数据处理与分析中的强大能力。
45 0