目錄
??1.數據集(部分數據)
?? 2、導入數據集與必要模塊
?? 3.數據預處理
1?? isnull函數查看有無缺失值
2??fillna函數填充缺失值
?? Age字段使用平均值填充缺失值
?? Embarked字段填充缺失值
3?? 刪除缺失值較多的字段
?? 4.數據可視化
1?? distplot函數結合了直方圖和核密度估計圖來展示數據的分布特征
2?? countplot函數繪制條形圖,顯示分類變量的觀察計數
3?? boxenplot函數繪制箱線圖
4?? violinplot函數繪制小提琴圖
5?? 對年齡進行分級,分開小孩和老人的數據
?? 對分級后的年齡進行可視化
?? 分析乘客年齡與生還乘客之間的關系
??1.數據集(部分數據)
字段名稱 | 含義說明 |
Survived | 乘客是否獲救,Key:0=沒獲救,1=已獲救 |
Pclass | 乘客船艙等級(1/2/3三個等級艙位) |
Name | 乘客姓名 |
Sex | 性別 |
Age | 年齡 |
SibSp | 乘客在船上的兄弟姐妹/配偶數量 |
Parch | 乘客在船上的父母/孩子數量 |
Ticket | 船票號 |
Fare | 船票價 |
Cabin | 客艙號碼 |
Embarked | 登船的港口 |
?? 2、導入數據集與必要模塊
# 1.導入必要的模塊
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號
%matplotlib inline# 2.導入數據
titanic = pd.read_csv(r"C:/XXX/xxx/Documents/mycrawlers/數據分析與可視化/實驗六——泰坦尼克號/titanic.csv")# 3.查看前5行數據
titanic.head()
?? 3.數據預處理
1?? isnull函數查看有無缺失值
# 查看有無缺失值
titanic.isnull().sum()
這里結合了sum方法,對字段的缺失值的個數進行求和
從上述結果可見,Cabin(客艙號碼)、Embarked(登船的港口)、Fare(船票價)、Age(年齡)、Survived(乘客是否獲救)字段中均有缺失值,而Cabin和Survived是需要考慮實際的情況,從而沒有辦法對缺失值進行填充,因此我們對Age字段按照平均值的方式對其進行填充,作為一個參考
2??fillna函數填充缺失值
fillna(value,method,axis,inplace,limit,downcast)
字段 | 數據類型 | 含義 |
value | dict or series or dataframe | 用于填充缺失值的值。如果傳遞的是標量,那么整個對象中的所有缺失值都會被這個標量替換。如果傳遞的是字典,那么字典的鍵應該是列名,值則是用于替換該列缺失值的值。如果傳遞的是 Series 或 DataFrame,則它們的索引必須和原對象的索引對齊,以便進行按位置的替換 |
method | str | 用于填充缺失值的方法。 'backfill' 或 'bfill':使用下一個有效值進行填充(向后填充) 'pad' 或 'ffill':使用前一個有效值進行填充(向前填充) None:不進行任何填充,僅返回原始對象 |
axis | int or str | 確定沿著哪個軸進行填充。0 或 'index' 表示按行(即沿著水平軸),1 或 'columns' 表示按列(即沿著垂直軸) |
inplace | bool | 默認為 False,如果為 True,則直接修改原始對象而不返回新的對象 |
limit | int | 如果 method 不是 None,則此參數用于限制連續填充的最大數量。例如,如果 limit=1,則最多只填充一個缺失值 |
downcast | dict or str | 將可能更大的數據類型向下轉換為可能更小的數據類型,以節省內存。例如,如果某個列是 float64 類型,但所有值都是整數,那么可以將其轉換為 int64 類型 |
?? Age字段使用平均值填充缺失值
# 1.求age這一列的平均值
mean = titanic['Age'].mean() # 2.查看平均值
print(mean)# 3.用均值進行缺失值的填充
titanic['Age'] = titanic['Age'].fillna(mean)# 4.統計缺失值
titanic.isnull().sum()
從上圖的結果可知,Age字段沒有缺失值,因此缺失值填充成功,而Embarked字段也可以進行填充
?? Embarked字段填充缺失值
- 使用value_counts來統計登船地點(S,C,Q)的人數
# 1.統計登船地點(S,C,Q)的人數
titanic['Embarked'].value_counts()# 2.得到的結果為
S 914
C 270
Q 123
Name: Embarked, dtype: int64
- 對登船地點進行缺失值的填充(填充為S)
# 1.對登船地點進行缺失值的填充(填充為S)
titanic['Embarked'] = titanic['Embarked'].fillna("S")# 2.統計Embarked字段的缺失值
titanic['Embarked'].isnull().sum()# 3.得到的結果為
0
3?? 刪除缺失值較多的字段
# 1.刪除缺失值較多的字段
del titanic['Cabin']# 2.查看數據的前五行信息
titanic.head()