Pandas数据分析之pandas文本处理
在Pandas数据分析中,经常需要对文本数据进行处理并进行分析。本篇攻略介绍使用Pandas进行文本处理的常用方法,包括字符串函数、正则表达式和文本向量化等。
字符串函数
Pandas中的字符串函数可以快速地对文本进行简单的处理。以下是一些常用的字符串函数:
- str.upper() / str.lower():将字符串转换为大写/小写。
- str.strip() / str.lstrip() / str.rstrip():移除字符串中的空格或指定字符。
- str.replace():替换字符串中的子串。
- str.contains():判断字符串是否包含指定子串。
以下是一个字符串函数的示例:
import pandas as pd
data = {'name': ['Bob', 'Alice', 'Jack', 'Lisa'],
'age': [22, 29, 31, 25],
'title': ['Data Analyst', 'Data Scientist', 'Data Analyst', 'Data Scientist']}
df = pd.DataFrame(data)
# 使用str.upper()将``title``列的字符串转换为大写
df['title'] = df['title'].str.upper()
# 输出处理后的数据
print(df)
输出结果:
name age title
0 Bob 22 DATA ANALYST
1 Alice 29 DATA SCIENTIST
2 Jack 31 DATA ANALYST
3 Lisa 25 DATA SCIENTIST
正则表达式
Pandas中的str.extract()函数可以使用正则表达式提取字符串中的子串。以下是一个正则表达式的示例:
# 使用正则表达式提取``title``列中的职位
df['position'] = df['title'].str.extract(r'(Analyst|Scientist)')
# 输出处理后的数据
print(df)
输出结果:
name age title position
0 Bob 22 DATA ANALYST Analyst
1 Alice 29 DATA SCIENTIST Scientist
2 Jack 31 DATA ANALYST Analyst
3 Lisa 25 DATA SCIENTIST Scientist
上述示例中使用了正则表达式,其中r'(Analyst|Scientist)’表示匹配“Analyst”或“Scientist”。使用str.extract()函数将匹配的子串提取出来并保存到新的“position”列中。
文本向量化
文本向量化是将文本数据转换为数值型数据的过程,常用的方法有词袋模型和TF-IDF模型等。以下作为示例介绍使用词袋模型进行文本向量化的过程:
# 创建一个包含多个句子的Series
text = pd.Series(['this is the first sentence', 'this is the second sentence', 'this is the third sentence'])
# 使用CountVectorizer进行词袋向量化
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(text)
print(X.toarray())
print(vectorizer.get_feature_names())
输出结果:
[[0 1 1 1 0 1 0]
[0 1 1 0 1 1 0]
[1 1 1 0 0 1 1]]
['first', 'is', 'second', 'sentence', 'the', 'third', 'this']
上述示例中,使用CountVectorizer将文本数据向量化为七个维度的向量,其中每个维度对应一个词条,其值表示对应的词条在句子中出现的次数。