今天我们来谈论一下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文本数据处理,干货多多相关推荐

  1. 经常被人忽视的:Pandas 文本数据处理!

    毋庸置疑,Pandas是使用最广泛的 Python 库之一,它提供了许多功能和方法来执行有效的数据处理和数据分析. 我们平时的操作,大多围绕着数字的处理,这是因为大家习惯将表格数据与数字联系起来.然而 ...

  2. 【Python】相当全面的Pandas文本数据处理,干货多多

    今天我们来谈论一下pandas库当中文本数据的操作,希望大家再看完本篇文章之后会有不少的收获,我们大致会讲 创建一个包含文本数据的DataFrame 常用处理文本数据的方法的总结 正则表达式与Data ...

  3. 100天精通Python(数据分析篇)——第71天:Pandas文本数据处理方法之str/object类型转换、大小写转换、文本对齐、获取长度、出现次数、编码

    文章目录 1. 文本数据类型介绍 1)类型介绍 2)类型转换 3)类型区别 区别1:统计字符串时 区别2:检查字符串时 2. Python字符串内置方法 1) 大小写转换 2) 文本对齐 3)获取长度 ...

  4. 100天精通Python(数据分析篇)——第72天:Pandas文本数据处理方法之判断类型、去除空白字符、拆分和连接

    文章目录 每篇前言 一.Python字符串内置方法 1. 判断类型 2. 去除空白字符 3. 拆分和连接 二.Pandas判断类型 1. str.isspace() 2. str.isalnum() ...

  5. 文本数据处理的终极指南-[NLP入门]

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共10202个字,13张图,预计阅读时间26分钟. 简介 实现任何程度或者级别的 ...

  6. 数据导入与预处理-拓展-pandas时间数据处理01

    数据导入与预处理-拓展-pandas时间数据处理01 Pandas时序数据系列博客 Pandas时间序列数据处理 1.好用的Python库 2.Pandas历史 3.时序数据处理 3.1 时序中的基本 ...

  7. Python小案例(一)非结构化文本数据处理

    Python小案例(一)非结构化文本数据处理 日常业务需求中,仅凭SQL一招鲜是没法吃遍天的,这个时候就需要更为强大的Python进行支持了.这个系列主要分享一些Python小案例,都是根据笔者日常工 ...

  8. python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少

    今天为大家带来的内容是:自从用了这招pandas 空数据处理方法,python编程速度提升了不少 文章内容主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工 ...

  9. Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介、具体案例、使用方法之详细攻略

    Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介.具体案例.使用方法之详细攻略 目录 pandas中数据处理常用函数(isnull/dropna/fillna/ ...

最新文章

  1. eBook 功能模块二之设置模块
  2. ubuntu 14.04 mysql 5.7_ubuntu14.04 升级mysql到5.7版本
  3. 心得体悟帖---17、于迷茫低落处找到本心
  4. hdu 4358(莫队算法+dfs序列)
  5. DirectX11 With Windows SDK--17 利用几何着色器实现公告板效果
  6. 数据结构与算法 | 用队列实现栈
  7. 华为p6电信版 android 4.5,华为P6电信版系统应用apk补全教程 完整EMUI
  8. python日期转化成周数_[转]浅析使用python计算两个日期间隔天数﹑周数和指定若干天后对应的日期等...
  9. 请问投稿中要求上传的author_文章投稿如何做到时间管理?(二)
  10. lintcode:Number of Islands 岛屿的个数
  11. Ubuntu18.04 安装OpenCV
  12. Linux快速入门教程
  13. 单片机常用的14个C语言算法,看过的都成了大神!
  14. 思维导图学习---数据库相关基础思维导图(2)
  15. 【工业智能】天泽智云带你解读工业智能热门科技 – 大数据、工业互联网、云计算、边缘计算、CPS
  16. iai控制器服务器ON信号,IAI 直角坐标机械手 IAIssel控制器
  17. 黑马点评项目-UV 统计
  18. aid learning安装应用_Aid Learning
  19. Python爬虫(6):比Selenium快100倍的方法爬东方财富网财务报表
  20. MFC Windows程序设计学习笔记--文件和串行化

热门文章

  1. 吉林大学计算机应用软件,吉林大学计算机科学与技术学院
  2. 【活动】高效学习方法分享
  3. JDK的解压安装 - CentOS(结尾附视频)
  4. 路由器android-267d3f,这才是真的高级货玩意:NETGEAR EX7700 AC2200三频无线Mesh扩展器使用体验...
  5. SVN、CVS、VSS区别
  6. 安装Docker Desktop报错WSL 2 installation is incomplete.
  7. DLL load failed while importing _ssl: 找不到指定的模块
  8. 滚动穿透及IOS惯性滚动究极解决方案
  9. 为什么90%的程序员学编程都会从C语言开始?
  10. oracle从入门到精通(4)------运算符,分组查询,函数