• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python数据清洗系列之字符串处理详解

python数据清洗系列之字符串处理详解

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python字符串处理,python 字符串,python 字符串转数字,python 字符串截取,python 字符串拼接等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此。数据清洗的目的有两个,第一是通过清洗让数据可用。第二是让数据变的更适合进行后续的分析工作。换句话说就是有”脏”数据要洗,干净的数据也要洗。

在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力,因而了解字符处理对于数据分析而言,也是一项很重要的能力。

字符串处理方法

首先我们先了解下都有哪些基础方法

首先我们了解下字符串的拆分split方法

str='i like apple,i like bananer'
print(str.split(','))
</div>

对字符str用逗号进行拆分的结果:

['i like apple', 'i like bananer']

print(str.split(' '))
</div>

根据空格拆分的结果:

['i', 'like', 'apple,i', 'like', 'bananer']

print(str.index(','))
print(str.find(','))
</div>

两个查找结果都为:

12

找不到的情况下index返回错误,find返回-1

print(str.count('i'))
</div>

结果为:

4

connt用于统计目标字符串的频率

print(str.replace(',', ' ').split(' '))
</div>

结果为:

['i', 'like', 'apple', 'i', 'like', 'bananer']

这里replace把逗号替换为空格后,在用空格对字符串进行分割,刚好能把每个单词取出来。

除了常规的方法以外,更强大的字符处理工具费正则表达式莫属了。

正则表达式

在使用正则表达式前我们还要先了解下,正则表达式中的诸多方法。

下面我来看下个方法的使用,首先了解下match和search方法的区别

str = "Cats are smarter than dogs"
pattern=re.compile(r'(.*) are (.*?) .*')
result=re.match(pattern,str)

for i in range(len(result.groups())+1):
 print(result.group(i))
</div>

结果为:

Cats are smarter than dogs
Cats
smarter

这种形式的pettern匹配规则下,match和search方法的的返回结果是一样的

此时如果把pattern改为

pattern=re.compile(r'are (.*?) .*')
</div>

match则返回none,search返回结果为:

are smarter than dogs
smarter

接下来我们了解下其他方法的使用

str = "138-9592-5592 # number"
pattern=re.compile(r'#.*$')
number=re.sub(pattern,'',str)
print(number)
</div>

结果为:

138-9592-5592

以上是通过把#号后面的内容替换为空实现提取号码的目的。

我们还可以进一步对号码的横杆进行替换

print(re.sub(r'-*','',number))
</div>

结果为:

13895925592

我们还可以用find的方法把找到的字符串打印出来

str = "138-9592-5592 # number"
pattern=re.compile(r'5')
print(pattern.findall(str))
</div>

结果为:

['5', '5', '5']

正则表达式的整体内容比较多,需要我们对匹配的字符串的规则有足够的了解,下面是具体的匹配规则。

矢量化字符串函数

清理待分析的散乱数据时,常常需要做一些字符串规整化工作。

data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com',
 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'})
print(data)
</div>

结果为:

可以通过规整合的一些方法对数据做初步的判断,比如用contains 判断每个数据中是否含有关键词

print(data.str.contains('@'))
</div>

结果为:

也可以对字符串进行分拆,把需要的字符串提取出来

data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com',
     'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'})
pattern=re.compile(r'(\d*)@([a-z]+)\.([a-z]{2,4})')
result=data.str.match(pattern) #这里用fillall的方法也可以result=data.str.findall(pattern)
print(result)
</div>

结果为:

chen [(8622, xinlang, com)]
li [(120, qq, com)]
sun [(5243, gmail, com)]
wang [(5632, qq, com)]
zhao NaN
dtype: object

此时加入我们需要提取邮箱前面的名称

print(result.str.get(0))
</div>

结果为:

或者需要邮箱所属的域名

print(result.str.get(1))
</div>

结果为:

当然也可以用切片的方式进行提取,不过提取的数据准确性不高

data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com',
    'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'})
print(data.str[:6])
</div>

结果为:

最后我们了解下矢量化的字符串方法

总结

以上就是python数据清洗之字符串处理的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

</div>

您可能想查找下面的文章:

  • Python 专题三 字符串的基础知识
  • python 截取 取出一部分的字符串方法
  • Python实现字符串格式化的方法小结
  • python数据清洗系列之字符串处理详解
  • Python 基础知识之字符串处理
  • Python 基础知识之字符串处理
  • Python中字符串的修改及传参详解
  • python中异常报错处理方法汇总
  • 简单谈谈Python中的反转字符串问题
  • Python中字符串的处理技巧分享

相关文章

  • Python 中 list 的各项操作技巧
  • Python常用正则表达式符号浅析
  • Python类的动态修改的实例方法
  • python中while循环语句用法简单实例
  • python中的reduce内建函数使用方法指南
  • 给Python初学者的一些编程技巧
  • python3序列化与反序列化用法实例
  • Python实现子类调用父类的方法
  • 探索Python3.4中新引入的asyncio模块
  • python使用arp欺骗伪造网关的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 如何运行Python程序的方法
    • python网络编程示例(客户端与服务端)
    • python遍历文件夹并删除特定格式文件的示例
    • python实现telnet客户端的方法
    • Python实现截屏的函数
    • 利用numpy+matplotlib绘图的基本操作教程
    • python实现简单的TCP代理服务器
    • 使用tensorboard可视化loss和acc的实例
    • Python @property装饰器原理解析
    • Python程序语言快速上手教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有