python 採用pandas的DataFrame實現對數字型別用均值填補和分類型別用眾數填補
今天在用python對資料的數字型別用均值填補,分類型別用眾數填補,遇到幾個坑,mark一下:
1.眾數需要一列一列的填補
2.DataFrame的mode()函式會返回一個series,即多個數需要從中選擇一個進行填補,不然會一直填補不上。(我這裡是隨機選擇一個)
原始碼如下
"""
採用均值和眾數將缺失值填補
dataset是list
columns_classification是list,分類型別的位置
"""
def impute_data_by_mean_or_mode(dataset,columns_classification):
full_dataset=np.copy(dataset)
full_dataset=pd.DataFrame(full_dataset)
# print(full_dataset)
#將資料分為數字型別和分類型別
classification_data=full_dataset[columns_classification]
number_dataset=full_dataset.drop(full_dataset.columns[columns_classification], axis=1)#刪除多列的方法
#先用均值填補數字型別的欄位
number_imputed_data=number_dataset.fillna(np.mean(number_dataset))
#眾數需要一列一列填補
flag=0#標記是否第一次
classification_imputed_data=pd.DataFrame()
for index, columns in classification_data.iteritems():#按列迴圈
mode_list=columns.mode().to_list()#可能存在多個眾數,這也是總容易犯錯的地方
# print(mode_list)
#隨機選一個眾數
random_val=random.randint(0,len(mode_list)-1)
random_mode=mode_list[random_val]
#將眾數填入
columns=columns.fillna(random_mode)
columns=pd.DataFrame(columns)
# print(columns) # 輸出列名
#拼接分類型別資料
if flag==0:
classification_imputed_data=columns
else:
classification_imputed_data=classification_imputed_data.join(columns)
flag+=1
# print(classification_imputed_data)
#將填補好的資料合併
imputed_data=number_imputed_data.join(classification_imputed_data)
#根據索引將資料恢復原來的順序
imputed_data=imputed_data.sort_index(axis=1)#預設為升序
# print("--------插補結果----------")
# print(imputed_data)
return imputed_data
if __name__=='__main__':
#定義一個陣列
dataset=[[1,2.222,3,4,5],[2,None,None,None,5],[None,None,3,4,None],[1,2.5661,3,4,5.234]]
impute_data_by_mean_or_mode(dataset,[0,2,3])
執行結果如下:
相關文章
- 表單填寫數字型別驗證型別
- 2019,這些遊戲用創新填補了遊戲品類的空缺遊戲
- 網路安全需求增大,世平資訊用資料內容識別技術填補市場空白
- Python 中的鴨子型別和猴子補丁Python型別
- PHP 用 Enum 限定引數型別PHP型別
- 教程 | 用Scikit-Learn實現多類別文字分類文字分類
- javascript型別系統——Number數字型別JavaScript型別
- 整合學習(1)AdaBoost分別應用於分類和迴歸及其python實現Python
- 《面試補習》--來聊聊削峰填谷!面試
- 【git實際應用填坑解決】Git
- ACM 蛇形填數ACM
- 用python實現的可以自動補全的字首樹Python
- 打破製造業數字化轉型困境:華為雲助力企業填補資料空白和簡化管理
- java中基本型別佔用位元組數Java型別
- 數字型別型別
- pandas.DataFrame.groupby函式應用函式
- Lua 列印table 實現型別python的repr用於table型別Python
- Python數字型別有哪些Python型別
- 如何填補友盟分享新浪微博的那些坑
- ORACLE 資料型別佔用的位元組數(轉)Oracle資料型別
- dns首選和備用填多少 首選dns伺服器怎麼填DNS伺服器
- JVM實用引數(一)JVM型別以及編譯器模式JVM型別編譯模式
- GOLANG將型別作為引數,用反射設定指標的指標,實現類似模板功能Golang型別反射指標
- Python基礎(01):數字型別Python型別
- 用強化學習做神經機器翻譯:中山大學&MSRA填補多項空白強化學習
- oracle patch補丁型別typeOracle型別
- 交易型應用與消費類應用的區別 | infoworld
- 用數字輔助表補錄資料一則
- python—資料型別和變數Python資料型別變數
- 當前日期+隨機數+檔名(採用兩種方法實現的工具類)隨機
- 小程式實現語音識別到底要填多少坑?
- 【python資料探勘課程】十.Pandas、Matplotlib、PCA繪圖實用程式碼補充PythonPCA繪圖
- Python數值型別Python型別
- Python變數型別Python變數型別
- 用pandas實現SQL功能SQL
- Pandas 基礎 (8) - 用 concat 組合 dataframe
- 用tensorflow2實現mnist手寫數字識別
- 型別的本質:對變數、型別、指標的理解型別變數指標