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

在这里插入图片描述

文章目录

  • 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.mzph.cn/news/662172.shtml

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

相关文章

VMware创建虚拟机

点击文件,新建虚拟机 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

【LeetCode】每日一题 2024_2_2 石子游戏 VI(排序、贪心)

文章目录 LeetCode?启动!!!题目:石子游戏 VI题目描述代码与解题思路 LeetCode?启动!!! 题目:石子游戏 VI 题目链接:1686. 石子游戏 VI 题目描述…

Hbase-2.4.11_hadoop-3.1.3集群_大数据集群_SSH修改默认端口22为其他端口---记录025_大数据工作笔记0185

其实修改起来非常简单,但是在大数据集群中,使用到了很多的脚步,也需要修改, 这里把,大数据集群,整体如何修改SSH端口,为22022,进行总结一下: 0.hbase-2.4.11的话,hbase集群修改默认SSH端口22,修改成22022,需要修改 需要修改/opt/module/hbase-2.4.11/conf/hbase-env.sh 这里…

shell脚本之免交互

目录 一、Here Document 免交互 1、交互与免交互的概念 2、 Here Document 概述 二、Here Document 应用 1、使用cat命令多行重定向 2、使用tee命令多行重定向 3、使用read命令多行重定向 4、使用wc -l统计行数 5、使用passwd命令用户修改密码 6、Here Document 变量…

fastadmin导入excel并对导入数据处理

情景描述 fastadmin有自带的导入功能,但是不好用,它要求你的表格标题必须跟数据表的备注一致,而且拿到的数据是直接插入数据表,我们无法获取想要的数据并对数据进行处理;而且有时候我们只是想要单纯的读取文件功能&…

丰田再怼「纯电动」,抛出「30%上限论」背后的焦虑和矛盾

让传统车企「丢掉」燃油车的包袱,并不简单。一边是赚钱,一边是烧钱,如何平衡是一个不小的难题。 本周,丰田董事长丰田章男对外表示,其预测未来电动汽车的市场份额将只有30%。而在电动化进程中,丰田章男一直…

【智慧农业】东胜物联温室监控系统硬件解决方案,自动化控制温室灯光、温湿度等

温室监控系统旨在提高智慧农业的工业生产率和效率。根据最近的一项研究,农业领域的物联网市场预计到2026年将达到约187亿美元。物联网技术包括自主耕作方法,帮助农场生产高质量的商品,并为农场经理提供最佳功能。某上市药企因业务需要&#x…

惊鸿一瞥-网络初识

💕"Echo"💕 作者:Mylvzi 文章主要内容:惊鸿一瞥-网络初识 一.网络的发展过程 网络的发展过程是循序渐进的,大致可以分为四个阶段: 单机时代->局域网时代->广域网时代->互联网时代 单机时代:就是每个机器之间…

[SwiftUI]使用UIActivityViewController来实现系统分享功能

在 SwiftUI 中,你可以使用 UIActivityViewController 来实现系统分享功能。由于 SwiftUI 目前没有直接提供类似的视图或修饰符,你需要使用 UIViewControllerRepresentable 协议来创建一个可以在 SwiftUI 视图中使用的 ActivityView。 首先,你…

BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket? Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口,一般由操作 系统提供。客户端连接上一个服务端,就会在客户端中产生一个 socket 接口实例,服务端每接受 一个客户端…

[机缘参悟-142] :一个软件架构师对佛学的理解 -6- 从计算机和数学的角度理解佛家的“因果”与十二因缘

目录 一、什么是因缘 1.1 佛家的因缘 1.2 佛家的因缘与因果轮回 1.2 从计算机角度理解因缘 1.3 从数学的角度理解因缘 二、佛家的十二因缘 2.1 大多数人的轮回 2.2 大多数人的的十二因缘轮回 2.3 十二因缘与三世因果的关系 2.4 十二因缘的现实意义 2.5 十二因缘与生…

Trie树数据结构——(字符串统计,最大异或对)

Trie树&#xff1a;是一种能够高效存储和查找字符串集合的数据结构 Trie字符串统计 思路&#xff1a; &#xff08;笔记来自AcWing 835. Trie字符串统计 - AcWing&#xff09; 代码如下&#xff1a; #include<iostream> #include<cstdio> #include<string>…

上位机图像处理和嵌入式模块部署(二进制图像的读写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前我们说过&#xff0c;对于图像处理而言&#xff0c;势必会涉及到文件的读写。但是不同格式文件的读写&#xff0c;这本身又是体力活&#xff0…

CodeFuse成功支持通义千问算法大赛,评测方案已开源

前段时间&#xff0c; 首届通义千问AI挑战赛成功举办&#xff0c;CodeFuse 为大赛提供技术支持&#xff0c;模型微调框架 MFTCoder 和 CodeFuseEval 评测框架为大赛保驾护航&#xff0c;助力大赛圆满完成。我们基于leetcode 阿里和蚂蚁最新面试题库建设了“模型赛马”在线打榜的…

HTML入门

学习视频 初识HTML 什么是HTML HTML&#xff1a;Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; 超文本包括&#xff1a;文字、图片、音频、视频、动画等 HTML 5&#xff0c;提供了一些新的元素和一些有趣的新特性&#xff0c;同时也建立了一些新规则。…

从传统到智慧:文旅产业的数字化变革

随着科技的迅猛发展和数字化时代的到来&#xff0c;文旅产业正经历着一场前所未有的变革。传统的旅游模式和服务方式逐渐被智慧化的技术和应用所取代&#xff0c;为游客带来更加便捷、高效、个性化的体验。本文将探讨文旅产业如何从传统模式向智慧化转型&#xff0c;以及数字化…

springboot 集成 nacos (demo 版)

环境要求&#xff1a;本地安装 nacos&#xff08;windows版本&#xff09;&#xff0c;jdk 是 8&#xff0c;安装完还得在 nacos 上面配置一个 yaml 类型的配置文件&#xff0c;方便项目演示读取。 提示&#xff1a;如标题所示&#xff0c;本文只介绍如何从零到一的去集成 naco…

基于Java SSM框架实现智能快递分拣系统项目【项目源码】

基于java的SSM框架实现智能快递分拣系统演示 JAVA简介 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;JSP&#xff08;java serv…

xss 盲打使用

使用beef等内网xss平台&#xff0c;或外网xss平台&#xff08;XSS平台-仅用于xss安全测试专用、XSS平台 - &#xff08;支持http/https&#xff09;XSS Platform&#xff09; 将生成的js脚本写到网站的留言框处&#xff0c;但对应的用户(尤其是admin)查看留言&#xff0c;就会…

【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)

从高层设计的角度去探讨框架需要关注的问题。 参考&#xff1a;速读《Vue.js 设计与实现》 - 掘金 (juejin.cn) 系列目录&#xff1a; 标题博客第一篇&#xff1a;框架设计概览【Vue.js设计与实现】第一篇&#xff1a;框架设计概览-阅读笔记第二篇&#xff1a;响应系统【Vue.…