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

news2024/11/27 12:55:15

在这里插入图片描述

文章目录

  • 7.1 文本数据的基本操作
    • 7.1.1 基础知识
    • 7.1.2 重点案例:客户反馈分析
    • 7.1.3 拓展案例一:产品评论的关键词提取
    • 7.1.4 拓展案例二:日志文件中的日期提取
  • 7.2 使用正则表达式处理文本
    • 7.2.1 基础知识
    • 7.2.2 重点案例:日志文件错误类型提取
    • 7.2.3 拓展案例一:提取电子邮件地址
    • 7.2.4 拓展案例二:从文本中提取日期
  • 7.3 类别数据的处理
    • 7.3.1 基础知识
    • 7.3.2 重点案例:顾客满意度调查分析
    • 7.3.3 拓展案例一:产品评价分类
    • 7.3.4 拓展案例二:员工信息管理

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 类型。这些方法在准备数据进行机器学习模型训练时尤为重要,能够有效地将非数值型数据转换成模型可以理解的格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习03 -- 函数相关内容

1.def --- 这个是定义函数的关键字 \n --- 这个在print()函数中是换行符号 1.注意是x, 加个空格之后再y 1.形式参数数量是不受限制的(参数间用,隔开),传实参给形参的时候要一一对应 返回值 --- 函数返还的结果捏 1.写None的时…

vue-head 插件设置浏览器顶部 favicon 图标 - 动态管理 html 文档头部标签内容

目录 需求实现11. 安装插件2. 项目内 main.js 引入3. vue页面使用 实现2其他 需求 vue项目中浏览器页面顶部图标可配置 实现1 使用 vue-head 插件实现 vue-head 插件可实现 html 文档中 head 标签中的内容动态配置(npm 官网 vue-head 插件) 1. 安装插件 …

零基础怎么学鸿蒙开发?

对于零基础的学习者来说,掌握鸿蒙开发不仅是迈向新技术的第一步,更是开拓职业道路的重要机遇。随着鸿蒙系统在各行各业的应用逐渐扩展,对于掌握这一项技术的开发人员需求也随之增长。下文将为大家提供针对零基础学习鸿蒙开发的逻辑&#xff0…

视觉上下料技术在智能制造领域的发展趋势

在智能制造的大潮中,视觉上下料技术凭借其独特的优势,逐渐成为生产线上的“明星”。它不仅提高了生产效率,减少了人工干预,还为智能制造提供了强大的技术支持。那么,视觉上下料技术在智能制造领域的发展趋势如何呢&…

假期刷题打卡--Day20

1、MT1173魔数 一个数字,把他乘以二,会得到一个新的数字,如果这个新数字依然由原数中那些数字组成,就称原数为一个魔数。输入正整数N,检查它是否是一个魔数,输出YES或者NO。 格式 输入格式: …

《Vite 基础知识》基于 Vite4 的 Vue3 项目创建(受 Nodejs 版本限制可参考)

真实的工作中 Node.js 版本不是随意可升级的,此处记录一次折中升级实战~ 本章基于 Vite4 开发! Vite5、 Vitepress, 都需要 Node.js 版本 18,20 node/npmVite4Vite5Vitepress14.21.3 / 8.13.2💯20.11.0 / 10.2.4&#…

从零开始学Linux之gcc命令

首先我们需要知道有两种编程语言 编译型语言:要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序,例如C、C、go语言、汇编语言等,使用的转换工具称为编译器。 解释型语言:一边执行一边转换&a…

[NOIP2011 提高组] 聪明的质监员

[NOIP2011 提高组] 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 n n n 个矿石,从 1 1 1 到 n n n 逐一编号,每个矿石都有自己的重量 w i w_i wi​ 以及价值 v i v_i vi​ 。检验矿产的流程…

muduo库的模拟实现——工具部分

文章目录 一、Buffer模块1.为什么需要Buffer缓冲区2.Buffer模块的设计3.Buffer模块的实现4.Buffer缓冲区的其它设计方案 二、Socket模块1.Socket模块的设计2.Socket代码实现 三、Acceptor模块1.Acceptor模块的设计与实现2.Acceptor模块完整代码实现 四、定时器模块1.时间轮的思…

opencv——将2张图片合并

效果演示: 带有绿幕的图片的狮子提取出来,放到另一种风景图片里! 1. 首先我们要先口出绿色绿幕,比如: 这里将绿色绿色绿幕先转为HSV,通过修改颜色的明暗度,抠出狮子的轮廓。 代码 : import cv2 as cv import numpy as np import matplotlib.pyplot as plt def showI…

正弦波拟合

正弦波拟合是一种常见的数学方法,用于确定最佳匹配给定数据集的正弦波形。这可以用于各种应用,如信号处理、周期性数据分析等。以下举例展示如何进行正弦波拟合。 步骤与方法 收集数据:首先,你需要收集或生成一组数据&#xff0…

食品信息管理系统java项目ssm项目springboot项目

食品信息管理系统java项目ssm项目springboot项目,增删改查均已实现,有批量删除 前端技术: JavaScript,Layui,Html5 后端技术: Java,MySql,Spring,Spring Mvc,SpringBoot&#xff0…

【代码随想录20】669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

目录 669.修剪二叉搜索树题目描述参考代码 108.将有序数组转换为二叉搜索树题目介绍参考代码 538.把二叉搜索树转换为累加树题目描述参考代码 669.修剪二叉搜索树 题目描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树…

2024.1.28 GNSS 学习笔记

1.基于 地球自转改正卫地距 以及 伪距码偏差 重构定位方程: 先验残差计算公式如下所示: 2.观测值如何定权?权重如何确定? 每个卫星的轨钟精度以及电离层模型修正后的误差都有差异,所以我们不能简单的将各个观测值等权…

2024.2.1日总结

web的运行原理: 用户通过浏览器发送HTTP请求到服务器(网页操作)。web服务器接收到用户特定的HTTP请求,由web服务器请求信息移交给在web服务器中部署的javaweb应用程序(Java程序)。启动javaweb应用程序执行…

(黑马出品_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

(黑马出品_01)SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术栈导学 1.认识微服务1.1.学习目标1.2.单体架构1.3.分布式架构1.4.微服务1.5.SpringCloud1.6.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示…

main函数、_tmain函数和wmain函数的区别

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 今天碰到一个问题,算是彻底搞明白了main函数、_tmain函数和wmain函数的区别。就是使用vs2015新建一个控制台工程,如果入口函数是设…

Maya------布尔 圆形圆角组件

17. maya常用命令7.布尔 圆形圆角组件_哔哩哔哩_bilibili 选中一个模型,再按shift加选另外一个模型 圆形圆角命令

STM32——SPI

STM32——SPI 1.SPI介绍 SPI是什么? SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚&#…

关于系统报错找不到X3DAudio1_7.dll怎么修复?总共有五个常见方案供你选择

通常情况下,当电脑尝试运行某些应用程序或游戏时,可能会遭遇“找不到x3daudio1_7.dll无法继续执行”的错误信息,这通常表明系统中缺少某个重要文件。为了理解这一问题,并寻找有效的解决方案,让我们先探讨为什么会发生这…