數(shù)據(jù)清洗
? ? pandas使用浮點(diǎn)數(shù)NaN表示浮點(diǎn)和非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù)画饥,它只是一個(gè)便于被檢測出來的標(biāo)志而已横侦。python內(nèi)置的None值也會(huì)被當(dāng)做NA處理牵寺。
(1)查找了缺失值:
? ? ? 首先利用data.info()堂污,觀察每個(gè)數(shù)據(jù)列數(shù)據(jù)相關(guān)情況柒啤;
? ? ? 然后利用:data.isnull().sum()倦挂,查看所有列中是NA的數(shù)據(jù),并得到NA數(shù)據(jù)的個(gè)數(shù)担巩;
? ? ? data['Age'].isnull().sum查看單列的數(shù)據(jù)NA情況
(2)對缺失值進(jìn)行處理
a)填入具體的值
data[data['Age']==None]=0
data[data['Age'].isnull()]=0
data[data['Age']==np.nan]=0
b)刪除
dropna:根據(jù)各標(biāo)簽的值中是否存在缺失的數(shù)據(jù)對軸標(biāo)簽進(jìn)行過濾方援,可通過閥值調(diào)節(jié)對缺失值的容忍度
data.dropna(how='all‘,axis=1,thresh=3)
data[data.notnull()]
fillna:用指定值或插值方法(如ffil或bfill)填充缺失數(shù)據(jù)
isnull:返回一個(gè)含有布爾值的對象 這些布爾值表示哪些值是缺失值/NA
notnull:isnull的否定式
重復(fù)值觀察與處理
df.duplicated():方法返回的是一個(gè)布爾值Series,與之前的出現(xiàn)的行進(jìn)行對比涛癌,是否存在重復(fù)行犯戏,如果重復(fù)則返回True
#df.duplicated(‘ID’):某列查找重復(fù)值
#篩選出重復(fù)行:df[df.duplicated(‘ID’)]
#篩選非重復(fù)行:df[df.duplicated(‘ID’)==False]
df.drop_duplicates():返回一個(gè)新的DATa Frame數(shù)組送火,返回的數(shù)組就是duplicated中False的部分
#df.drop_duplicates(inplase=True):如果需要直接將原數(shù)據(jù)修改,需要加參數(shù)inplase
特征觀察與處理
我們對特征進(jìn)行一下觀察先匪,可以把特征大概分為兩大類:
數(shù)值型特征:Survived 种吸,Pclass, Age 呀非,SibSp坚俗, Parch, Fare岸裙,其中Survived猖败, Pclass為離散型數(shù)值特征,Age哥桥,SibSp辙浑, Parch, Fare為連續(xù)型數(shù)值特征
文本型特征:Name拟糕, Sex判呕, Cabin,Embarked送滞, Ticket侠草,其中Sex, Cabin犁嗅, Embarked边涕, Ticket為類別型文本特征。
數(shù)值型特征一般可以直接用于模型的訓(xùn)練褂微,但有時(shí)候?yàn)榱四P偷姆€(wěn)定性及魯棒性會(huì)對連續(xù)變量進(jìn)行離散化功蜓。文本型特征往往需要轉(zhuǎn)換成數(shù)值型特征才能用于建模分析。
Python實(shí)現(xiàn)連續(xù)數(shù)據(jù)的離散化處理主要基于兩個(gè)函數(shù):pandas.cut和pandas.qcut,第一個(gè)根據(jù)指定分界點(diǎn)對連續(xù)數(shù)據(jù)進(jìn)行分箱處理(按變量大小進(jìn)行分類)宠蚂;第二個(gè)對指定箱子的數(shù)量對連續(xù)數(shù)據(jù)進(jìn)行等寬分箱處理(按變量數(shù)量進(jìn)行分類式撼,所謂等寬指的是每個(gè)箱子中的數(shù)量是相同的)
df['AgeBand']=pd.cut(df['Age'],[0,5,15,30,50,80],labels=['1','2','3','4','5'])
默認(rèn)的左開右閉,增加參數(shù)right=Flase,改變?yōu)樽箝]右開求厕;如果向cut傳遞是箱的數(shù)量而不是確切的邊界著隆,則它會(huì)根據(jù)數(shù)據(jù)最小值和最大值計(jì)算等長箱,pd.cut(data,4,precision=2)
處理類別數(shù)據(jù):可分為標(biāo)稱特征(nominal feature)和有序特征(ordinal feature)呀癣,有序特征就是類別值是有序的或者可以排序美浦,如衣服的尺寸。
為了確保模型可以正確使用有序特征项栏,需要將類別字符串換為整數(shù)浦辨,需要手工定義相應(yīng)的映射,利用pandas的map()函數(shù)進(jìn)行沼沈。
定義一個(gè)size_mapping={……}的字典荤牍;
然后df['size']=df['size'p].map(size_mapping)
類別的編碼
獨(dú)熱編碼