天天看點

用于文本資料分析的 Pandas:使用 str 通路器清理和操作文本資料

作者:啟辰8

文本資料是資料分析和機器學習中最常用的資料類型之一。 然而,文本資料往往是雜亂無章的,需要清洗和預處理才能被有效分析。 Pandas 是一個強大的 Python 資料分析庫,它提供了一個友善的 str 通路器來幫助您清理和操作文本資料。

Pandas 中的 str 通路器提供了許多有用的字元串操作,可以應用于 Pandas 系列的每個元素。 這些操作包括字元串拆分、連接配接、替換等。 在這裡,我們将了解一些最有用的 str 操作,它們可以幫助您清理和操作文本資料。

讓我們從使用文本資料建立示例資料框開始:

import pandas as pd

data = {"text_column": ["this is a text", "an example", "of text data", "in pandas"]}
df = pd.DataFrame(data)
print(df)           

輸出

text_column
0  this is a text
1      an example
2     of text data
3        in pandas           

1.小寫轉換

有時,文本資料可能包含混合大小寫字元,這會導緻難以分析和比較。 str 通路器提供了一個 lower() 方法來将所有字元轉換為小寫。

df["text_column"] = df["text_column"].str.lower()
print(df)           

輸出

text_column
0  this is a text
1      an example
2     of text data
3        in pandas           

2. strip方法

文本資料可能包含不需要的字元,如空格、制表符或換行符。 str 通路器提供了 strip() 方法來從系列中每個字元串的開頭和結尾删除這些字元。

df["text_column"] = df["text_column"].str.strip()
print(df)           

輸出:

text_column
0  this is a text
1      an example
2     of text data
3        in pandas           

3.替代法

str 通路器還提供了一種 replace() 方法,用于在系列的每個元素中用一個字元串替換另一個字元串。 當您想要替換文本資料中的特定單詞或字元時,這很有用。

df["text_column"] = df["text_column"].str.replace("text", "string")
print(df)           

輸出:

text_column
0  this is a string
1      an example
2     of string data
3        in pandas           

4.另一個重要的函數是extract()

此功能可用于從文本中提取特定模式。 extract() 函數将正規表達式模式作為參數,并傳回一個或多個比對項作為新的 DataFrame 列。 讓我們看一個例子:

import pandas as pd

#建立示例 DataFrame
df = pd.DataFrame({'text': ['I love cats!', 'Dogs are the best', 'I love dogs and cats']})
# 使用 extract() 函數提取“love”這個詞
df['love'] = df['text'].str.extract(r'(\w+)\s(\w+)')
# Check the DataFrame
print(df)           

這将産生以下輸出:

text   love
0     I love cats!  love
1   Dogs are the best   NaN
2  I love dogs and cats  love           

5.另一個有用的函數是split()

此函數可用于根據指定的分隔符将文本拆分為多個部分。 split() 函數傳回從原始文本中拆分出來的子字元串清單。 讓我們看一個例子:

import pandas as pd

#建立示例 DataFrame
df = pd.DataFrame({'text': ['I love cats!', 'Dogs are the best', 'I love dogs and cats']})
# 使用 split() 函數将文本拆分為單詞
df['text'] = df['text'].str.split()
# Check the DataFrame
print(df           

這将産生以下輸出:

text
0    [I, love, cats!]
1  [Dogs, are, the, best]
2  [I, love, dogs, and, cats]           

如您所見,split() 函數已将文本拆分為單詞并傳回子字元串清單。

6.去除标點符号和特殊字元

在文本資料中,我們經常會有很多與分析無關的标點符号和特殊字元。 要删除它們,我們可以使用 str.translate() 方法和 str.maketrans() 方法。

import string

#建立特殊字元和标點符号到 None 的映射
translator = str.maketrans("", "", string.punctuation)
# 将翻譯器應用于文本列
df["text"] = df["text"].str.translate(translator)           

7.删除停用詞

停用詞是對文本意義不大的常用詞,通常會被删除以簡化分析。 要删除停用詞,我們可以使用 nltk 庫。

import nltk
from nltk.corpus import stopwords

# 下載下傳停用詞語料庫
nltk.download("stopwords")
# 擷取停用詞清單
stop_words = set(stopwords.words("english"))
# 從文本列中删除停用詞
df["text"] = df["text"].apply(lambda x: " ".join([word for word in x.split() if word not in stop_words]))           

8. 對文本進行詞幹化或詞形還原

詞幹提取和詞形還原是兩種重要的 NLP 技術,用于将單詞簡化為基本形式。 它們有助于簡化文本資料并使其更易于分析。

詞幹提取是将單詞簡化為基本形式或詞根形式的過程。 它涉及删除詞的字尾或詞尾以得到詞根。 例如,“running”、“runner”和“ran”都使用詞幹提取法簡化為詞根形式“run”。

另一方面,詞形還原是使用基于字典的方法将單詞簡化為基本形式的過程。 與詞幹提取不同,詞形還原考慮單詞的上下文并将它們映射到最有意義的基本形式。 例如,“running”将簡化為“run”,“is”将簡化為“be”。

詞幹提取和詞形還原都有各自的優點和缺點,它們之間的選擇取決于用例。 詞幹化更快更簡單,但詞形還原更準确并産生更有意義的基本形式。

要在 Pandas 中對文本進行詞幹化或詞形還原,我們可以使用 nltk 庫。 以下是如何使用 nltk 執行詞幹提取的示例:

import nltk
from nltk.stem import PorterStemmer

# 初始化詞幹分析器
stemmer = PorterStemmer()
# 定義一個函數來阻止文本
def stem_text(text):
    return ' '.join([stemmer.stem(word) for word in text.split()])
# 将詞幹提取功能應用于文本列
df['text_stemmed'] = df['text'].apply(stem_text)           

以下是如何使用 nltk 執行詞形還原的示例:

import nltk
from nltk.stem import WordNetLemmatizer

#初始化詞形還原器
lemmatizer = WordNetLemmatizer()
# 定義一個函數來對文本進行詞形還原
def lemmatize_text(text):
    return ' '.join([lemmatizer.lemmatize(word) for word in text.split()])
# 将詞形還原函數應用于文本列
df['text_lemmatized'] = df['text'].apply(lemmatize_text)           

在這兩種情況下,詞幹化或詞形化的文本都存儲在資料框中的新列中。 這個新列可用于進一步分析或模組化。

繼續閱讀