1. 程式人生 > 其它 >動手學資料分析 Task2 學習筆記

動手學資料分析 Task2 學習筆記

【回顧&引言】前面一章的內容大家可以感覺到我們主要是對基礎知識做一個梳理,讓大家瞭解資料分析的一些操作,主要做了資料的各個角度的觀察。那麼在這裡,我們主要是做資料分析的流程性學習,主要是包括了資料清洗以及資料的特徵處理,資料重構以及資料視覺化。這些內容是為資料分析最後的建模和模型評價做一個鋪墊。

開始之前,匯入numpy、pandas包和資料

#載入所需的庫
import numpy as np
import pandas as pd
#載入資料train.csv
data=pd.read_csv('train.csv')

2 第二章:資料清洗及特徵處理

我們拿到的資料通常是不乾淨的,所謂的不乾淨,就是資料中有缺失值,有一些異常點等,需要經過一定的處理才能繼續做後面的分析或建模,所以拿到資料的第一步是進行資料清洗,本章我們將學習缺失值、重複值、字串和資料轉換等操作,將資料清洗成可以分析或建模的亞子。

2.1 缺失值觀察與處理

我們拿到的資料經常會有很多缺失值,比如我們可以看到Cabin列存在NaN,那其他列還有沒有缺失值,這些缺失值要怎麼處理呢

2.1.1 任務一:缺失值觀察

(1) 請檢視每個特徵缺失值個數
(2) 請檢視Age, Cabin, Embarked列的資料
以上方式都有多種方式,所以大家多多益善

#寫入程式碼
data.isnull().any()


PassengerId    False
Survived       False
Pclass         False
Name           False
Sex            False
Age             True
SibSp          False
Parch          False
Ticket         False
Fare           False
Cabin           True
Embarked        True
dtype: bool

df.isnull()函式返回的是dataframe表中是否有缺失值的總體概述,df中每一個值都為False或者True

isnull.sum()返回每一列缺失值統計個數

isnull().any() 是對列表物件迭代物件(True or False)進行一個再統計,如果某一列有一個True則這一列的結果返回True

#寫入程式碼

data.isnull().sum(axis=1)
#統計行缺失值
0      1
1      0
2      1
3      0
4      1
      ..
886    1
887    0
888    2
889    0
890    1
Length: 891, dtype: int64
data.shape[0]-data.count()  #列空值數
data.shape[1]-data.count(axis=1) #行空值數

0      1
1      0
2      1
3      0
4      1
      ..
886    1
887    0
888    2
889    0
890    1
Length: 891, dtype: int64

2.1.2 任務二:對缺失值進行處理

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

(2) 請嘗試對Age列的資料的缺失值進行處理

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

data
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.0 0 0 211536 13.0000 NaN S
887 888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.0000 B42 S
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female NaN 1 2 W./C. 6607 23.4500 NaN S
889 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.0000 C148 C
890 891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.7500 NaN Q

891 rows × 12 columns

#處理缺失值的一般思路:預設值填充 和 刪除空值行
#提醒:可使用的函式有--->dropna函式與fillna函式
meandata=data['Age'].mean()
data['Age'].fillna(meandata,inplace=True)
# age列的缺失值填入平均數

#寫入程式碼

data.dropna(subset=['Embarked'],axis=0)

PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.0 0 0 211536 13.0000 NaN S
887 888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.0000 B42 S
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female NaN 1 2 W./C. 6607 23.4500 NaN S
889 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.0000 C148 C
890 891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.7500 NaN Q

889 rows × 12 columns

#寫入程式碼

data.dropna(axis=0)

PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
6 7 0 1 McCarthy, Mr. Timothy J male 54.0 0 0 17463 51.8625 E46 S
10 11 1 3 Sandstrom, Miss. Marguerite Rut female 4.0 1 1 PP 9549 16.7000 G6 S
11 12 1 1 Bonnell, Miss. Elizabeth female 58.0 0 0 113783 26.5500 C103 S
... ... ... ... ... ... ... ... ... ... ... ... ...
871 872 1 1 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 1 11751 52.5542 D35 S
872 873 0 1 Carlsson, Mr. Frans Olof male 33.0 0 0 695 5.0000 B51 B53 B55 S
879 880 1 1 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 1 11767 83.1583 C50 C
887 888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.0000 B42 S
889 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.0000 C148 C

183 rows × 12 columns

#寫入程式碼
data.fillna(value={'Age':data['Age'].mean(),'Emabarkex':'Unknow','Cabin':'Unkown'})
#根據不同列填寫不同的缺失值

PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.000000 1 0 A/5 21171 7.2500 Unkown S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.000000 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.000000 0 0 STON/O2. 3101282 7.9250 Unkown S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.000000 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.000000 0 0 373450 8.0500 Unkown S
... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.000000 0 0 211536 13.0000 Unkown S
887 888 1 1 Graham, Miss. Margaret Edith female 19.000000 0 0 112053 30.0000 B42 S
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female 29.699118 1 2 W./C. 6607 23.4500 Unkown S
889 890 1 1 Behr, Mr. Karl Howell male 26.000000 0 0 111369 30.0000 C148 C
890 891 0 3 Dooley, Mr. Patrick male 32.000000 0 0 370376 7.7500 Unkown Q

891 rows × 12 columns

【思考1】dropna和fillna有哪些引數,分別如何使用呢?

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
Parameters
axis {0 or ‘index’, 1 or ‘columns’}, default 0
Determine if rows or columns which contain missing values are removed.
0, or ‘index’ : Drop rows which contain missing values.
1, or ‘columns’ : Drop columns which contain missing value.

how {‘any’, ‘all’}, default ‘any’
Determine if row or column is removed from DataFrame, when we have at least one NA or all NA.
‘any’ : If any NA values are present, drop that row or column.
‘all’ : If all values are NA, drop that row or column.

thresh int, optional
Require that many non-NA values.

subset column label or sequence of labels, optional
Labels along other axis to consider, e.g. if you are dropping rows these would be a list of columns to include.

inplace bool, default False
If True, do operation inplace and return None.

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
Fill NA/NaN values using the specified method.

Parameters
value scalar, dict, Series, or DataFrame
Value to use to fill holes (e.g. 0), alternately a dict/Series/DataFrame of values specifying which value to use for each index (for a Series) or column (for a DataFrame). Values not in the dict/Series/DataFrame will not be filled. This value cannot be a list.

method {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None
Method to use for filling holes in reindexed Series pad / ffill: propagate last valid observation forward to next valid backfill / bfill: use next valid observation to fill gap.

axis {0 or ‘index’, 1 or ‘columns’}
Axis along which to fill missing values.

inplace bool, default False
If True, fill in-place. Note: this will modify any other views on this object (e.g., a no-copy slice for a column in a DataFrame).

limit int, default None
If method is specified, this is the maximum number of consecutive NaN values to forward/backward fill. In other words, if there is a gap with more than this number of consecutive NaNs, it will only be partially filled. If method is not specified, this is the maximum number of entries along the entire axis where NaNs will be filled. Must be greater than 0 if not None.

downcast dict, default is None
A dict of item->dtype of what to downcast if possible, or the string ‘infer’ which will try to downcast to an appropriate equal type (e.g. float64 to int64 if possible).

【思考】檢索空缺值用np.nan,None以及.isnull()哪個更好,這是為什麼?如果其中某個方式無法找到缺失值,原因又是為什麼?

思考回答

數值列讀取資料後,空缺值的資料型別為float64,所以用None一般索引不到,比較的時候最好用np.nan

【參考】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html

【參考】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

2.2 重複值觀察與處理

由於這樣那樣的原因,資料中會不會存在重複值呢,如果存在要怎樣處理呢

DataFrame.duplicated(subset=None, keep=‘first’)

subset:預設為None,需要標記重複的標籤或標籤序列
keep:預設為‘first’,如何標記重複標籤

first:將除第一次出現以外的重複資料標記為True
last:將除最後一次出現以外的重複資料標記為True
False:將所有重複的項都標記為True(不管是不是第一次出現)

2.2.1 任務一:請檢視資料中的重複值

#寫入程式碼
data.duplicated(keep='first')


0      False
1      False
2      False
3      False
4      False
       ...  
886    False
887    False
888    False
889    False
890    False
Length: 891, dtype: bool

2.2.2 任務二:對重複值進行處理

(1)重複值有哪些處理方式呢?

(2)處理我們資料的重複值

方法多多益善

DataFrame.drop_duplicates(subset=None, keep=‘first’, inplace=False)
subset:與duplicated()中相同
keep:與duplicated()中相同
inplace:與pandas其他函式的inplace相同,選擇是修改現有資料還是返回新的資料

#重複值有哪些處理方式:
data.drop_duplicates(keep='first')


PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.0 0 0 211536 13.0000 NaN S
887 888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.0000 B42 S
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female NaN 1 2 W./C. 6607 23.4500 NaN S
889 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.0000 C148 C
890 891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.7500 NaN Q

891 rows × 12 columns

data
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.0 0 0 211536 13.0000 NaN S
887 888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.0000 B42 S
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female NaN 1 2 W./C. 6607 23.4500 NaN S
889 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.0000 C148 C
890 891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.7500 NaN Q

891 rows × 12 columns

2.2.3 任務三:將前面清洗的資料儲存為csv格式

#寫入程式碼
data.to_csv('cleandata.csv')


2.3 特徵觀察與處理

我們對特徵進行一下觀察,可以把特徵大概分為兩大類:
數值型特徵:Survived ,Pclass, Age ,SibSp, Parch, Fare,其中Survived, Pclass為離散型數值特徵,Age,SibSp, Parch, Fare為連續型數值特徵
文字型特徵:Name, Sex, Cabin,Embarked, Ticket,其中Sex, Cabin, Embarked, Ticket為類別型文字特徵,數值型特徵一般可以直接用於模型的訓練,但有時候為了模型的穩定性及魯棒性會對連續變數進行離散化。文字型特徵往往需要轉換成數值型特徵才能用於建模分析。

pandas.cut:

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)

引數:

x,類array物件,且必須為一維,待切割的原形式
bins, 整數、序列尺度、或間隔索引。如果bins是一個整數,它定義了x寬度範圍內的等寬面元數量,但是在這種情況下,x的範圍在每個邊上被延長1%,以保證包括x的最小值或最大值。如果bin是序列,它定義了允許非均勻in寬度的bin邊緣。在這種情況下沒有x的範圍的擴充套件。
right,布林值。是否是左開右閉區間
labels,用作結果箱的標籤。必須與結果箱相同長度。如果FALSE,只返回整數指標面元。
retbins,布林值。是否返回面元
precision,整數。返回面元的小數點幾位
include_lowest,布林值。第一個區間的左端點是否包含

import numpy as np import pandas as pd

df = pd.DataFrame(data = np.random.randint(0,150,size = (100,3)), columns=['Python','Tensorflow','Keras'])

# 1、等寬分箱 pd.cut(df.Python,bins = 3)

# 指定寬度分箱 pd.cut(df.Keras,#分箱資料 bins = [0,60,90,120,150],#分箱斷點 right = False,# 左閉右開 labels=['不及格','中等','良好','優秀'])# 分箱後分類

# 2、等頻分箱 pd.qcut(df.Python,q = 4,# 4等分 labels=['差','中','良','優']) # 分箱後分類

2.3.1 任務一:對年齡進行分箱(離散化)處理

(1) 分箱操作是什麼?

(2) 將連續變數Age平均分箱成5個年齡段,並分別用類別變數12345表示

(3) 將連續變數Age劃分為[0,5) [5,15) [15,30) [30,50) [50,80)五個年齡段,並分別用類別變數12345表示

(4) 將連續變數Age按10% 30% 50% 70% 90%五個年齡段,並用分類變數12345表示

(5) 將上面的獲得的資料分別進行儲存,儲存為csv格式

分箱操作是什麼:

分箱操作就是將連續資料轉換為分類對應物的過程。⽐如將連續的身⾼資料劃分為:矮中⾼。

分箱操作分為等距分箱和等頻分箱。

分箱操作也叫⾯元劃分或者離散化。

#寫入程式碼
data1=pd.cut(data.Age,bins=5,labels=[1,2,3,4,5])
data['Age5Cut']=pd.cut(data.Age,bins=5,labels=[1,2,3,4,5])
#將連續變數Age平均分箱成5個年齡段,並分別用類別變數12345表示
#寫入程式碼

data['Age5Cut2']=pd.cut(data.Age,bins=[0,5,15,30,50,80],right=False,labels=[1,2,3,4,5])
data
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Age5Cut Age5Cut2
0 1 0 3 Braund, Mr. Owen Harris male 22.000000 1 0 A/5 21171 7.2500 NaN S 2 3
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.000000 1 0 PC 17599 71.2833 C85 C 3 4
2 3 1 3 Heikkinen, Miss. Laina female 26.000000 0 0 STON/O2. 3101282 7.9250 NaN S 2 3
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.000000 1 0 113803 53.1000 C123 S 3 4
4 5 0 3 Allen, Mr. William Henry male 35.000000 0 0 373450 8.0500 NaN S 3 4
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.000000 0 0 211536 13.0000 NaN S 2 3
887 888 1 1 Graham, Miss. Margaret Edith female 19.000000 0 0 112053 30.0000 B42 S 2 3
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female 29.699118 1 2 W./C. 6607 23.4500 NaN S 2 3
889 890 1 1 Behr, Mr. Karl Howell male 26.000000 0 0 111369 30.0000 C148 C 2 3
890 891 0 3 Dooley, Mr. Patrick male 32.000000 0 0 370376 7.7500 NaN Q 2 4

891 rows × 14 columns

#寫入程式碼
data['AgeQcut']=pd.qcut(data.Age,q=[0,0.1,0.3,0.5,0.7,0.9,1],labels=[1,2,3,4,5,6])

data
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Age5Cut Age5Cut2 AgeQcut
0 1 0 3 Braund, Mr. Owen Harris male 22.000000 1 0 A/5 21171 7.2500 NaN S 2 3 2
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.000000 1 0 PC 17599 71.2833 C85 C 3 4 5
2 3 1 3 Heikkinen, Miss. Laina female 26.000000 0 0 STON/O2. 3101282 7.9250 NaN S 2 3 3
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.000000 1 0 113803 53.1000 C123 S 3 4 5
4 5 0 3 Allen, Mr. William Henry male 35.000000 0 0 373450 8.0500 NaN S 3 4 5
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
886 887 0 2 Montvila, Rev. Juozas male 27.000000 0 0 211536 13.0000 NaN S 2 3 3
887 888 1 1 Graham, Miss. Margaret Edith female 19.000000 0 0 112053 30.0000 B42 S 2 3 2
888 889 0 3 Johnston, Miss. Catherine Helen "Carrie" female 29.699118 1 2 W./C. 6607 23.4500 NaN S 2 3 3
889 890 1 1 Behr, Mr. Karl Howell male 26.000000 0 0 111369 30.0000 C148 C 2 3 3
890 891 0 3 Dooley, Mr. Patrick male 32.000000 0 0 370376 7.7500 NaN Q 2 4 4

891 rows × 15 columns

【參考】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html

1
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
引數含義
x:被切分的類陣列(array-like)資料,必須是1維的(不能用DataFrame);
bins:bins是被切割後的區間(或者叫“桶”、“箱”、“面元”),有3中形式:一個int型的標量、標量序列(陣列)或者pandas.IntervalIndex 。
一個int型的標量

當bins為一個int型的標量時,代表將x平分成bins份。x的範圍在每側擴充套件0.1%,以包括x的最大值和最小值。

標量序列

標量序列定義了被分割後每一個bin的區間邊緣,此時x沒有擴充套件。

pandas.IntervalIndex

定義要使用的精確區間。

right:bool型引數,預設為True,表示是否包含區間右部。比如如果bins=[1,2,3],right=True,則區間為(1,2],(2,3];right=False,則區間為(1,2),(2,3)。
labels:給分割後的bins打標籤,比如把年齡x分割成年齡段bins後,可以給年齡段打上諸如青年、中年的標籤。labels的長度必須和劃分後的區間長度相等,比如bins=[1,2,3],劃分後有2個區間(1,2],(2,3],則labels的長度必須為2。如果指定

labels=False,則返回x中的資料在第幾個bin中(從0開始)。
retbins:bool型的引數,表示是否將分割後的bins返回,當bins為一個int型的標量時比較有用,這樣可以得到劃分後的區間,預設為False。
precision:保留區間小數點的位數,預設為3.
include_lowest:bool型的引數,表示區間的左邊是開還是閉的,預設為false,也就是不包含區間左部(閉)。
duplicates:是否允許重複區間。有兩種選擇:raise:不允許,drop:允許。

【參考】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.qcut.html

.引數:pandas.qcut(x,q,labels=None,retbins=False,precision=3,duplicates='raise')

x 要進行分組的資料,資料型別為一維陣列,或Series物件

q 組數,即要將資料分成幾組,後邊舉例說明

labels 可以理解為組標籤,這裡注意標籤個數要和組數相等

retbins 預設為False,當為False時,返回值是Categorical型別(具有value_counts()方法),為True是返回值是元組

2.3.2 任務二:對文字變數進行轉換

(1) 檢視文字變數名及種類
(2) 將文字變數Sex, Cabin ,Embarked用數值變數12345表示
(3) 將文字變數Sex, Cabin, Embarked用one-hot編碼表示

#寫入程式碼



#寫入程式碼



#寫入程式碼



2.3.3 任務三:從純文字Name特徵裡提取出Titles的特徵(所謂的Titles就是Mr,Miss,Mrs等)

#寫入程式碼



#儲存最終你完成的已經清理好的資料