前言
在數據分析和處理過程中,經常會遇到數據缺失的情況,這時候就需要使用dropna方法來刪除缺失值。
dropna函數的基本用法
dropna函數用於刪除缺失值。我們可以在調用dropna函數時指定刪除缺失值的條件。
import pandas as pd # 構造含有缺失值的DataFrame df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, 12]}) # 刪除df中含有缺失值的行或列 df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
- axis:指示刪除缺失值的對象(行或列),默認值為0(即刪除行);
- how:指示刪除缺失值的方式,’any’表示只要存在缺失值就刪除,’all’表示只有該行或列全部為缺失值時才刪除。
- thresh:在刪除前,需要保留的缺失值個數的閾值,如果該行或列的缺失值數目超過了閾值,才進行刪除操作。
- subset:在刪除行時,只考慮特定的列(即子集)是否有缺失值。
- inplace:如果為True,則直接修改目標DataFrame對象;如果為False,則返回新的修改後DataFrame對象。
dropna函數的進階用法
刪除指定列包含的缺失值
有時候,我們只想要刪除特定列(例如,只刪除salary列中存在的缺失值),可以使用subset參數指定要考慮的列。
# 構造含有缺失值的DataFrame df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'], 'salary': [1200.0, np.nan, np.nan, 1500.0]}) # 刪除salary列中的缺失值 df.dropna(subset=['salary'])
根據指定條件刪除缺失值
有時候,我們需要根據特定的規則刪除缺失值,例如刪除age列中缺失值的行,但是又不想刪除全部缺失值的行。
# 構造含有缺失值的DataFrame df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [20, np.nan, 25, np.nan]}) # 刪除age列中的缺失值 df.dropna(subset=['age'], how='any')
橫向刪除缺失值
有時候,我們希望刪除具有缺失值的列。
# 構造含有缺失值的DataFrame df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'], 'salary': [1200.0, np.nan, np.nan, 1500.0], 'age': [20, np.nan, 25, np.nan]}) # 刪除salary、age列中的缺失值 df.dropna(axis=1, how='any', thresh=None, subset=None, inplace=False)
缺失值填充
有時候,刪除缺失值不是最完美的解決方案,我們需要用其他值來代替缺失值。
# 構造含有缺失值的DataFrame df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'], 'salary': [1200.0, np.nan, np.nan, 1500.0]}) # 用0代替salary列中的缺失值 df['salary'].fillna(0, inplace=True)
總結
Python中的dropna函數提供了非常便利的方法來處理含有缺失值的數據。我們可以根據不同的需求制定相應的刪除策略,甚至可以用其他值來代替缺失值,使數據分析和處理更加高效精準。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/293641.html