20+Pandas文本数据处理,干货多多
今天我们来谈论一下pandas
库当中文本数据的操作,希望大家再看完本篇文章之后会有不少的收获,我们大致会讲
创建一个包含文本数据的DataFrame
常用处理文本数据的方法的总结
正则表达式与DataFrame内部方法的结合
创建文本内容的数据
我们先来创建一个包含文本数据的DataFrame,来供我们后面使用
import pandas as pd
df = pd.DataFrame({"姓": ["李","王","戴", "李", "张"],"名": ["华","硕","建业", "四", "三"],"户籍地址": [" 浙江省·宁波市 ", " 浙江省·杭州市 ", " 浙江省·丽水市 ", " 浙江省·衢州市 ", " 浙江省·湖州市 "],"微信ID": ["Tomoplplplut1248781", "Smopopo857", "Adahuhuifhhjfj", "Tull1945121", "ZPWERERTFD599557"],"邮箱地址": ["tom02159@163.com", "smitt7821@163.com", "adams623@163.com", "tull0305@163.com", "five7532@163.com"]
})df
output
姓 名 户籍地址 微信ID 邮箱地址
0 李 华 浙江省·宁波市 Tomoplplplut1248781 tom02159@163.com
1 王 硕 浙江省·杭州市 Smopopo857 smitt7821@163.com
2 戴 建业 浙江省·丽水市 Adahuhuifhhjfj adams623@163.com
3 李 四 浙江省·衢州市 Tull1945121 tull0305@163.com
4 张 三 浙江省·湖州市 ZPWERERTFD599557 five7532@163.com
常用处理文本数据的方法总结
Python
当中用来处理字符串数据的方法有很多,基本上都可以在DataFrame内部拿来使用,例如lower()
方法和upper()
方法,给字母大小写
df["微信ID"].str.lower()
output
0 tomoplplplut1248781
1 smopopo857
2 adahuhuifhhjfj
3 tull1945121
4 zpwerertfd599557
Name: 微信ID, dtype: object
又譬如
df["微信ID"].str.len()
output
0 19
1 10
2 14
3 11
4 16
Name: 微信ID, dtype: int64
当然我们看到户籍地址这一列中的数据有很多的空格
df["户籍地址"]
output
0 浙江省·宁波市
1 浙江省·杭州市
2 浙江省·丽水市
3 浙江省·衢州市
4 浙江省·湖州市
Name: 户籍地址, dtype: object
我们可以使用处理字符串时的strip()
方法
df["户籍地址"].str.strip()
output
0 浙江省·宁波市
1 浙江省·杭州市
2 浙江省·丽水市
3 浙江省·衢州市
4 浙江省·湖州市
Name: 户籍地址, dtype: object
与之相类似的还有lstrip()
方法以及rstrip()
方法,这里就不做赘述。
在字符串的处理过程当中,startswith()
方法和endswith()
方法也是用的非常的频繁,例如我们想要挑选出户籍地址是“宁波市”的数据,
df["户籍地址"] = df["户籍地址"].str.strip()
df[df["户籍地址"].str.endswith("宁波市")]
output
姓 名 户籍地址 微信ID 邮箱地址
0 李 华 浙江省·宁波市 Tomoplplplut1248781 tom02159@163.com
另外我们还可以使用replace()
方法来实现当中的字符串的替换
df["户籍地址"].str.replace("·", "--")
output
0 浙江省--宁波市
1 浙江省--杭州市
2 浙江省--丽水市
3 浙江省--衢州市
4 浙江省--湖州市
Name: 户籍地址, dtype: object
那既然用到了replace()
方法,那么split()
方法也可以尝试一下
df["户籍地址"].str.split("·")
output
0 [浙江省, 宁波市]
1 [浙江省, 杭州市]
2 [浙江省, 丽水市]
3 [浙江省, 衢州市]
4 [浙江省, 湖州市]
Name: 户籍地址, dtype: object
在经过spilit()
方法的切割过之后就变成了列表的形式,然后可以通过get()
方法或者[]
来获取里面的元素,例如
df["户籍地址"].str.split("·").str.get(0)
或者
df["户籍地址"].str.split("·").str[0]
output
0 浙江省
1 浙江省
2 浙江省
3 浙江省
4 浙江省
Name: 户籍地址, dtype: object
那么获取列表当中的第二个元素也是同样的道理,当然我们也可以在split()
方法当中添加expand=True
这个参数,来将上面列表形式的数据转化成DataFrame格式
df["户籍地址"].str.split("·", expand=True)
output
0 1
0 浙江省 宁波市
1 浙江省 杭州市
2 浙江省 丽水市
3 浙江省 衢州市
4 浙江省 湖州市
同样地,我们可以在后面添加[]
来获取我们想要的元素
df["户籍地址"].str.split("·", expand=True)[1]
output
0 宁波市
1 杭州市
2 丽水市
3 衢州市
4 湖州市
Name: 1, dtype: object
正则表达式与DataFrame内部方法的结合
假如我们想要提取文本数据内部的一部分数据,可以结合正则表达式来使用,例如我们想要提取“微信ID”这一列当中的字母和数字,并且将两者分开来
two_groups = "([a-zA-Z]+)([0-9]+)"
df["微信ID"].str.extract(two_groups, expand=True)
output
0 1
0 Tomoplplplut 1248781
1 Smopopo 857
2 NaN NaN
3 Tull 1945121
4 ZPWERERTFD 599557
当然了,如果想是要提取文本数据中的部分数据,可以直接在str
方法后面添加索引,例如
df["邮箱地址"].str[-8:]
output
0 @163.com
1 @163.com
2 @163.com
3 @163.com
4 @163.com
Name: 邮箱地址, dtype: object
当然,从另外一个角度讲,正则表达式也可以帮助我们确认文本数据是否符合某种规律,
two_groups = "([a-zA-Z]+)([0-9]+)"
df["微信ID"].str.match(two_groups)
output
0 True
1 True
2 False
3 True
4 True
Name: 微信ID, dtype: bool
当中有一个为False
,不满足字母+数字的规律,我们再进一步,将满足条件的数据提取出来
df[df["微信ID"].str.match(two_groups)]
output
姓 名 户籍地址 微信ID 邮箱地址
0 李 华 浙江省·宁波市 Tomoplplplut1248781 tom02159@163.com
1 王 硕 浙江省·杭州市 Smopopo857 smitt7821@163.com
3 李 四 浙江省·衢州市 Tull1945121 tull0305@163.com
4 张 三 浙江省·湖州市 ZPWERERTFD599557 five7532@163.com
针对文本数据而言,contains()
方法也能够派上用场,例如下面的数据
姓 名 户籍地址 微信ID 邮箱地址
0 李 华 浙江省·宁波市 Tomoplplplut1248781 tom02159@163.com
1 王 硕 浙江省·杭州市 Smopopo857 smitt7821@163.com
2 戴 建业 浙江省·丽水市 Adahuhuifhhjfj adams623@163.com
3 李 四 浙江省·衢州市 Tull1945121 tull0305@163.com
4 张 三 浙江省·湖州市 ZPWERERTFD599557 five7532@163.com
5 黄 五 浙江省·宁波市 hunhunhu45652 1erdcvf127@16.com
我们用contains()
来提取出户籍地址为“宁波市”的内容,可以这么做
df[df["户籍地址"].str.contains("宁波市")]
output
姓 名 户籍地址 微信ID 邮箱地址
0 李 华 浙江省·宁波市 Tomoplplplut1248781 tom02159@163.com
5 黄 五 浙江省·宁波市 hunhunhu45652 1erdcvf127@16.com
暂时就这些了,下一篇原创的文章安排在周天,非技术方面的,期待一下?
HISTORY
/
往期推荐
7000字整理: 全网最详细Pandas合并数据集操作总结
肝了3天,整理了50个Pandas高频使用技巧,强烈建议收藏!
用Python采集了几千条相亲文案,终于发现了告别单身的秘密
全国气温骤降,Python一键生成御寒指南,助你温暖过冬!!
分享、收藏、点赞、在看安排一下?
20+Pandas文本数据处理,干货多多相关推荐
- 经常被人忽视的:Pandas 文本数据处理!
毋庸置疑,Pandas是使用最广泛的 Python 库之一,它提供了许多功能和方法来执行有效的数据处理和数据分析. 我们平时的操作,大多围绕着数字的处理,这是因为大家习惯将表格数据与数字联系起来.然而 ...
- 【Python】相当全面的Pandas文本数据处理,干货多多
今天我们来谈论一下pandas库当中文本数据的操作,希望大家再看完本篇文章之后会有不少的收获,我们大致会讲 创建一个包含文本数据的DataFrame 常用处理文本数据的方法的总结 正则表达式与Data ...
- 100天精通Python(数据分析篇)——第71天:Pandas文本数据处理方法之str/object类型转换、大小写转换、文本对齐、获取长度、出现次数、编码
文章目录 1. 文本数据类型介绍 1)类型介绍 2)类型转换 3)类型区别 区别1:统计字符串时 区别2:检查字符串时 2. Python字符串内置方法 1) 大小写转换 2) 文本对齐 3)获取长度 ...
- 100天精通Python(数据分析篇)——第72天:Pandas文本数据处理方法之判断类型、去除空白字符、拆分和连接
文章目录 每篇前言 一.Python字符串内置方法 1. 判断类型 2. 去除空白字符 3. 拆分和连接 二.Pandas判断类型 1. str.isspace() 2. str.isalnum() ...
- 文本数据处理的终极指南-[NLP入门]
上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习 快速带你晋级 阅读全文 > 正文共10202个字,13张图,预计阅读时间26分钟. 简介 实现任何程度或者级别的 ...
- 数据导入与预处理-拓展-pandas时间数据处理01
数据导入与预处理-拓展-pandas时间数据处理01 Pandas时序数据系列博客 Pandas时间序列数据处理 1.好用的Python库 2.Pandas历史 3.时序数据处理 3.1 时序中的基本 ...
- Python小案例(一)非结构化文本数据处理
Python小案例(一)非结构化文本数据处理 日常业务需求中,仅凭SQL一招鲜是没法吃遍天的,这个时候就需要更为强大的Python进行支持了.这个系列主要分享一些Python小案例,都是根据笔者日常工 ...
- python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少
今天为大家带来的内容是:自从用了这招pandas 空数据处理方法,python编程速度提升了不少 文章内容主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工 ...
- Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介、具体案例、使用方法之详细攻略
Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介.具体案例.使用方法之详细攻略 目录 pandas中数据处理常用函数(isnull/dropna/fillna/ ...
最新文章
- eBook 功能模块二之设置模块
- ubuntu 14.04 mysql 5.7_ubuntu14.04 升级mysql到5.7版本
- 心得体悟帖---17、于迷茫低落处找到本心
- hdu 4358(莫队算法+dfs序列)
- DirectX11 With Windows SDK--17 利用几何着色器实现公告板效果
- 数据结构与算法 | 用队列实现栈
- 华为p6电信版 android 4.5,华为P6电信版系统应用apk补全教程 完整EMUI
- python日期转化成周数_[转]浅析使用python计算两个日期间隔天数﹑周数和指定若干天后对应的日期等...
- 请问投稿中要求上传的author_文章投稿如何做到时间管理?(二)
- lintcode:Number of Islands 岛屿的个数
- Ubuntu18.04 安装OpenCV
- Linux快速入门教程
- 单片机常用的14个C语言算法,看过的都成了大神!
- 思维导图学习---数据库相关基础思维导图(2)
- 【工业智能】天泽智云带你解读工业智能热门科技 – 大数据、工业互联网、云计算、边缘计算、CPS
- iai控制器服务器ON信号,IAI 直角坐标机械手 IAIssel控制器
- 黑马点评项目-UV 统计
- aid learning安装应用_Aid Learning
- Python爬虫(6):比Selenium快100倍的方法爬东方财富网财务报表
- MFC Windows程序设计学习笔记--文件和串行化
热门文章
- 吉林大学计算机应用软件,吉林大学计算机科学与技术学院
- 【活动】高效学习方法分享
- JDK的解压安装 - CentOS(结尾附视频)
- 路由器android-267d3f,这才是真的高级货玩意:NETGEAR EX7700 AC2200三频无线Mesh扩展器使用体验...
- SVN、CVS、VSS区别
- 安装Docker Desktop报错WSL 2 installation is incomplete.
- DLL load failed while importing _ssl: 找不到指定的模块
- 滚动穿透及IOS惯性滚动究极解决方案
- 为什么90%的程序员学编程都会从C语言开始?
- oracle从入门到精通(4)------运算符,分组查询,函数