2021-07-14

動(dòng)手學(xué)數(shù)據(jù)分析之?dāng)?shù)據(jù)清洗及特征處理

1.開始之前,導(dǎo)入numpy、pandas包和數(shù)據(jù)

(1)#加載所需的庫

import numpy as np
import pandas as pd

(2)加載數(shù)據(jù)train.csv

df = pd.read_csv('train.csv')
df.head(3)
image.png

2. 數(shù)據(jù)清洗簡述

(1)我們拿到的數(shù)據(jù)通常是不干凈的,所謂的不干凈,就是數(shù)據(jù)中有缺失值,有一些異常點(diǎn)等,需要經(jīng)過一定的處理才能繼續(xù)做后面的分析或建模,所以拿到數(shù)據(jù)的第一步是進(jìn)行數(shù)據(jù)清洗,本章我們將學(xué)習(xí)缺失值、重復(fù)值、字符串和數(shù)據(jù)轉(zhuǎn)換等操作,將數(shù)據(jù)清洗成可以分析或建模的樣子。

(2)缺失值觀察與處理

*請查看每個(gè)特征缺失值個(gè)數(shù)


image.png

**對缺失值進(jìn)行處理

(1)處理缺失值一般有幾種思路

(2) 請嘗試對Age列的數(shù)據(jù)的缺失值進(jìn)行處理

(3) 請嘗試使用不同的方法直接對整張表的缺失值進(jìn)行處理


image.png

3.重復(fù)值觀察與處理

(1)請查看數(shù)據(jù)中的重復(fù)值

image.png

(2)對重復(fù)值進(jìn)行處理

image.png

(3)將前面清洗的數(shù)據(jù)保存為csv格式

df.to_csv('test_clear.csv')

4.特征觀察與處理

(1)對年齡進(jìn)行分箱(離散化)處理

(1) 分箱操作是什么?

(2) 將連續(xù)變量Age平均分箱成5個(gè)年齡段,并分別用類別變量12345表示

(3) 將連續(xù)變量Age劃分為(0,5] (5,15] (15,30] (30,50] (50,80]五個(gè)年齡段,并分別用類別變量12345表示

(4) 將連續(xù)變量Age按10% 30% 50% 70% 90%五個(gè)年齡段,并用分類變量12345表示

(5) 將上面的獲得的數(shù)據(jù)分別進(jìn)行保存,保存為csv格式

#將連續(xù)變量Age平均分箱成5個(gè)年齡段,并分別用類別變量12345表示
df['AgeBand'] = pd.cut(df['Age'], 5,labels = [1,2,3,4,5])
df.head()
image.png
#將連續(xù)變量Age劃分為(0,5] (5,15] (15,30] (30,50] (50,80]五個(gè)年齡段,并分別用類別變量12345表示
df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels = [1,2,3,4,5])
df.head(3)
image.png

(2)對文本變量進(jìn)行轉(zhuǎn)換

(1) 查看文本變量名及種類
(2) 將文本變量Sex, Cabin ,Embarked用數(shù)值變量12345表示
(3) 將文本變量Sex, Cabin, Embarked用one-hot編碼表示


image.png
#方法三: 使用sklearn.preprocessing的LabelEncoder
from sklearn.preprocessing import LabelEncoder
for feat in ['Cabin', 'Ticket']:
    lbl = LabelEncoder()  
    label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique())))
    df[feat + "_labelEncode"] = df[feat].map(label_dict)
    df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str))

df.head()
image.png
#將類別文本轉(zhuǎn)換為one-hot編碼

#方法一: OneHotEncoder
for feat in ["Age", "Embarked"]:
#     x = pd.get_dummies(df["Age"] // 6)
#     x = pd.get_dummies(pd.cut(df['Age'],5))
    x = pd.get_dummies(df[feat], prefix=feat)
    df = pd.concat([df, x], axis=1)
    #df[feat] = pd.get_dummies(df[feat], prefix=feat)
    
df.head()
image.png

從純文本Name特征里提取出Titles的特征(所謂的Titles就是Mr,Miss,Mrs等

df['Title'] = df.Name.str.extract('([A-Za-z]+)\.', expand=False)
df.head()
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 新一代工業(yè)互聯(lián)網(wǎng)平臺(tái)之三——極簡工業(yè)云平臺(tái)功能應(yīng)用與優(yōu)勢 大海_WH 1 極簡工業(yè)功能應(yīng)用 極簡工業(yè)平臺(tái)是一套OT...
    大海WH閱讀 271評(píng)論 0 0
  • 網(wǎng)絡(luò)基礎(chǔ)知識(shí) 計(jì)算機(jī)誕生 “第一臺(tái)計(jì)算機(jī)(ENIAC)于1946年2月,在美國誕生。提出程序存儲(chǔ)的是美國的數(shù)學(xué)家馮...
    水中的藍(lán)天閱讀 457評(píng)論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,835評(píng)論 28 54
  • 信任包括信任自己和信任他人 很多時(shí)候,很多事情,失敗、遺憾、錯(cuò)過,源于不自信,不信任他人 覺得自己做不成,別人做不...
    吳氵晃閱讀 6,365評(píng)論 4 8
  • 步驟:發(fā)微博01-導(dǎo)航欄內(nèi)容 -> 發(fā)微博02-自定義TextView -> 發(fā)微博03-完善TextView和...
    dibadalu閱讀 3,415評(píng)論 1 3

友情鏈接更多精彩內(nèi)容