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)