一、什麼是數據清洗
數據清洗是指對採集的數據進行去重、填充缺失值、異常值處理等數據預處理工作。清洗數據是數據分析的重要步驟,它可以提高數據的質量、準確性和完整性,為後續的數據分析提供更可靠的基礎。
二、數據清洗的重要性
1、提高數據質量:清洗數據可以去除重複數據、填充缺失值、處理異常數據等,提高數據的質量和準確性。
2、保證分析結果的準確性:如果在分析時使用了未經清洗的原始數據,則分析結果會因為存在重複、缺失和異常數據而受到影響,導致分析結果不準確,失去可信度。
3、節省時間和資源:通過清洗數據,可以避免在後續的分析過程中處理重複、缺失、異常數據所浪費的時間和精力,可以更快地得到可靠的分析結果。
三、數據清洗方法
1. 數據去重
def remove_dup(df): """ 去重函數 """ before = len(df) df.drop_duplicates(keep='first', inplace=True) after = len(df) print("原始數據中有{}條重複數據,已經成功刪除{}條重複數據".format(before-after, after)) # 例子: remove_dup(df)
通過pandas庫的drop_duplicates()方法,可以實現對數據的去重,keep參數可選first、last、False。如果是first,則保留第一個重複值,去除後面的重複值;如果是last,則保留最後一個重複值,去除前面的重複值;如果是False,則全部都判斷是重複值,並進行剔除。
2. 缺失值處理
def handle_missing(df): """ 缺失值處理函數:使用dropna方法剔除包含缺失值的記錄或者使用fillna補全缺失值。 """ df.dropna(inplace=True) # 直接放棄空數據行 # df.fillna(0, inplace=True) # 使用0填充空數據行 # df.fillna(method='pad', inplace=True) # 使用前一行的數據進行填充空數據行 # df.fillna(method='bfill', inplace=True) # 使用後一行的數據進行填充空數據行 # 例子: handle_missing(df)
通過pandas庫的dropna()方法,可以將包含缺失值的記錄直接刪除。如果數據中缺失值比較少,也可以使用fillna()方法將缺失值填充為0、前一行的數據、後一行的數據等。
3. 異常值處理
def handle_outliers(df): """ 異常值處理函數:使用3σ原則過濾異常值 """ before = len(df) mean = df['col'].mean() std = df['col'].std() df = df[(df['col'] > mean-3*std) & (df['col'] < mean+3*std)] # 將不在此區間的異常值直接剔除 after = len(df) print("原始數據中有{}條異常值,已經成功刪除{}條異常值".format(before-after, after)) # 例子: handle_outliers(df)
通過3σ原則過濾異常值,即取均值±3倍標準差的範圍作為正常數據的區間,不在此區間的數據直接認為是異常值,並進行剔除。
4. 數據轉換
def data_transform(df): """ 數據轉換函數:對數變換、歸一化、標準化等 """ # 對數變換 df['col'] = np.log(df['col']) # 歸一化 df['col'] = (df['col'] - df['col'].min()) / (df['col'].max() - df['col'].min()) # 標準化 df['col'] = (df['col'] - df['col'].mean()) / df['col'].std() # 例子: data_transform(df)
通過對數變換、歸一化、標準化等方法實現數據轉換,以便於後續的數據分析處理。
四、總結
數據清洗是數據分析過程中重要的步驟,可以提高數據質量、可靠性和準確性。在數據清洗過程中,需要對數據進行去重、缺失值處理、異常值處理和數據轉換等操作。通過靈活應用這些方法,可以得到更好的分析結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/186204.html