泰坦尼克號(hào)船員獲救預(yù)測(cè)學(xué)習(xí)筆記

import numpy as np

import pandas as pd

titanic_survival = pd.read_csv("train.csv")

print(titanic_survival.head())

print("********************************")

age = titanic_survival["Age"]

print(age.loc[0:10]) # 顯示age數(shù)據(jù)的0——10行

print("********************************")

#用.isnull()對(duì)缺失值進(jìn)行處理。若當(dāng)前的值為一個(gè)缺失值,則返回true,否則返回false

ageIsNull = pd.isnull(age)

print(ageIsNull)

print("********************************")

#將ageIsNull的值為true的留下來,把a(bǔ)geIsNull值為false的過濾掉

ageTrue = age[ageIsNull]

print(ageTrue) #打印所有的缺失值

print("********************************")

ageCount = len(ageTrue) # 打印缺失值的個(gè)數(shù)

print("age屬性缺失值的個(gè)數(shù): ", ageCount)

print("********************************")

# 處理缺失值可以直接過濾缺失值

good_ages = titanic_survival["Age"][ageIsNull == False]

# print(good_ages)

correct_mean_age = sum(good_ages) / len(good_ages)

print("平均年齡 = ",correct_mean_age)

print("********************************")

# 直接用pandas中提供的mean()方法來處理

correct_mean_age = titanic_survival["Age"].mean()

print("用mean()得到的平均年齡 = ",correct_mean_age)

print("********************************")

# 用pandas自帶的函數(shù).pivot_table()來統(tǒng)計(jì)船艙等級(jí)與平均票價(jià)的關(guān)系

# .pivot_table()相當(dāng)于一個(gè)數(shù)據(jù)透視表,也相當(dāng)于一個(gè)量與其他量之間關(guān)系的一個(gè)函數(shù)

passenger_classes = titanic_survival.pivot_table(index="Pclass", values = "Fare", aggfunc = np.mean)

print(passenger_classes)

print("********************************")

# 用.pivot_table()求每類船艙對(duì)應(yīng)的平均存活率

passenger_survical = titanic_survival.pivot_table(index = "Pclass",values = "Survived",aggfunc = np.mean)

print(passenger_survical)

print("********************************")

# 用.pivot_table()看不同的登船地點(diǎn)(C,Q,S)的總的票價(jià)和總的獲救人數(shù)

port_stats = titanic_survival.pivot_table(index = "Embarked",values = ["Fare","Survived"],aggfunc = np.sum)

print(port_stats)

print("********************************")

#用.dropna扔掉具有缺失值的行

titanic_survival.head(7)

new_titanic_survival = titanic_survival.dropna(axis = 0,subset = ["Age","Sex"])

#看Age和Sex這兩列有沒有缺失值的,如果有,就把具有缺失值的這行數(shù)據(jù)扔掉。

titanic_survival.head(7)

print("********************************")

# 如何取確定位置上的一個(gè)數(shù)據(jù) 行號(hào)+列名

row_index_83_age = titanic_survival.loc[83,"Age"]

row_index_766_pclass = titanic_survival.loc[766,"Pclass"]

print("第83行的age = ",row_index_83_age)

print("第766行的pclass = ",row_index_766_pclass)

print("********************************")

# 用.sort_values()進(jìn)行數(shù)據(jù)的重新排序,并用.reset_index()重置排序后的index值(即行號(hào))

new_titanic_survival = titanic_survival.sort_values("Age",ascending = False)? ? #根據(jù)“Age”的大小逆序排列。

print(new_titanic_survival[0:10])? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#打印未進(jìn)行.reset_index時(shí)的數(shù)據(jù)前10行

titanic_reindexed = new_titanic_survival.reset_index(drop = True)

print(titanic_reindexed.loc[0:10])

new_titanic_survival[0:10]

print("********************************")

# apply(自定義函數(shù)名) 的功能

#定義一個(gè)新的函數(shù)hundredth_row,用來返回第100行數(shù)據(jù)

def hundredth_row(column):

? ? hundredth_item = column.loc[99]

? ? return hundredth_item

hundredth_row = titanic_survival.apply(hundredth_row)? ?#將新定義好的函數(shù)apply一下

print(hundredth_row)

print("********************************")

#返回所有屬性缺失值的個(gè)數(shù)

def isnull_count(column):

? ? column_null = pd.isnull(column)? ? ? ? #返回值是true或flase

? ? null = column[column_null]? ? ? ? ? ? ?#缺失值列表

? ? return len(null)

column_null_count = titanic_survival.apply(isnull_count)

print(column_null_count)

print("********************************")

# 將年齡離散化,在本實(shí)例數(shù)據(jù)集上的“Age”是一個(gè)連續(xù)的值,這里以18為界限,將其離散化。

def generate_age_label(row):

? ? age = row["Age"]

? ? if pd.isnull(age):

? ? ? ? return "Unknow"

? ? elif age < 18:

? ? ? ? return "minor"

? ? else:

? ? ? ? return "adult"

age_labels = titanic_survival.apply(generate_age_label, axis = 1)

print(age_labels)

print("********************************")

# 利用上邊的自定義函數(shù),使用.pivot_table()函數(shù)得到年齡階段與獲救率之間的關(guān)系。

titanic_survival["age_labels"] = age_labels? ? ? #將上一個(gè)里邊返回的關(guān)于age_labels的數(shù)據(jù)組合成數(shù)據(jù)的一列

#得到年齡階段與存活率之間的關(guān)系

age_group_survival = titanic_survival.pivot_table(index = "age_labels",values = "Survived")

print(age_group_survival)

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

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

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