java零基础 刷脸支付 定义键盘快捷键 canvas Draggabilly Font Awesome pmp视频教程 pmp视频教程下载 网盘源码 change事件 grep不是内部命令 axure时间选择控件 plsql连接mysql idea全局替换 mysql插入 python正则表达式语法 python自学入门 java对象和类 java命令 java字符串操作 java字符比较 python游戏代码 qq免安装 办公室复印机使用方法 原创检测工具 刷新当前页面 pr旋转视频 谷歌浏览器xp版下载 cdr怎么填充颜色 gmail邮箱打不开 perl正则表达式 联想人脸识别 excel工作表下载 苹果手机怎么删除软件 安卓怎么绕过锁屏密码 wow显示伤害数字 ios状态栏 ae关键帧 cad打散命令 文字识别ocr
当前位置: 首页 > 学习教程  > 编程语言

Python数据分析 - 机器学习笔记:第一章数据分析 - 1.3.4.矢量化字符串

2020/9/19 14:47:03 文章标签:

前言:本文是学习网易微专业的《python全栈工程师》 中的《数据分析 - 机器学习工程师》专题的课程笔记,欢迎学习交流。

一、课程目标

  • 掌握矢量化字符串的常用方法

二、详情解读

2.1.矢量化

  • 将序列类对象转化为Series
    Seriesstr属性
    – 避免循环语句
    – 对字符串的处理能力更强
2.1.1.矢量化字符串

必要性:
将列表中字符串首字母大写

names = ['newton', 'hertz', 'curie']
[name.capitalize() for name in names]

运行结果:

但是,当列表中有缺失值None时,上述的方法将不再适用,下面的操作会报错:

names2 = ['newton', 'hertz', None, 'curie']
[name.capitalize() for name in names2]

在这里插入图片描述
解决方案:将列表转化为Series对象,即将其矢量化。

import pandas as pd

# 矢量化
snames = pd.Series(names2)
snames

运行结果:
在这里插入图片描述
使用Series对象的str属性进行操作,列表中的None不会影响到操作:

snames.str.capitalize()

运行结果:
在这里插入图片描述
说明:矢量化字符串在避免for循环的同时,序列中有缺失值的情况,执行也不会受影响。

2.1.2.python内置字符串方法与矢量化字符方法的比较
import numpy as np

# 字符串对象的所有属性和方法的名称列表
a = dir(str) 

# 矢量化字符串的所有属性和方法的名称列表
b = dir(snames.str)

# 去掉特殊属性和方法
da = [i for i in a if '_' not in i]
db = [i for i in b if '_' not i i]

# 两者共有的方法名称
share = np.intersect1d(da, db)
print(share)

运行结果:

在这里插入图片描述
示例:将列表中的字符串转化为小写

phy = ['issac newton', 'albert Einstein', 'Max Karl Planck', 'Wilhelm rontgen']
phy = pd.Series(phy)
phy.str.lower()

运行结果:
在这里插入图片描述

phy.str.len()

运行结果:
在这里插入图片描述

phy.str.split()

运行结果:
在这里插入图片描述

2.1.3.正则表达式检验邮箱格式:
phy_mail = pd.Series(['new@itdiffer.com', 'ein@itdiffer.com', 'pla@itdiffer.com', 'ron@itdiffer.com'], index=phy)
phy_mail['laoqi'] = np.NaN
phy_mail

运行结果:
在这里插入图片描述

email_str = '^[a-zA-Z0-9._%+]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$'
phy_mail.str.match(email_str)

运行结果:
在这里插入图片描述

2.1.4.当使用索引下标时,得到的不是样本,而是获取字符串中的字符:
# 获取所有样本的第二个字符
phy.str[2]
# 下面这种方法跟上面的一样
phy.str.get(2)

运行结果:
在这里插入图片描述
而原来的数据样本是这样的:
在这里插入图片描述
如果下标索引值超过了字符串的长度,则会返回NaN

phy.str[14]

运行结果:
在这里插入图片描述

2.1.5.矢量化字符串的切片:
# 方法一:
phy.str[:5]
# 方法二:
phy.str.slice(0, 5)

在这里插入图片描述

2.1.6.练习
df = pd.DataFrame(np.random.randn(3, 2),
				  columns=[' Column A ', ' Column B '],
				  index=range(3))
df

在这里插入图片描述
练习一:去掉特征中两侧的空格:

df.columns.str.strip()

在这里插入图片描述
练习二:将特征名称小写

df.columns.str.lower()

在这里插入图片描述
上面的操作都不影响原来DataFrame中的对象名称,如果想改变原来的名称,可以对名称重新赋值,如下操作:

df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_')

在这里插入图片描述

三、课程小结

  • 01 字符串矢量化方法

本文链接: http://www.dtmao.cc/news_show_200177.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?