今天我们来谈论一下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

暂时就这些了,下一篇原创的文章安排在周天,非技术方面的,期待一下?

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群554839127,加入微信群请扫码:

【Python】相当全面的Pandas文本数据处理,干货多多相关推荐

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

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

  2. 20+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. 非常全面的Pandas入门教程

    pandas是基于NumPy的一种数据分析工具,在机器学习任务中,我们首先需要对数据进行清洗和编辑等工作,pandas库大大简化了我们的工作量,熟练并掌握pandas常规用法是正确构建机器学习模型的第 ...

  6. python处理时间序列_Python——Pandas 时间序列数据处理

    介绍 Pandas 是非常著名的开源数据处理库,我们可以通过它完成对数据集进行快速读取.转换.过滤.分析等一系列操作.同样,Pandas 已经被证明为是非常强大的用于处理时间序列数据的工具.本节将介绍 ...

  7. 全站最全面的Python 基础入门必备知识大全,学完即就业!【建议收藏仔细学习】

    前言: Python作为21世纪最火的编程语言,市面上各种学习视频层出不穷,关于Python的学习氛围也逐渐浓厚!!最近一段时间越来越多的知友们在私信我,希望我出一期python基础入门的内容,肝了N ...

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

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

  9. Python 数据分析三剑客之 Pandas(八):数据重塑、重复数据处理与数据替换

    CSDN 课程推荐:<迈向数据科学家:带你玩转Python数据分析>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python ...

最新文章

  1. 合肥工业大学—SQL Server数据库实验八:使用聚集函数的SELECT语句
  2. java 线程组和线程_Java多线程 线程组原理及实例详解
  3. 云服务商正在杀死开源商业模式
  4. DAY4-打卡第四天-2018-1-12
  5. 如果某一运行的服务在/var/lock/subsys
  6. vue 点击弹出文字_vue事件点击穿透解决大法,看这篇文章就够了
  7. 成功解决Both binary classification-only and multiclassification-only loss function or metrics specified
  8. Compiling Fortran
  9. 杭电60题--part 1 HDU1003 Max Sum(DP 动态规划)
  10. 程序员简单实用的桌面壁纸
  11. 41个机器学习面试题
  12. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)
  13. 解决MATLAB帮助文档打不开的情况
  14. LaTeX定义新命令
  15. ‘pom.xml‘ has syntax errors
  16. 原型工具——墨刀以及Axure的比较
  17. 同居mm_倾向于同居
  18. Visio 去交点处跨线
  19. 舞台机械-舞台灯光-上海腾享舞台灯光概述
  20. 秀一下大连TimesTen 18.1培训的结业证

热门文章

  1. ios绘图基本图形之线条
  2. EDP项目结构规范心得
  3. PHP编程最快明白 by www.kuphp.com 案例实战zencart1.38a支付模块简化Fast and Easy Checkout配置...
  4. IP通信基础 4月15日
  5. Android Cursor类的概念和用法
  6. BZOJ 3106 棋盘游戏
  7. 查看ORACLE 下所有信息
  8. html保存助手,HTML助手与HTML助手内
  9. 2021-11-14Iterator迭代器
  10. 三丰三坐标编程基本步骤_数控车床编程,经典实例教程