【Pandas入门教程】如何操作文本数据

news2024/12/23 23:58:48

如何操作文本数据

来源:Pandas官网:https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html
笔记托管:https://gitee.com/DingJiaxiong/machine-learning-study

在这里插入图片描述

文章目录

    • 如何操作文本数据
        • 导包
        • 数据准备
        • 【小结】

导包

import pandas as pd

数据准备

数据介绍: 使用存储为 CSV 的泰坦尼克号数据集。数据由以下数据列组成:

  • 【PassengerId】乘客 ID:每位乘客的 ID。
  • 【Survived】幸存:表明乘客是否幸存。0 表示是,1 表示否。
  • 【Pclass】P类:3个机票类别之一:1类,2类和3类.
  • 【Name】姓名:乘客姓名。
  • 【Sex】性别:乘客的性别。
  • 【Age】年龄:乘客的年龄(以岁为单位)。
  • SibSp:船上的兄弟姐妹或配偶的数量。
  • Parch:船上的父母或孩子人数。
  • 【Ticket】票:乘客的票号。
  • 【Fare】票价:表示票价。
  • 【Cabin】客舱:乘客的客舱号码。
  • 【Embarked】登船:登船港。
titanic = pd.read_csv("titanic.csv")
titanic.head()
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS

使所有名称字符小写。

titanic["Name"].str.lower()
0                                braund, mr. owen harris
1      cumings, mrs. john bradley (florence briggs th...
2                                 heikkinen, miss. laina
3           futrelle, mrs. jacques heath (lily may peel)
4                               allen, mr. william henry
                             ...                        
886                                montvila, rev. juozas
887                         graham, miss. margaret edith
888             johnston, miss. catherine helen "carrie"
889                                behr, mr. karl howell
890                                  dooley, mr. patrick
Name: Name, Length: 891, dtype: object

若要使Name列中的每个字符串都小写,请选择“Name”列,添加 str 访问器并应用 lower 方法。因此,每个字符串都是按元素转换的。

与具有 dt 访问器的时间序列教程中的日期时间对象类似,使用 str 访问器时可以使用许多专用字符串方法。这些方法通常具有与单个元素的等效内置字符串方法匹配的名称,但按元素(还记得按元素计算?)应用于列的每个值。

通过提取逗号前的部分来创建包含乘客姓氏的新列 Surname。

titanic["Name"].str.split(",")
0                             [Braund,  Mr. Owen Harris]
1      [Cumings,  Mrs. John Bradley (Florence Briggs ...
2                              [Heikkinen,  Miss. Laina]
3        [Futrelle,  Mrs. Jacques Heath (Lily May Peel)]
4                            [Allen,  Mr. William Henry]
                             ...                        
886                             [Montvila,  Rev. Juozas]
887                      [Graham,  Miss. Margaret Edith]
888          [Johnston,  Miss. Catherine Helen "Carrie"]
889                             [Behr,  Mr. Karl Howell]
890                               [Dooley,  Mr. Patrick]
Name: Name, Length: 891, dtype: object

使用 Series.str.split() 方法,每个值都作为 2 个元素的列表返回。第一个元素是逗号之前的部分,第二个元素是逗号之后的部分。

titanic["Surname"] = titanic["Name"].str.split(",").str.get(0)
titanic["Surname"]
0         Braund
1        Cumings
2      Heikkinen
3       Futrelle
4          Allen
         ...    
886     Montvila
887       Graham
888     Johnston
889         Behr
890       Dooley
Name: Surname, Length: 891, dtype: object

由于我们只对表示姓氏的第一部分(元素 0)感兴趣,我们可以再次使用 str 访问器并应用 Series.str.get() 来提取相关部分。str实际上,这些字符串函数可以连接起来,一次组合多个函数!

提取有关泰坦尼克号上伯爵夫人的乘客数据。

titanic["Name"].str.contains("Countess")
0      False
1      False
2      False
3      False
4      False
       ...  
886    False
887    False
888    False
889    False
890    False
Name: Name, Length: 891, dtype: bool
titanic[titanic["Name"].str.contains("Countess")]
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedSurname
75976011Rothes, the Countess. of (Lucy Noel Martha Dye...female33.00011015286.5B77SRothes

字符串方法 Series.str.contains()() 检查列中的每个值Name,并为每个值返回 True(Countess 是名称的一部分)或 False(CountessCountessCountess 不是名称的一部分)。此输出可用于使用数据子集教程中介绍的条件(布尔)索引对数据进行子选择。由于泰坦尼克号上只有一个伯爵夫人,结果我们得到了一排。

【注意】支持对字符串进行更强大的提取,因为 Series.str.contains() 和 Series.str.contains()Series.str.extract() 方法接受正则表达式

泰坦尼克号的哪位乘客名字最长?

titanic["Name"].str.len()
0      23
1      51
2      22
3      44
4      24
       ..
886    21
887    28
888    40
889    21
890    19
Name: Name, Length: 891, dtype: int64

要获得最长的名称,我们首先必须获取Name列中每个名称的长度。通过使用 pandas 字符串方法,Series.str.len() 函数分别应用于每个名称(元素)。

titanic["Name"].str.len().idxmax()
307

接下来,我们需要在名称长度最大的表中获取相应的位置,最好是索引标签。idxmax() 方法正是这样做的。它不是字符串方法,适用于整数,因此不使用 str。

titanic.loc[titanic["Name"].str.len().idxmax(), "Name"]
'Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)'

根据行 (307) 和列的索引名 (Name),我们可以使用 loc 运算符进行选择

在“性别”列中,将“男性”的值替换为“M”,将“女性”的值替换为“F”。

titanic["Sex_short"] = titanic["Sex"].replace({"male": "M", "female": "F"})
titanic["Sex_short"]
0      M
1      F
2      F
3      F
4      M
      ..
886    M
887    F
888    F
889    M
890    M
Name: Sex_short, Length: 891, dtype: object

虽然 replace() 不是一个字符串方法,但它提供了一种使用映射或词汇来转换某些值的便捷方法。它需要一个dictionary来定义映射 {from : to}.

还有一个 replace() 方法可用于替换一组特定的字符。但是,当具有多个值的映射时,这将变为:

titanic[“Sex_short”] = titanic[“Sex”].str.replace(“female”, “F”)
titanic[“Sex_short”] = titanic[“Sex_short”].str.replace(“male”, “M”)

这会变得繁琐,并且容易导致错误。

【小结】

字符串方法可以使用 str 访问器。

字符串方法按元素工作,可用于条件索引。

replace方法是根据给定字典转换值的便捷方法。

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

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

相关文章

怎么录屏?5 款免费无水印的录屏神器

无论您是想记录游戏中令人难忘的时刻、与他人分享视频教程,还是做更多类似的事情,都必须使用屏幕录像机。从 Internet 上很容易获得屏幕录像机;然而,找到一个“好”的并不是那么简单。当我们试用一些免费的屏幕录像机来捕捉电脑屏…

springboot整合之版本号统一管理

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能操作会略有不同,不过总的来说不影响。 springboot整合之如何选择版本及项目搭建 springboot整合之版本号统一管理 springboot整合mybatis-plusdurid数据库连接池 springboot整合…

华舞依旧,未来不远:智能光伏十大趋势告诉我们什么?

在“碳中和”时代,光伏正在日渐成为能源舞台的主角。我们知道,想要实现“碳中和”目标就需要降低能源带来的碳排放。而在能够实现这个目标的能源体系中,水电、风电受到环境限制较强,而氢能、核聚变为代表的下一代能源体系还不够成…

D59|单调栈进阶版

503.下一个更大元素II 1.题目 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味…

node.js+uni计算机毕设项目“宠到家”宠物领养小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

“千万别奶睡,以后很难戒”,宝宝为啥喜欢奶睡,真有这么可怕?

我还记得懒妈妈哺乳的时候,身边有一个“过来人”提醒:不要奶睡,否则以后就戒不掉了,宝宝会一直吃着睡觉。事实上,当时懒惰的母亲更抗拒这种说法,主要原因是哄睡更困难,每天花更多的时间哄睡觉&a…

《C++程序设计原理与实践》笔记 第8章 函数相关的技术细节

在本章和下一章中,我们将注意力从程序设计转移到主要的编程工具——C语言上。我们会介绍一些语言的技术细节,来给出一个C的基本功能的稍宽的视角,并从更系统化的角度讨论这些功能。 8.1 技术细节 程序设计(programming)(即如何用…

Podman QuickStart

Install Install Link brew install podman podman machine init podman machine startpodman machine init --cpus4 --disk-size64 --memory6144 podman machine start podman-machine-default开启和关闭root 权限 Tips: 切换root 模式前后,相互看不到对方模式下…

vue学习笔记(七)-vue3新特性

概念 vue3简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0…

C#实现QQ窗体功能

C#实现QQ窗体功能案例简述预备知识导图功能结构知识点分析C#基础知识Windows系统知识控件和组件案例简述 通过C#使用类似QQ窗体的功能,当窗体放置到屏幕的边缘,可以将窗体隐藏,当鼠标再次放置到屏幕边缘时,窗体可再次显示。 预备…

我的MEM管理类研究生,在路上

——生死看淡,不服就干。 一直怀揣着研究生梦的我,当年没能保研,也没能认真考研,在考取国家中级软件师证书后,意外发现了MEM(Master of Engineering Management )——工程管理硕士。 2021-11-…

Git - windows下操作 SSH Key

Git - windows下操作 SSH Key 流程 SSH密钥介绍 简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使…

Nature:剑桥大学的研究人员找到了终结新冠的新药了吗?

本月初(即2022年12月5日),《Nature》杂志发布了剑桥大学Teresa Brevini等人的一篇关于新冠研究的论文。在该论文中,作者首先发现法尼酯 X 受体(FXR)能够直接调节人体的ACE2的表达。过去的研究已经表明&…

手把手教你搭建Hexo博客

导读|很多开发者搭建自己的博客,会选择现有的博客系统方案,比如:Wordpress、Hexo和Halo等。其中Hexo博客作为全静态博客,没有数据库、对服务器资源消耗也极低,而且可定制化程度极高。本文将带领各位开发者基…

【Linux】编译的四个步骤

目录 平常的使用: 安装软件 编写:vi/vim vscode 编译 执行 路径/文件名 计算机五大部件 编译四步 1.预编译(处理#) 2.编译(查错,代码到汇编) 3.汇编(汇编到二进制指令) 4.链接 平常的…

157. 答读者疑问:为什么我的 manifest.json 文件无法正确被加载?

有教程的读者向我提问:已经完成了下列两个步骤的学习: SAP UI5 应用开发教程之十 - 什么是 SAP UI5 应用的描述符 DescriptorSAP UI5 应用开发教程之一百三十三 - SAP UI5 应用元数据文件 manifest.json 的加载和解析原理讲解自己本地 Visual Studio Code 开发了一个 SAP UI5…

SpringBoot+Mybatis-Plus+Thymeleaf+Bootstrap分页查询(前后端完整版开源学习)图书管理系统

目录分页主要逻辑,在3.7和3.81.准备工作1.1 参考博客1.2 项目结构2. 数据库3. 详细代码部分3.1 pom依赖3.2 application.yml3.3 BookMapper.xml3.4 BookMapper3.5 BookService 和 BookServiceImpl3.6 实体类entity book3.7控制层 BookController3.8 前端页面bookLis…

猿如意使用测评

本篇博客会记录使用猿如意这款产品的整体使用感受和相关建议,可以作为新人上手这款产品的参考 1. 猿如意的官方介绍 首先是官方对这款产品的介绍 猿如意是一款面向开发者的辅助开发工具箱,包含了效率工具、开发工具下载,教程文档&#xff0…

4.7 深入理解Spring

4.7.1 Spring 4.7.1.1 Spring模块 Spring 由七大模块组成,分别是 数据模块(Data Access / Integration)Web模块切面模块(Aop,Aspects)工具模块(Instrumentation)消息模块核心模块测试模块Spring模块4.7.…

08-09-Zookeeper客户端使用与经典应用场景

Zookeeper 集群模式: Zookeeper 集群模式一共有三种类型的角色 Leader: 处理所有的事务请求(写请求),可以处理读请求,集群中只能有一个Leader Follower:只能处理读请求,同时作为 Leader的候选节…