让你一文弄懂Pandas文本数据处理
简介
文本数据处理是数据分析的重要环节之一,Pandas作为Python数据分析领域的重磅利器,也提供了丰富的文本数据处理功能。本文将介绍Pandas如何处理文本数据,主要包括以下内容:
- 熟悉Pandas的字符串数据结构
- 文本数据清洗
- 文本数据分割
- 文本数据合并
- 文本数据替换
- 更多文本数据处理技巧
熟悉Pandas的字符串数据结构
Pandas提供了Series和DataFrame两种字符串数据结构:
- Series: 序列类型,用于存放一维字符串数据
```python
import pandas as pd
s = pd.Series(['A','B','C','D'])
print(s)
# 输出
0 A
1 B
2 C
3 D
dtype: object
```
- DataFrame: 数据表类型,用于存放二维字符串数据
```python
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
print(df)
# 输出
name age
0 Alice 25
1 Bob 30
2 Charlie 35
3 David 40
```
Pandas的字符串数据结构也支持基本的索引、切片、查找等操作。
文本数据清洗
文本数据中常常包含不必要的字符,需要进行清洗操作。
import pandas as pd
data = pd.Series(['apple','or ange','banana'])
data = data.str.strip() # 去除字符串两端的空格
data = data.str.lower() # 将字符串转换为小写
data = data.str.replace('or','or') # 将字符串"or"改为"orange"
print(data)
# 输出
0 apple
1 orange
2 banana
dtype: object
文本数据分割
文本数据分割是文本数据处理的常见操作,Pandas提供了字符串的split方法,可以将字符串分割成多个部分。
import pandas as pd
data = pd.Series(['1,2,3','4,5,6','7,8,9'])
data = data.str.split(',') # 将字符串按","进行分割
print(data)
# 输出
0 [1, 2, 3]
1 [4, 5, 6]
2 [7, 8, 9]
dtype: object
此时的data是一个Series类型的对象,其中每个元素是一个列表。
文本数据合并
Pandas提供了字符串的join方法,可以将多个字符串合并成一个字符串。
import pandas as pd
data = pd.Series(['apple','orange','banana'])
data = data.str.cat(sep='-') # 将字符串用"-"进行连接
print(data)
# 输出
'apple-orange-banana'
文本数据替换
Pandas提供了字符串的replace方法,可以用新的字符串替换旧的字符串。
import pandas as pd
data = pd.Series(['apple','orange','banana'])
data = data.str.replace('a','@') # 将所有'a'替换为'@'
print(data)
# 输出
0 @pple
1 or@nge
2 b@n@n@
dtype: object
更多文本数据处理技巧
除了以上介绍的常见文本数据处理操作,Pandas还提供了一些高级文本数据处理技巧,如正则表达式匹配、文本数据聚合统计等。
正则表达式匹配
Pandas提供了字符串的contains、match、extract方法,可以用正则表达式匹配字符串。
import pandas as pd
data = pd.Series(['apple','banana','orange'])
result = data.str.contains('a|o') # 判断是否包含'a'或'o'字符
print(result)
result = data.str.match('a|b') # 判断字符串是否以'a'或'b'字符开头
print(result)
result = data.str.extract('(\w+)\s+(\w+)') # 从字符串中提取两个单词
print(result)
# 输出
0 True
1 True
2 False
dtype: bool
0 True
1 True
2 False
dtype: bool
0 1
0 apple None
1 banana None
2 orange None
文本数据聚合统计
Pandas提供了字符串的count、len、findall、groupby等方法,可以进行文本数据聚合统计。
import pandas as pd
data = pd.Series(['apple','orange','banana','apple','orange'])
result = data.str.count(r'a') # 统计'a'字符的数量
print(result)
result = data.str.len() # 统计字符串长度
print(result)
result = data.str.findall(r'or') # 查找所有包含'or'的子串
print(result)
result = data.groupby(data).size() # 按字符串分组并统计出现次数
print(result)
# 输出
0 1
1 1
2 0
3 1
4 1
dtype: int64
0 5
1 6
2 6
3 5
4 6
dtype: int64
0 []
1 [or]
2 []
3 []
4 [or]
dtype: object
apple 2
banana 1
orange 2
dtype: int64
示例说明
示例一
假如我们有一个包含多条短信内容的数据集,现在我们想要从中提取出所有的验证码,该如何处理呢?
import pandas as pd
data = pd.Series(['尊敬的用户,您的验证码是123456,请勿泄露。','您的验证码是666888,感谢您使用本服务。'])
result = data.str.extract('(\d+)', expand=False) # 从字符串中提取所有数字并合并
print(result)
# 输出
0 123456
1 666888
dtype: object
示例二
假如我们有一个包含多个单词的字符串,现在我们想要将其中的单词首字母大写并用空格连接,该如何处理呢?
import pandas as pd
data = pd.Series(['pandas', 'python', 'data', 'analysis'])
result = data.str.capitalize().str.cat(sep=' ') # 首字母大写并用空格连接字符串
print(result)
# 输出
'Pandas Python Data Analysis'
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:让你一文弄懂Pandas文本数据处理 - Python技术站