有效清理資料在資料分析和操作中至關重要。一項常見的任務是透過刪除負值來清理資料,尤其是當它們被視為異常值或無效條目時。Python 中的 Pandas 庫 提供了幾種有效的方法來實現這一點。本文將提供三個例子,說明如何在 Pandas DataFrame 中刪除負值。
刪除 Pandas DataFrame 中的負值
在從 DataFrame 中刪除負值之前,我們首先需要找到它們,Pandas 透過其靈活的索引和選擇功能使檢索很好實現,找到負值後,可以從 DataFrame 中刪除負值。這可以透過應用布林掩碼來篩選掉包含負值的行或列來完成。有多種方法可以實現此目的,具體取決於是要刪除整行還是特定列。
以下是在 Pandas DataFrame 中刪除負值的幾個不同示例。
從單列中刪除負值
此方法使用布林索引來篩選出 Pandas DataFrame 中任何值為負數的行,確保生成的 DataFrame (df_filtered) 在“A”和“B”列中僅包含非負值。
import pandas as pd # Sample DataFrame data = {'A': [1, 2, -3, 4, -5], 'B': [5, -6, 7, 8, 9]} df = pd.DataFrame(data) # Method 1: Using boolean indexing df_filtered = df[df >= 0].dropna() print("DataFrame after dropping negative values:") print(df_filtered)
輸出:
DataFrame after dropping negative values: A B 0 1.0 5.0 3 4.0 8.0
刪除所有列中具有負值的行
透過將 lambda 函式與 applymap() 一起應用,此方法將 DataFrame 所有元素中的負值替換為 None,然後使用 dropna() 刪除包含任何 None 值的行,從而生成沒有負值的df_filtered。
import pandas as pd # Sample DataFrame data = {'A': [1, 2, -3, 4, -5], 'B': [5, -6, 7, 8, 9]} df = pd.DataFrame(data) # Method 2: Using applymap and dropna df_filtered = df.applymap(lambda x: x if x >= 0 else None).dropna() print("DataFrame after dropping negative values:") print(df_filtered)
刪除所有列中具有負值的行
使用 .ge() 和 .all(),此方法選擇列“A”和“B”中所有值均為非負值 (>= 0) 的行,從而有效地過濾掉具有任何負值的行,並生成僅具有非負行完好無損的行df_filtered。
import pandas as pd # Sample DataFrame data = {'A': [1, 2, -3, 4, -5], 'B': [5, -6, 7, 8, 9]} df = pd.DataFrame(data) # Method 3: Using all and dropna df_filtered = df[df.ge(0).all(1)] print("DataFrame after dropping rows with negative values:") print(df_filtered)
輸出:
DataFrame after dropping negative values: A B 0 1 5 3 4 8
結論
從 Pandas DataFrame 中刪除負值對於資料完整性和分析至關重要。透過使用這些方法,您可以有效地清理資料並專注於核心業務。