一文詳解Python中數(shù)據(jù)清洗與處理的常用方法
在數(shù)據(jù)處理與分析過程中,缺失值、重復(fù)值、異常值等問題是常見的挑戰(zhàn)。
本文總結(jié)了多種數(shù)據(jù)清洗與處理方法:
缺失值處理包括刪除缺失值、固定值填充、前后向填充以及刪除缺失率高的列;
重復(fù)值處理通過刪除或標(biāo)記重復(fù)項(xiàng)解決數(shù)據(jù)冗余問題;
異常值處理采用替換或標(biāo)記方法控制數(shù)據(jù)質(zhì)量;
數(shù)據(jù)類型轉(zhuǎn)換確保數(shù)據(jù)格式符合分析需求,例如轉(zhuǎn)換為整數(shù)或日期類型;
文本清洗包括去空格、字符替換及轉(zhuǎn)換大小寫等操作。
此外,還介紹了數(shù)據(jù)分組統(tǒng)計(jì)、數(shù)據(jù)分箱與標(biāo)準(zhǔn)化的應(yīng)用。例如,分組統(tǒng)計(jì)可按列求均值,數(shù)據(jù)分箱能為連續(xù)變量賦予分類標(biāo)簽,而歸一化則通過壓縮數(shù)據(jù)范圍提升模型表現(xiàn)。這些方法能有效提高數(shù)據(jù)質(zhì)量與分析效率,是數(shù)據(jù)科學(xué)中不可或缺的能。
缺失值處理
刪除缺失值
df_dropped = df.dropna() print("\n刪除缺失值后:") print(df_dropped)
用固定值填充缺失值
df_filled = df.fillna({ 'title': 'Unknown', 'author': 'Unknown Author', 'price': df['price'].mean() }) print("\n填充缺失值后:") print(df_filled)
前向填充
df_ffill = df.fillna(method='ffill') print("\n前向填充缺失值后:") print(df_ffill)
后向填充
df_bfill = df.fillna(method='bfill') print("\n后向填充缺失值后:") print(df_bfill)
刪除缺失率高的列
df_dropped_cols = df.dropna(axis=1, thresh=len(df) * 0.5) print("\n刪除缺失率高的列后:") print(df_dropped_cols)
重復(fù)值處理
刪除重復(fù)值
df_deduplicated = df.drop_duplicates() print("\n刪除重復(fù)值后:") print(df_deduplicated)
標(biāo)記重復(fù)值
df['is_duplicate'] = df.duplicated() print("\n標(biāo)記重復(fù)值后:") print(df)
異常值處理
替換異常值
df['price'] = df['price'].apply(lambda x: x if 0 <= x <= 100 else df['price'].mean()) print("\n替換異常值后:") print(df)
標(biāo)記異常值
df['is_outlier'] = df['price'].apply(lambda x: 1 if x < 0 or x > 100 else 0) print("\n標(biāo)記異常值后:") print(df)
數(shù)據(jù)類型轉(zhuǎn)換
轉(zhuǎn)換為整數(shù)類型
df['price'] = df['price'].astype(int) print("\n轉(zhuǎn)換為整數(shù)后:") print(df)
轉(zhuǎn)換為日期類型
df['date'] = pd.to_datetime(df['date'], errors='coerce') print("\n轉(zhuǎn)換為日期類型后:") print(df)
文本清洗
去掉兩端空格
df['title'] = df['title'].str.strip() print("\n去掉兩端空格后:") print(df)
替換特定字符
df['title'] = df['title'].str.replace('[^a-zA-Z0-9\s]', '', regex=True) print("\n替換特定字符后:") print(df)
轉(zhuǎn)換為小寫
df['title'] = df['title'].str.lower() print("\n轉(zhuǎn)換為小寫后:") print(df)
數(shù)據(jù)分組統(tǒng)計(jì)
按列分組求均值
grouped = df.groupby('author')['price'].mean() print("\n按作者分組的平均價格:") print(grouped)
數(shù)據(jù)分箱
按價格分箱
bins = [0, 10, 20, 30] labels = ['低', '中', '高'] df['price_level'] = pd.cut(df['price'], bins=bins, labels=labels, right=False) print("\n按價格分箱后:") print(df)
數(shù)據(jù)標(biāo)準(zhǔn)化
歸一化處理
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df['price_scaled'] = scaler.fit_transform(df[['price']]) print("\n歸一化后的數(shù)據(jù):") print(df)
到此這篇關(guān)于一文詳解Python中數(shù)據(jù)清洗與處理的常用方法的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)清洗與處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
跟老齊學(xué)Python之再深點(diǎn),更懂list
對于list,由于她的確非常非常龐雜,在python中應(yīng)用非常廣泛,所以,雖然已經(jīng)介紹完畢了基礎(chǔ)內(nèi)容,這里還要用一講深入一點(diǎn)點(diǎn),往往越深入越...2014-09-09利用Python半自動化生成Nessus報(bào)告的方法
這篇文章主要介紹了利用Python半自動化生成Nessus報(bào)告的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03python3.6的字符串處理f-string的使用技巧分享
在這篇文章中講解了F字符串的基礎(chǔ)使用,對于F字符串有著很多的使用技巧,在這篇文章中你會見識到更多的F字符串的使用技巧,下面小編將介紹python3.6?的字符串處理f-string的使用技巧,需要的朋友可以參考下2024-02-02Python實(shí)現(xiàn)圖像去噪方式(中值去噪和均值去噪)
今天小編就為大家分享一篇Python實(shí)現(xiàn)圖像去噪方式(中值去噪和均值去噪),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python字典一個key對應(yīng)多個value幾種實(shí)現(xiàn)方式
python中字典的健和值是一一對應(yīng)的,如果對字典進(jìn)行添加操作時如果健的名字相同,則當(dāng)前健對應(yīng)的值就會被覆蓋,有時候我們想要一個健對應(yīng)多個值的場景,這篇文章主要給大家介紹了關(guān)于Python字典一個key對應(yīng)多個value幾種實(shí)現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下2023-10-10利用Pandas讀取文件路徑或文件名稱包含中文的csv文件方法
今天小編就為大家分享一篇利用Pandas讀取文件路徑或文件名稱包含中文的csv文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07