一文詳解Python中數(shù)據(jù)清洗與處理的常用方法
在數(shù)據(jù)處理與分析過程中,缺失值、重復值、異常值等問題是常見的挑戰(zhàn)。
本文總結了多種數(shù)據(jù)清洗與處理方法:
缺失值處理包括刪除缺失值、固定值填充、前后向填充以及刪除缺失率高的列;
重復值處理通過刪除或標記重復項解決數(shù)據(jù)冗余問題;
異常值處理采用替換或標記方法控制數(shù)據(jù)質量;
數(shù)據(jù)類型轉換確保數(shù)據(jù)格式符合分析需求,例如轉換為整數(shù)或日期類型;
文本清洗包括去空格、字符替換及轉換大小寫等操作。
此外,還介紹了數(shù)據(jù)分組統(tǒng)計、數(shù)據(jù)分箱與標準化的應用。例如,分組統(tǒng)計可按列求均值,數(shù)據(jù)分箱能為連續(xù)變量賦予分類標簽,而歸一化則通過壓縮數(shù)據(jù)范圍提升模型表現(xiàn)。這些方法能有效提高數(shù)據(jù)質量與分析效率,是數(shù)據(jù)科學中不可或缺的能。
缺失值處理
刪除缺失值
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)
重復值處理
刪除重復值
df_deduplicated = df.drop_duplicates()
print("\n刪除重復值后:")
print(df_deduplicated)
標記重復值
df['is_duplicate'] = df.duplicated()
print("\n標記重復值后:")
print(df)
異常值處理
替換異常值
df['price'] = df['price'].apply(lambda x: x if 0 <= x <= 100 else df['price'].mean())
print("\n替換異常值后:")
print(df)
標記異常值
df['is_outlier'] = df['price'].apply(lambda x: 1 if x < 0 or x > 100 else 0)
print("\n標記異常值后:")
print(df)
數(shù)據(jù)類型轉換
轉換為整數(shù)類型
df['price'] = df['price'].astype(int)
print("\n轉換為整數(shù)后:")
print(df)
轉換為日期類型
df['date'] = pd.to_datetime(df['date'], errors='coerce')
print("\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)
轉換為小寫
df['title'] = df['title'].str.lower()
print("\n轉換為小寫后:")
print(df)
數(shù)據(jù)分組統(tǒng)計
按列分組求均值
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ù)標準化
歸一化處理
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df['price_scaled'] = scaler.fit_transform(df[['price']])
print("\n歸一化后的數(shù)據(jù):")
print(df)到此這篇關于一文詳解Python中數(shù)據(jù)清洗與處理的常用方法的文章就介紹到這了,更多相關Python數(shù)據(jù)清洗與處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決Django中調用keras的模型出現(xiàn)的問題
今天小編就為大家分享一篇解決Django中調用keras的模型出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python數(shù)據(jù)類型之String字符串實例詳解
這篇文章主要介紹了Python數(shù)據(jù)類型之String字符串,結合實例形式詳細講解了Python字符串的概念、定義、連接、格式化、轉換、查找、截取、判斷等常見操作技巧,需要的朋友可以參考下2019-05-05
Python可視化Matplotlib折線圖plot用法詳解
這篇文章主要為大家介紹了Python可視化中Matplotlib折線圖plot用法的詳解,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步2021-09-09
Python urlopen()和urlretrieve()用法解析
這篇文章主要介紹了Python urlopen()和urlretrieve()用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01
對Keras中predict()方法和predict_classes()方法的區(qū)別說明
這篇文章主要介紹了對Keras中predict()方法和predict_classes()方法的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python socket.error: [Errno 98] Address already in use的原因和解決
這篇文章主要介紹了Python socket.error: [Errno 98] Address already in use的原因和解決方法,在Python的socket編程中可能會經常遇到這個問題,需要的朋友可以參考下2014-08-08
pycharm中django框架連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了pycharm中django框架連接mysql數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04

