日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【数据处理】python数据清洗通用手法:缺失值处理

發(fā)布時間:2025/3/21 python 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据处理】python数据清洗通用手法:缺失值处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
def missing_delete_var(df, threshold=None):"""df:數(shù)據(jù)集threshold:缺失率刪除的閾值return :刪除缺失后的數(shù)據(jù)集"""df2 = df.copy()missing_df = missing_cal(df)missing_col_num = missing_df[missing_df.missing_pct >= threshold].shape[0]missing_col = list(missing_df[missing_df.missing_pct >= threshold].col)df2 = df2.drop(missing_col, axis=1)return df2def missing_delete_user(df, threshold=None):"""df:數(shù)據(jù)集threshold:缺失個數(shù)刪除的閾值return :刪除缺失后的數(shù)據(jù)集"""df2 = df.copy()missing_series = df.isnull().sum(axis=1)missing_list = list(missing_series)missing_index_list = []for i, j in enumerate(missing_list):if j >= threshold:missing_index_list.append(i)df2 = df2[~(df2.index.isin(missing_index_list))]return df2def const_delete(df, col_list, threshold=None):"""df:數(shù)據(jù)集col_list:變量list集合threshold:同值化處理的閾值return :處理后的數(shù)據(jù)集"""df2 = df.copy()const_col = []for col in col_list:const_pct = df2[col].value_counts().iloc[0] / df2[df2[col].notnull()].shape[0]if const_pct >= threshold:const_col.append(col)df2 = df2.drop(const_col, axis=1)return df2def missing_cal(df):"""df :數(shù)據(jù)集return:每個變量的缺失率"""missing_series = df.isnull().sum() / df.shape[0]missing_df = pd.DataFrame(missing_series).reset_index()missing_df = missing_df.rename(columns={'index': 'col',0: 'missing_pct'})missing_df = missing_df.sort_values('missing_pct', ascending=False).reset_index(drop=True)return missing_dfdef data_processing(df, target):"""df:包含了label和特征的寬表return:df :清洗后的數(shù)據(jù)集"""# 特征缺失處理df = missing_delete_var(df, threshold=0.8)# 樣本缺失處理df = missing_delete_user(df, threshold=int(df.shape[1] * 0.8))col_list = [x for x in df.columns if x != target]# 常變量處理df = const_delete(df, col_list, threshold=0.9)desc = df.describe().T# 剔除方差為0的特征std_0_col = list(desc[desc['std'] == 0].index)if len(std_0_col) > 0:df = df.drop(std_0_col, axis=1)df.reset_index(drop=True, inplace=True)# 缺失值計算和填充miss_df = missing_cal(df)cate_col = list(df.select_dtypes(include=['O']).columns)num_col = [x for x in list(df.select_dtypes(include=['int64', 'float64']).columns) if x != 'label']# 分類型特征填充cate_miss_col1 = [x for x in list(miss_df[miss_df.missing_pct > 0.05]['col']) if x in cate_col]cate_miss_col2 = [x for x in list(miss_df[miss_df.missing_pct <= 0.05]['col']) if x in cate_col]num_miss_col1 = [x for x in list(miss_df[miss_df.missing_pct > 0.05]['col']) if x in num_col]num_miss_col2 = [x for x in list(miss_df[miss_df.missing_pct <= 0.05]['col']) if x in num_col]for col in cate_miss_col1:df[col] = df[col].fillna('未知')for col in cate_miss_col2:df[col] = df[col].fillna(df[col].mode()[0])for col in num_miss_col1:df[col] = df[col].fillna(-999)for col in num_miss_col2:df[col] = df[col].fillna(df[col].median())return df, miss_df

??對數(shù)據(jù)分析、機器學習、數(shù)據(jù)科學、金融風控等感興趣的小伙伴,需要數(shù)據(jù)集、代碼、行業(yè)報告等各類學習資料,可添加微信:wu805686220(記得要備注喔!),也可關(guān)注微信公眾號:風控圏子(別打錯字,是圏子,不是圈子,算了直接復(fù)制吧!)

關(guān)注公眾號后,可聯(lián)系圈子助手加入如下社群:

  • 機器學習風控討論群(微信群)
  • 反欺詐討論群(微信群)
  • python學習交流群(微信群)
  • 研習社資料(qq群:102755159)(干貨、資料、項目、代碼、報告、課件)

相互學習,共同成長。

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的【数据处理】python数据清洗通用手法:缺失值处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。