一文詳解Python中數(shù)據(jù)清洗與處理的常用方法
在數(shù)據(jù)處理與分析過(guò)程中,缺失值、重復(fù)值、異常值等問(wèn)題是常見(jiàn)的挑戰(zhàn)。
本文總結(jié)了多種數(shù)據(jù)清洗與處理方法:
缺失值處理包括刪除缺失值、固定值填充、前后向填充以及刪除缺失率高的列;
重復(fù)值處理通過(guò)刪除或標(biāo)記重復(fù)項(xiàng)解決數(shù)據(jù)冗余問(wèn)題;
異常值處理采用替換或標(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)簽,而歸一化則通過(guò)壓縮數(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按作者分組的平均價(jià)格:")
print(grouped)
數(shù)據(jù)分箱
按價(jià)格分箱
bins = [0, 10, 20, 30]
labels = ['低', '中', '高']
df['price_level'] = pd.cut(df['price'], bins=bins, labels=labels, right=False)
print("\n按價(jià)格分箱后:")
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中嘗試多線程編程的一個(gè)簡(jiǎn)明例子
這篇文章主要介紹了Python中嘗試多線程編程的一個(gè)簡(jiǎn)明例子,由于GIL的存在,Python中的多線程編程一個(gè)是熱點(diǎn)和難點(diǎn)問(wèn)題,需要的朋友可以參考下2015-04-04
python簡(jiǎn)單實(shí)現(xiàn)最大似然估計(jì)&scipy庫(kù)的使用詳解
這篇文章主要介紹了python簡(jiǎn)單實(shí)現(xiàn)最大似然估計(jì)&scipy庫(kù)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
python fuzzywuzzy模塊模糊字符串匹配詳細(xì)用法
這篇文章主要介紹了使用Python完成公司名稱和地址的模糊匹配的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python內(nèi)置函數(shù)之staticmethod函數(shù)使用及說(shuō)明
這篇文章主要介紹了Python內(nèi)置函數(shù)之staticmethod函數(shù)使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-07-07
Python異步并發(fā)控制asyncio.gather 與 Semaphore 協(xié)同設(shè)計(jì)解析
本文詳細(xì)解析了在Python異步編程中使用asyncio.gather與asyncio.Semaphore進(jìn)行并發(fā)控制的重要性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
python設(shè)置環(huán)境變量的幾種方法總結(jié)
這篇文章主要介紹了在Python中設(shè)置環(huán)境變量可以通過(guò)多種方式實(shí)現(xiàn),包括使用os.environ、os.putenv、setuptools以及在操作系統(tǒng)級(jí)別設(shè)置,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01

