前言
繼續(xù)詳細(xì)介紹缺失值處理羹饰、異常值檢測、數(shù)據(jù)一致性處理碳却。這是數(shù)據(jù)清洗的第一步队秩,關(guān)鍵步驟。
上一篇因?yàn)槠脑蛑缙郑唤榻B了異常值檢測馍资,本文介紹數(shù)據(jù)一致性處理。
1关噪、重復(fù)值檢測與去重
使用df.duplicated()
和df.drop_duplicates()
方法如果對應(yīng)的數(shù)據(jù)是重復(fù)的鸟蟹,duplicated()
會返回 True,否則返回 False使兔。
# 檢測重復(fù)行
df.duplicated()
# 檢測特定列的重復(fù)值
df.duplicated(subset=['列名'])
# 刪除完全重復(fù)的行
df.drop_duplicates()
# 基于特定列刪除重復(fù)項(xiàng)建钥,保留第一次出現(xiàn)的
df.drop_duplicates(subset=['name'], keep='first')
# 標(biāo)記重復(fù)項(xiàng)
df.duplicated(subset=['name'], keep=False)
2、類型轉(zhuǎn)換與數(shù)據(jù)格式統(tǒng)一
# 查看數(shù)據(jù)基本信息
df.dtypes
df.dtypes.unique()
df.unique()
df.dtypes.value_counts()
df.info()
# 轉(zhuǎn)換整數(shù)類型
pd.to_numeric(df['列名'])
# 轉(zhuǎn)換 age 為整數(shù)類型虐沥,處理未知值
pd.to_numeric(df['age'], errors='coerce')
# 轉(zhuǎn)換 salary 為浮點(diǎn)數(shù)類型熊经,移除逗號
df['salary'].str.replace(',', '').astype(float)
# 轉(zhuǎn)換 join_date 為日期類型
pd.to_datetime(df['join_date'])
# 處理缺失值
df['age'].fillna(df['age'].mean(), inplace=True)
# 格式統(tǒng)一:將所有字符串轉(zhuǎn)為小寫
df['name'].str.lower()
3、不一致記錄的標(biāo)注與修正
標(biāo)準(zhǔn)化編碼:統(tǒng)一使用相同的編碼方式(如UTF-8)欲险。
規(guī)范化值:例如镐依,將"Street"、"St."天试、"St"統(tǒng)一為一種表示槐壳。
單位轉(zhuǎn)換:確保所有數(shù)值使用相同的單位。
拼寫檢查:修正拼寫錯誤
# 經(jīng)常用到的函數(shù)
df.apply() #可以對每行喜每、每列务唐、每個值應(yīng)用函數(shù)
df.replace() # 對數(shù)據(jù)進(jìn)行替換
# 標(biāo)準(zhǔn)化城市名稱--示例
city_mapping = {
'New York City': 'New York',
'Chcago': 'Chicago',
'San Fransisco': 'San Francisco'
}
df['city'] = df['city'].replace(city_mapping)
總結(jié)
筆者寫了三篇文章介紹缺失值處理數(shù)據(jù)預(yù)處理方法大全+實(shí)戰(zhàn)代碼(一)(二)、異常值檢測數(shù)據(jù)預(yù)處理方法大全+實(shí)戰(zhàn)代碼(三)灼卢、數(shù)據(jù)一致性處理绍哎。這是數(shù)據(jù)清洗的第一步,關(guān)鍵步驟鞋真〕缪撸可以顯著提高數(shù)據(jù)質(zhì)量,為后續(xù)的分析和建模工作奠定堅(jiān)實(shí)的基礎(chǔ)。在實(shí)際應(yīng)用中海诲,需要根據(jù)具體的數(shù)據(jù)特點(diǎn)和業(yè)務(wù)需求繁莹,選擇合適的方法進(jìn)行數(shù)據(jù)清洗树绩。