【pandas】教程:10-文本数据的操作

news2025/1/11 2:49:23

Pandas 文本数据的操作

本节使用的数据为 data/titanic.csv,链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库

在这里插入图片描述

读入数据

import pandas as pd 
titanic = pd.read_csv("data/titanic.csv")
   PassengerId  Survived  Pclass  \
0            1         0       3   
1            2         1       1   
2            3         1       3   
3            4         1       1   
4            5         0       3   

                                                Name     Sex   Age  SibSp  \
0                            Braund, Mr. Owen Harris    male  22.0      1   
1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   
2                             Heikkinen, Miss. Laina  female  26.0      0   
3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   
4                           Allen, Mr. William Henry    male  35.0      0   

   Parch            Ticket     Fare Cabin Embarked  
0      0         A/5 21171   7.2500   NaN        S  
1      0          PC 17599  71.2833   C85        C  
2      0  STON/O2. 3101282   7.9250   NaN        S  
3      0            113803  53.1000  C123        S  
4      0            373450   8.0500   NaN        S  

如何操作文本数据

  • 将名字都改为小写
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

与时间序列里的dt 类似,字符串有 str 可以访问很多字符操作的方法。

  • 通过提取逗号前的部分,创建一个包含乘客姓氏的新列姓氏。
# 以下语句可以将姓氏用逗号分离
# titanic["Surname"] = titanic["Name"].str.split(",")
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
  • 提取泰坦尼克号上女伯爵的乘客数据。
# 可以通过 contains 方法获得一个布尔值表示名字是否包含某个字符串
# titanic["Name"].str.contains("Countess")
titanic[titanic["Name"].str.contains("Countess")]
     PassengerId  Survived  Pclass  \
759          760         1       1   

                                                  Name     Sex   Age  SibSp  \
759  Rothes, the Countess. of (Lucy Noel Martha Dye...  female  33.0      0   

     Parch  Ticket  Fare Cabin Embarked Surname  
759      0  110152  86.5   B77        S  Rothes  
  • 哪个乘客的名字最长
# 获得每个乘客名字的长度
# titanic["Name"].str.len()
titanic["Name"].str.len().idxmax()

## output 
307

idxmax 方法可以返回最大值的索引,如果要知道最长名字是什么?可以用以下语句
titanic.loc[titanic["Name"].str.len().idxmax(), "Name"]
'Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)'

  • 将性别列里的 malefemale 替换为 MF
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

也可以按照如下方法完成
titanic["Sex_short"] = titanic["Sex"].str.replace("female", "F") titanic["Sex_short"] = titanic["Sex_short"].str.replace("male", "M")

记住

字符串的方法可以通过 str 进行访问,类似于时间序列的 dt
字符串方法按元素工作,可用于条件索引。
replace 方法可以方便的将字符串用字典的方式进行替换。

参考

How to manipulate textual data? — pandas 1.5.2 documentation (pydata.org)

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

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

相关文章

指针进阶(2)

Tips 1. 2. 3. 碰到地址就等价于指针变量,里面存放着该地址的指针变量 4. 数组指针是存放数组的地址,指向的是一个数组;函数指针存放的是函数的地址,指向的是一个函数。 5. 地址就是指针,地址就是指针 6. 数…

LeetCode 138. 复制带随机指针的链表(C++)

思路: 用哈希表实现,创建一个哈希表来对应原链表中的每一个节点,这样也可以将原链表中的所有结点的next和random关系映射到哈希表复制链表中。 原题链接:https://leetcode.cn/problems/copy-list-with-random-pointer/description…

1658. 将 x 减到 0 的最小操作数

解法一:双指针 首先,每次操作可以移除数组 nums 最左边或最右边的元素,那么相当于求出l和rl和rl和r使得[0,l][r,n−1][0, l][r,n-1][0,l][r,n−1]之间所有元素之和等于xxx,并且元素个数最少。我们可以通过双重循环枚举l和r变量l和r变量l和r变…

马哥架构第1周课程作业

马哥架构第1周课程作业一. 画图解释一次web请求的过程。涉及tcp/ip, dns, nginx,wsgi。二. 编译安装nginx, 详细解读常用参数。三. 基于nginx完成动静分离部署 lamp。php到后端php-fpm, static/ 在nginx本地。3.1 配置 nginx 实现反向代理的动静分离3.2 准备后端 ht…

equals和==的区别

目录 1.基本数据类型和引用数据类型的说明 2. 3.equals 1.基本数据类型和引用数据类型的说明 基本数据类型:byte,short,int,long,float,double,char,boolean。 对应的默认值&…

2-4进程管理-死锁

文章目录一.死锁的概念二.死锁的处理策略1.死锁预防:破坏必要条件,让死锁无法发生2.避免死锁:在动态分配资源的过程中,用一些算法防止系统进入不安全状态(1)银行家算法(2)系统安全状…

Java if else分支结构精讲

Java 支持两种选择语句:if 语句和 switch 语句。其中 if 语句使用布尔表达式或布尔值作为分支条件来进行分支控制,而 switch 语句则用于对多个整型值进行匹配,从而实现分支控制。这些语句允许你只有在程序运行时才能知道其状态的情况下&#…

2022:不恋过往,不畏将来

一、开篇 少年有山海,踏过皆繁华。岁月不居,时节如流,时间在指尖悄悄流逝,人生即将翻开新的一年的篇章。2022年,注定是一个不平凡的年份,这一年,我们从关心世界到关心国家,最后关心自…

2023年12306购票平台自动化购票二|解决车次查找与预定

目录 一、说明 1.1、背景 1.2、说明 二、步骤 2.1、点击去购票 2.2、在搜索框中输入车次信息 2.3、点击查找 2.4、出现车次信息,进行筛选,如果有票则点击计入预定车票界面 三、结果 四、小节 一、说明 1.1、背景 接上文,春运抢不到…

适用于 Windows 的 5 大 PDF 编辑器

“如何在 Windows 7/8/10/11 上编辑 PDF 文件?” “适用于 Windows 7/8/10/11的最佳 PDF 编辑器是什么?” 升级到 Windows 7/8/10/11 后,你会发现很多应用程序在新的 Windows 系统上无法运行,包括 PDF 编辑器。然而,一…

POJ 3070 Fibonacci

Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 30932Accepted: 20284 Description In the Fibonacci integer sequence, F0 0, F1 1, and Fn Fn − 1 Fn − 2 for n ≥ 2. For example, the first ten terms of the Fibonacci sequence are: 0, 1, 1, 2, 3,…

opencv源码之中值滤波medianBlur_SortNet解读

背景中值滤波,最大值滤波,最小值滤波属于排序滤波,常用于图像去噪处理。最大/小值滤波的处理比较好理解,就是逐个比较窗口内的每个数字,每次比较会根据所属任务保留最大值,或最小值。假设滑动窗口是3*3&…

固体物理分子模拟实验(二)MPI的安装

固体物理分子模拟实验(二)MPI的安装 文章目录固体物理分子模拟实验(二)MPI的安装前言一、MPI是什么?二、安装步骤(Ubuntu22.04mpich-4.0.2)1、下载mpich解压包2、安装前置组件3、文件配置&#…

【一文讲通】如何检测数据满足同分布

1 统计指标的方法1.1群体稳定性指标(Population Stability Index,PSI)群体稳定性指标(Population Stability Index,PSI), 衡量未来的样本(如测试集)及训练样本评分的分布…

【Linux】基础开发工具使用 --- vim

目录 前言 vim的基本概念 具体操作 插入模式 命令模式下的指令 底行模式下的指令 vim的配置 前言 🍧了解了 Linux 的一些基本的指令之后若要在 Linux 上进行程序的编写,除了 nano 以外,我们还可以选择 vim 进行编写。而 vim 是 vi 升级…

OJ万题详解––孤独的照片(C++详解)

题目 题目描述 Farmer John 最近购入了 N 头新的奶牛(),每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。 奶牛目前排成一排,Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。 然…

0107-JAVA和JDK的区别

前言 因为工作需要现在也不得不接触后端java语言,对于java和jdk一直存在疑惑,今天就详细总结一下 1.什么是java 人话就是java是一门后端脚本语言和PHP一样 2.什么是jdk JDK的全称是Java Development Kit,直译就是:Java开发工…

真实地址查询——DNS

通过浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给 Web 服务器。但在发送之前,还有一项工作需要完成,那就是查询服务器域名对应的 IP 地址,因为委托操作系统发送消息时,必须提供通信对象的 IP 地址…

java 基础 - 泛型

泛型 术语中文含义举例Parameterized type参数化的类型ListActual typeparameter实际类型参数StringGeneric type泛型类型ListFormal typeparameter形式类型参数 EUnbounded wildcard type无限制通配符类型List<?>Raw type原始类型ListBounded type parameter有限制类型…

Vue--》Vue3给数据共享增添的改变

目录 数据共享 父向子共享数据 子向父共享数据 父子组件间数据双向同步 兄弟组件共享数据 后代组件共享数据 使用Vue3的setup函数实现后代数据共享 数据共享 在项目开发中&#xff0c;组件之间的关系分为如下3种&#xff1a;父子关系、兄弟关系、后代关系。 父向子共享…