IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Pandas数据分析:文本数据分析 -> 正文阅读

[Python知识库]Pandas数据分析:文本数据分析

文本数据是我们经常分析的数据,但是,文本通常不会以良好和清洁的格式出现,并且需要进行许多预处理。 Pandas提供许多函数来修改和处理字符串数据。 在进行字符串操作之前,最好先了解一下Pandas如何处理字符串数据类型。

Object vs String

在Pandas 1.0版本之前,仅使用“Object”数据类型来存储字符串,但是有时候会导致一些问题,因为也可以使用“Object”数据类型存储非字符串数据。 Pandas1.0以后版本引入了一个特定于字符串数据的新数据类型,它是StringDType。 目前,我们仍然可以使用Object或StringDType来存储字符串,但在将来,我们可能需要只需要使用StringDType。

这里要注意的一个重要事项是Object数据类型仍然是字符串的默认数据类型。 要使用StringDType,我们需要明确说明。

我们可以将“string”或pd.stringdtype()参数传递给dtype参数以选择字符串数据类型。

代码示例使用jupyter lab。

输入:

a = pd.Series(['a', 'b', 'c'])
a

输出:

0    a
1    b
2    c
dtype: object

输入:

a = pd.Series(['a', 'b', 'c'], dtype = 'string')
a

输出:

0    a
1    b
2    c
dtype: string

输入:

a = pd.Series(['a', 'b', 'c'], dtype = pd.StringDtype())
a

输出:

0    a
1    b
2    c
dtype: string

还有一种方法将数据转换成string类型,即使用astype函数。

a = pd.Series(['a', 'b', 'c'])
a
0    a
1    b
2    c
dtype: object
a.astype('string')
0    a
1    b
2    c
dtype: string

字符串处理方法

大小写转换

在处理英文字符串时,首先想到的是如何处理小写和大写字母,对于计算机来说A和a的区别就像A和k或其他任何字符的区别一样。

upper() 和lower()方法可以用来解决这个问题。
输入

a = pd.Series(['tom', 'jack', 'john'])
a.str.upper()

输出

0     TOM
1    JACK
2    JOHN
dtype: object

输入

a = pd.Series(['tom', 'jack', 'john'])
a.str.lower()

输出

0     tom
1    jack
2    john
dtype: object

Strip方法

如果字符串的开头或结尾有空格,我们应该修剪字符串以消除空格。strip()方法可用于执行此任务:
输入

a = pd.Series(['tom       ', 'jack      ', '     john'])
a

输出


0    tom       
1    jack      
2          john
dtype: object

输入

a.str.strip(' ')

输出

0     tom
1    jack
2    john
dtype: object

还有lstrip和rstrip方法分别删除前后的空格。

Split方法

有时字符串携带多条信息,为了利用不同类型的信息,我们需要拆分字符串。使用的方法就是split()方法。
只需要将用来分隔的符号传递给split方法即可得到结果,默认参数是空格字符。
输入

a = pd.Series(['tom,jack', 'jack,john', 'john,tom'])

输入

a

输出

0     tom,jack
1    jack,john
2     john,tom
dtype: object

输入

a.str.split(',')

输出

0     [tom, jack]
1    [jack, john]
2     [john, tom]
dtype: object

字符串被拆分,新元素被记录在一个列表中。可以使用[]或通过传递索引的get方法访问列表中的元素。
输入

a.str.split(',').str[0]

输出

0     tom
1    jack
2    john
dtype: object

输入

a.str.split(',').str.get(0)

输出

0     tom
1    jack
2    john
dtype: object

我们还可以在分离后与新元素创建DataFrame, expand参数设置为True以创建DataFrame。
输入

a = pd.Series(['tom,jack', 'jack,john,tom', 'john,tom'])
a.str.split(',', expand=True)

输出

	  0	     1 	     2
0	tom	    jack	None
1	jack	john	tom
2	john	tom	    None

如果一行没有足够的元素来匹配其他行,则单元格将填充为“None”,我们还可以限制拆分的数量,默认情况下,拆分从左开始,但如果要从右开始,则应使用rsplit。
输入

a = pd.Series(['tom,jack', 'jack,john,tom', 'john,tom'])
a.str.split(',', expand=True, n=1)

输出


     0	     1
0	tom	    jack
1	jack	john,tom
2	john	tom
a = pd.Series(['tom,jack', 'jack,john,tom', 'john,tom'])
a.str.rsplit(',', expand=True, n=1)

输出


     0	         1
0	tom	        jack
1	jack,john	tom
2	john	    tom

Cat方法

正如我们在某些情况下需要拆分字符串一样,我们可能需要合并或连接字符串。cat方法用于连接字符串。
我们需要使用 sep 参数在连接的字符串之间传递一个参数。默认情况下,cat 忽略缺失值,但是我们也可以使用 na _ rep 参数指定如何处理它们。
输入


a = pd.Series(['tom', 'jack',np.nan, 'john'])
a

输出

0     tom
1    jack
2     NaN
3    john
dtype: object

输入

a.str.cat(sep=',')

输出

'tom,jack,john'

输入

a.str.cat(sep=',', na_rep='?')

输出

'tom,jack,?,john'

我们还可以进行元素级连接(即向序列中的每个字符串添加一个字符串):
输入

a = pd.Series(['a', 'b', 'a', 'c'])
a.str.cat(['+', '+', '-', "-" ])

输出

0    a+
1    b+
2    a-
3    c-
dtype: object

假设字符串从左到右索引,我们可以使用str[]访问每个索引。
代码示例:
输入

a = pd.Series(['a', 'bc', 'ad', 'c'])
a.str[0]

输出

0    a
1    b
2    a
3    c
dtype: object

输入

a.str[1]

输出

0    NaN
1      c
2      d
3    NaN
dtype: object

如果字符串没有指定的索引,则返回NaN。

Startswith and endswith方法

我们可以分别使用 startswith 和 endswith 根据字符串的开头和结尾来进行布尔索引。
输入

a = pd.Series(['a', 'bc', 'ad', 'c'])
a.str.startswith('a')

输出

0     True
1    False
2     True
3    False
dtype: bool

输入

a = pd.Series(['a', 'bc', 'ad', 'c'])
a.str.endswith('a')

输出

0     True
1    False
2    False
3    False
dtype: bool

Get dummies方法

我们可以从系列中提取虚拟变量。 在编码分类变量时特别有用。
输入

a = pd.Series(['a', 'b', 'c', 'd'])
a.str.get_dummies()

输出

	a	b	c	d
0	1	0	0	0
1	0	1	0	0
2	0	0	1	0
3	0	0	0	1

在机器学习模型中输入分类变量需要这种表示。
如果一个字符串包含多个值,我们可以首先使用sep参数进行拆分和编码:
输入

a = pd.Series(['a,e', 'b,f', 'c', 'd'])
a.str.get_dummies(sep=',')

输出

	a	b	c	d	e	f
0	1	0	0	0	1	0
1	0	1	0	0	0	1
2	0	0	1	0	0	0
3	0	0	0	1	0	0

Len方法

在某些情况下,我们需要Dataframe的column或Series列中的字符串的长度。 要获得每个字符串的长度,我们可以应用len方法。 请记住,len也用于获得Series或DataFrame的长度。 代码示例如下:
输入

a = pd.Series(['abc', 'bcdef', 'cd', 'de'])
a.str.len()

输出

0    3
1    5
2    2
3    2
dtype: int64

Pandas String操作不限于我们在此介绍的内容,但我们所讨论的功能和方法肯定有助于处理字符串数据和加快数据清洁和准备过程。在后续会进一步更新pandas的字符串数据处理的内容。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 22:58:57  更:2021-07-22 22:59:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 1:56:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码