如何在給定的 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。