Pandas数据分析之pandas文本处理

  • Post category:Python

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将文本数据向量化为七个维度的向量,其中每个维度对应一个词条,其值表示对应的词条在句子中出现的次数。