iT邦幫忙

2022 iThome 鐵人賽

DAY 5
1

如果用 Python 處理鐵達尼號的資料會是什麼樣子?

前幾篇文章的內容中我們已經利用 Excel 來處理鐵達尼號的資料集,試著判斷出不同的標頭資料,也進行了樣本特徵異常值的檢測,也利用的資料集來做圖表分析,有了這些步驟我們已經能夠完成大部分的報告了。基本上目前除了模型預測沒有完成外,其他都已經可以有很棒的結果。

1.問題定義 (Definition)
2.獲取數據 (Acquiredata)
3.清理數據 (Clean data)
4.分析定義 (Analyze and identify)
5.(x)模型預測 (Model predict)
6.可視化圖 (Visualize)
7.提交結果 (Results)

那麼接下來,我們試著我們試著用 python 來說明鐵達尼號的資料集

推薦開發平台 Deepnote(Jupyter)

對於從零開始的人我推薦 Deepnote 進行開發,Deepnote是一個免配置的Jupyter Notebook 工具,他是為瀏覽器而設計的線上開發平台,可以在任何平台(Windows、Mac、Linux)上使用,註冊免費而且又具有自動更新的功能。功能有點類似 Google Colab,但是他的線上協作更強,只需要連結就能夠和別人共享程式進行同時編輯,詳細的操作資訊可以在網路上尋找更多資源。
https://ithelp.ithome.com.tw/upload/images/20230601/20140740JmoQvmntBU.png

先看看鐵達尼號的資料集長什麼樣子 DataSet

開始之前我們先 import 一些參數,這些東西就像是工具一樣,我們後續教學上會用到。以 pandas 那段程式碼來說,他的意思是我們先輸入 pandas 這個套件,並且簡寫名稱為 pd。

# 資料分析用
import pandas as pd
import numpy as np
import random as rnd

# 資料視覺化用
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

如果我們利用 Excel 開啟,在鐵達尼號的資料集中可以看見有許多不同的資料標題,在這樣的情況下我們資料標題我們能夠從標頭位置去做判斷,而同時你也可以使用 Python 來讀取這項資料集,而操作的方法在這:

import pandas as pd
train_df = pd.read_csv('../input/train.csv')
train_df

呼叫剛剛 import 的 panda 並利用 read_csv 這個方法來讀取 input 資料夾裡面的 train.csv 檔案。
https://ithelp.ithome.com.tw/upload/images/20230601/20140740ni76IpZnyR.png

而在此可以感受到 Excel 跟 Python 第一件最大的不同就是 Python 可以利用原始碼來快速抓出資料集的標頭。我們只需要輸入下面程式,可以直接匯出標頭來做程式化選取,得到['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']

print(train_df.columns.values)

https://ithelp.ithome.com.tw/upload/images/20230601/20140740wtOEvtt4sp.png

檢測樣本特徵異常值 Correcting

在前一篇提到的工作流程階段(Workflow stages)中的糾正(Correcting)有提到,在資料型態中我們可以檢測我們的樣本或特徵中的任何異常值。所謂的異常職包含了哪些特徵是空白、無效或空值?這些將需要提前先確認,在 Python 中我們可以利用 .info() 或是 .describe() 這兩種不同的函數來進行特徵異常值檢測。

  • python.info()
    現在這部分我們用 Python 快速查看,利用 Pandas Library 中提供的 .info() 方法快速找出缺值。簡單來說 info() 這個方法就是定義出關於DataFrame的信息,這些信息包含了列的數量、列的標籤、列的數據類型、內存使用情況、範圍索引和每一列的「非空值」單元格數量等等的,我們直接執行一次看看。
train_df.info()

我們可以快速得出 RangeIndex: 891 entries 也就是樣本總數為 891 人,而且 Data columns (total 12 columns) 也就是一共有 12 列資料標頭。繼續看下去除了資料型態外,可以注意到有三個數值的非空值單位格不是 891人,分別為 Age(714)、Cabin(204)。
https://ithelp.ithome.com.tw/upload/images/20230601/20140740PpsAeau0xN.png

Python.describe()

在整體樣本中是否生存(Survived)是一個存活(1)與死亡(0)的分類特徵,在資料集中有 342 人是存活(1)下來的約佔 38% 的樣本數,代表實際乘客生存率為 32%,我們可以利用 Pandas 中的 describe() 方法回傳對於 DataFrame 中數據的描述更進一步了解,這種方法快速的描述了每一列資料集的count, mean, std 與百分位數級距。

train_df.describe()

我可以看出在整體樣本中是否生存(Survived)的分類特徵平均值(mean)為 38%,與剛剛計算相同。此外高(>75%) 的乘客沒有和父母或孩子一起旅行,且近 30% 的乘客有兄弟姐妹和/或配偶在船上。我們也能注意到票價差異很大有少部分的乘客票價(Fare)高達(Max)512美元。而最後年齡在 65-80 歲之間的老年乘客很少小於 1%。
https://ithelp.ithome.com.tw/upload/images/20230601/20140740oTogWff29p.png

謝謝大家的觀看,但歷史的痕跡會持續下去

今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。


Hi'Jerry均

Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。

謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。


上一篇
Ɖ4-根/ 鐵達尼號的 Excel 樞紐分析表
下一篇
Ɖ6-根/ 鐵達尼號的 Python 的樞紐分析應用
系列文
先別急著學 Python | The Secret to Success in Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言