如何在給定的 Pandas DataFrame 中清洗字串資料?


Pandas 是一個用於資料分析和處理的 Python 庫。它提供了許多用於資料清洗和格式化的函式。

在這篇文章中,我們將學習如何在給定的 Pandas DataFrame 中清洗字串資料。我們將涵蓋以下主題:

  • 刪除開頭和結尾的空格

  • 替換特殊字元

  • 轉換為小寫

  • 刪除重複值

  • 將字串拆分為列

  • 合併列

  • 資料驗證

刪除開頭和結尾的空格

可以使用 `strip()` 方法刪除字串開頭和結尾的空格。

例如,以下程式碼將刪除“姓名”列的開頭和結尾空格:

程式碼

df['Name'] = df['Name'].str.strip()

替換特殊字元

可以使用 `replace()` 方法替換字串中的特殊字元。

例如,以下程式碼將用空字串替換“姓名”列中的逗號:

程式碼

df['Name'] = df['Name'].str.replace(',', '')

轉換為小寫

可以使用 `lower()` 方法將字串轉換為小寫。

例如,以下程式碼將“姓名”列轉換為小寫:

程式碼

df['Name'] = df['Name'].str.lower()

刪除重複值

可以使用 `drop_duplicates()` 方法刪除 DataFrame 中的重複值。

例如,以下程式碼將刪除“姓名”列中的重複值:

程式碼

df = df.drop_duplicates('Name')

將字串拆分為列

可以使用 `split()` 方法將字串拆分為列。

例如,以下程式碼將“姓名”列拆分為兩列,“名”和“姓”:

程式碼

df[['First Name', 'Last Name']] = df['Name'].str.split(' ', expand=True)

合併列

可以使用 `merge()` 方法將兩列合併為一列。

例如,以下程式碼將“名”和“姓”列合併為單個“姓名”列:

程式碼

df['Name'] = df['First Name'] + ' ' + df['Last Name']

資料驗證

可以使用 `isna()` 方法檢查值是否缺失。

例如,以下程式碼將檢查“年齡”列中是否有任何缺失值:

程式碼

df['Age'].isna().any()

可以使用 `fillna()` 方法用預設值填充缺失值。

例如,以下程式碼將用值 0 填充“年齡”列中的缺失值:

程式碼

df['Age'].fillna(0, inplace=True)

現在讓我們考慮一個程式碼示例,我們將使用上面提到的所有方法。

請參考以下程式碼。

示例

import pandas as pd

# Step 1: Import the necessary modules

# Step 2: Load the DataFrame with string data
data = {'Name': [' John Doe ', 'Jane Smith', ' Mary Johnson '],
        'Email': ['john@example.com', 'jane@example.com', 'mary@example.com'],
        'Phone': ['123-456-7890', '555-123-4567', ''],
        'Address': ['New York', 'Los Angeles', None]}

df = pd.DataFrame(data)

# Step 3: Identify and handle missing values
df['Address'] = df['Address'].fillna('Unknown')

# Step 4: Apply string cleaning operations
df['Name'] = df['Name'].str.strip()
df['Name'] = df['Name'].str.lower()
df['Phone'] = df['Phone'].str.replace('-', '')
df['Email'] = df['Email'].str.split('@').str[1]

# Step 5: Verify the cleaned data
print(df)

解釋

  • 我們首先將 pandas 模組匯入為 pd,它提供了強大的資料操作功能。

  • 在這個例子中,我們建立一個包含字串資料的 DataFrame df。每一列代表不同的屬性,例如姓名、電子郵件、電話和地址。

  • 我們使用 `fillna()` 方法將“地址”列中的 None 值替換為字串“未知”,從而處理缺失值。

  • 然後使用各種字串方法將字串清洗操作應用於特定列。

    • `str.strip()` 刪除“姓名”列的開頭和結尾空格。

    • `str.lower()` 將“姓名”列的值轉換為小寫。

    • `str.replace('-', '')` 刪除“電話”列中的連字元。

    • `str.split('@').str[1]` 在“電子郵件”列的值中以“@”符號分割,並檢索第二部分(域名)。

輸出

           Name        Email       Phone      Address
0      john doe  example.com  1234567890     New York
1    jane smith  example.com  5551234567  Los Angeles
2    mary johnson  example.com                  Unknown

結論

總之,清洗 Pandas DataFrame 中的字串資料是資料預處理和分析中一個重要的步驟。本文提供了一個全面的指南,逐步講解了字串資料清洗過程,並附帶程式碼示例、解釋和示例輸出。

我們首先了解了清洗字串資料的重要性以及涉及的常見任務,例如刪除空格、處理缺失值和轉換資料格式。然後,我們演示瞭如何將這些清洗操作應用於 Pandas DataFrame。

更新於:2023年8月7日

1K+ 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告