柚子快報邀請碼778899分享:pandas處理NaN值的方法
????????處理數(shù)據(jù)集中的 NaN 值時,可以采用多種填充方法,具體選擇方法取決于數(shù)據(jù)的性質(zhì)、缺失值的分布和業(yè)務需求。以下是一些常見的填充方法:?
一、均值/中位數(shù)/眾數(shù)填充
????????對于數(shù)值型變量,可以使用該列的均值、中位數(shù)或眾數(shù)進行填充。這是最簡單的填充方法之一,適用于數(shù)據(jù)分布比較均勻的情況。
????1. 均值填充
對于數(shù)值型變量,可以使用均值進行填充。
# 導入 pandas 庫 import pandas as pd
# 創(chuàng)建示例數(shù)據(jù)集 data = {'Age': [25, 30, 35, None, 40], ? ? ? ? 'Income': [50000, None, 60000, 55000, 70000]}
df = pd.DataFrame(data)
# 使用均值填充 Age 列的 NaN 值 df['Age'].fillna(df['Age'].mean(), inplace=True)
# 結(jié)果 print(df)
????2. 眾數(shù)填充
對于類別型變量,可以使用眾數(shù)進行填充。
# 創(chuàng)建示例數(shù)據(jù)集 data = {'Gender': ['Male', 'Female', None, 'Male', 'Male']}
df = pd.DataFrame(data)
# 使用眾數(shù)填充 Gender 列的 NaN 值 df['Gender'].fillna(df['Gender'].mode()[0], inplace=True)
# 結(jié)果 print(df)
二、前向/后向填充
????????對于時間序列數(shù)據(jù),可以使用前一個時間點或后一個時間點的觀察值填充。
# 創(chuàng)建示例時間序列數(shù)據(jù)集 data = {'Date': ['2023-01-01', '2023-01-02', None, '2023-01-04', '2023-01-05'], ? ? ? ? 'Value': [10, None, 20, None, 30]}
df = pd.DataFrame(data)
# 使用前一個時間點的觀察值填充 Value 列的 NaN 值 df['Value'].fillna(method='ffill', inplace=True)
# 結(jié)果 print(df)
?三、?插值填充
????????插值是通過已知數(shù)據(jù)點之間的關系來估計缺失值??梢允褂镁€性插值、多項式插值等方法。
# 使用線性插值填充 df['column_name'].interpolate(method='linear', inplace=True)?
四、常數(shù)填充
????????可以用特定的常數(shù)值填充缺失值,例如零或者其他合適的其他常數(shù)值。
# 使用零填充 df['column_name'].fillna(0, inplace=True)?
五、基于條件的填充
????????可以根據(jù)其他列的值或數(shù)據(jù)集的特定條件來填充缺失值。
# 根據(jù)其他列的值進行填充 df['column_name'].fillna(df['another_column'].mean(), inplace=True)?
六、自定義填充方法
????????自定義設計一些自定義的填充策略,例如使用某個模型進行預測填充等。
# 創(chuàng)建示例數(shù)據(jù)集 data = {'Feature1': [1, 2, 3, None, 5], ? ? ? ? 'Feature2': [10, None, 30, 40, 50]}
df = pd.DataFrame(data)
# 自定義填充方法:使用 Feature1 的均值填充 Feature2 mean_value = df['Feature1'].mean() df['Feature2'].fillna(mean_value, inplace=True)
# 結(jié)果 print(df)
柚子快報邀請碼778899分享:pandas處理NaN值的方法
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。