day 6 缺失值處理

import pandas as pd
from sklearn.impute import SimpleImputer  # 專門補缺的類
from sklearn.preprocessing import LabelEncoder  # 標籤專用,能夠將分類轉換爲分類數值

data = pd.read_csv('缺失預處理數據22222.csv', index_col=0)  # 把第0列作爲索引
########################## 缺失預處理數據22222.csv 已經上傳到我的資源,可以直接下載
# print(data.head())
# print(data.info())  #看一下數據狀況 發現年齡和艙門有缺失

# todo:::::::::::::sklearn.impute.SimpleImputer (missing_values=nan, strategy=’mean’, fill_value=None, verbose=0,copy=True)
# todo:  參數
#### missing_values 告訴SimpleImputer,數據中的缺失值長什麼樣,默認空值np.nan
#### strategy 我們填補缺失值的策略,默認均值。
####                       輸入“mean”使用均值填補(僅對數值型特徵可用)
####                       輸入“median"用中值填補(僅對數值型特徵可用)
####                      輸入"most_frequent”用衆數填補(對數值型和字符型特徵都可用)
####                       輸入“constant"表示請參考參數“fill_value"中的值(對數值型和字符型特徵都可用)
#### fill_value 當參數startegy爲”constant"的時候可用,可輸入字符串或數字表示要填充的值,常用0
#### copy 默認爲True,將創建特徵矩陣的副本,反之則會將缺失值填補到原本的特徵矩陣中去


# todo: 填補年齡
# Age = data.loc[:, "Age"].values.reshape(-1, 1)  # sklearn當中特徵矩陣必須是二維
# imp_mean = SimpleImputer()  # 實例化,默認均值填補
# imp_median = SimpleImputer(strategy="median")  # 用中位數填補
# imp_0 = SimpleImputer(strategy="constant", fill_value=0)  # 用0填補
#
# imp_mean = imp_mean.fit_transform(Age)  # fit_transform一步完成調取結果
# imp_median = imp_median.fit_transform(Age)  # fit_transform一步完成調取結果
# imp_0 = imp_0.fit_transform(Age)  # fit_transform一步完成調取結果
# print(imp_mean[:20])
# print(imp_median[:20])
# print(imp_0[:20])
# todo::在這裏我們使用中位數填補Age
# data.loc[:, "Age"] = imp_median

# print(data.info())
# todo: 使用衆數填補Embarked
# Embarked = data.loc[:, "Embarked"].values.reshape(-1, 1)
# imp_mode = SimpleImputer(strategy="most_frequent")
# data.loc[:, "Embarked"] = imp_mode.fit_transform(Embarked)
# print(data.info())


# todo::::BONUS:用Pandas和Numpy進行填補其實更加簡單
import pandas as pd
# data.head()
# data.loc[:, "Age"] = data.loc[:, "Age"].fillna(data.loc[:, "Age"].median())
# # .fillna 在DataFrame裏面直接進行填補
# data.dropna(axis=0, inplace=True)
# # .dropna(axis=0)刪除所有有缺失值的行,.dropna(axis=1)刪除所有有缺失值的列
# # 參數inplace,爲True表示在原數據集上進行修改,爲False表示生成一個複製對象,不修改原數據,默認False
# print(data.info())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章