[机器学习]第三章Pandas实战泰坦尼克数据处理

前面已经写到了numpy和pandas的基本操作,这篇用泰坦尼克伤亡的数据做一次简单的数据处理,主要用到了pandas数据库,数据的csv文件大家可以去这里下载,密码:vptu,好了接下来开始正题:

1.数据导入查看前五条
import pandas as pd
import numpy as np
titanic_survival = pd.read_csv("titanic_train.csv")
titanic_survival.head() #查看前五条
2.查看年龄以及年龄为空的情况
age = titanic_survival["Age"] #查看年龄总览
age_is_null = pd.isnull(age)
age_null_true = age[age_is_null] #查看年龄为空的总览
age_null_count = len(age_null_true) #计算年龄为空的数量
3.计算平均年龄
# mean_age = sum(titanic_survival["Age"]) / len(titanic_survival["Age"]) 由于有空缺值所以我们不能用这种方式获取年龄的平均值
good_ages = titanic_survival["Age"][age_is_null == False]
correct_mean_age = sum(good_ages) / len(good_ages)
correct_mean_age #这样我们就可以获取平均年龄了 

#也可以这样做
correct_mean_age = titanic_survival["Age"].mean()
correct_mean_age #会帮助我们去掉NaN的值
4.计算不同船舱的存活率(Pclass字段分为1,2,3)
in:passenger_survival = titanic_survival.pivot_table(index="Pclass", values="Survived", aggfunc=np.mean) #计算Pclass与存活率的关系
out:            Survived
      Pclass          
         1       0.629630
         2       0.472826
         3       0.242363
#可见高等仓和低等仓的存活率还确实存在差别
5.计算不同船舱与年龄的关系
in:port_stats = titanic_survival.pivot_table(index="Embarked", values=["Fare","Survived"], aggfunc=np.sum)
out:                Age
       Pclass           
 		 1       38.233441
		 2       29.877630
		 3       25.140620
#可见年龄越大越有钱
6.计算不同登船位置的总船票价格和总存活人数的关系
in:port_stats = titanic_survival.pivot_table(index="Embarked", values=["Fare","Survived"], aggfunc=np.sum)
out:   			     Fare       Survived
	Embarked                      
		C         10072.2962        93
		Q          1022.2543        30
		S         17439.3988       217
7.数据的空缺值删除处理
# 删除含有空数据的全部行
new_titanic_survival = titanic_survival.dropna()
# 可以通过axis参数来删除含有空数据的全部列
new_titanic_survival = titanic_survival.dropna(axis=1)
# 可以通过subset参数来删除在age和sex中含有空数据的全部行
new_titanic_survival = titanic_survival.dropna(subset=["age", "sex"])
8.找到我们想要的数据loc,iloc的使用
# 输出新表的前五行
m = new_titanic_survival.iloc[:5,:]
# 输出新表的第四行,注意仍然从0开始索引,所以在参数中填的是3而不是4
n = new_titanic_survival.iloc[3,:]
# 假如我想取出新表中第一行,第一列的那个值
m = new_titanic_survival.iloc[0,0]
# 等价于
n = new_titanic_survival.loc[3,"pclass"]
# 也可以这样找我们想要的值
row_index_83_age = titanic_survival.loc[83,"Age"]
row_index_1000_pclass = titanic_survival.loc[766,"Pclass"]
9.让数据根据年龄排序,并且重置我们的索引
#按照年龄的降序排列
new_titanic_survival = titanic_survival.sort_values("Age",ascending=False)
#直接按照这个顺序重置我们的索引
itanic_reindexed = new_titanic_survival.reset_index(drop=True)
10.apply的使用
#定义一个提取第100条数据的方法
def hundredth_row(column):
    hundredth_item = column.iloc[99]
    return hundredth_item
#使用这个方法
hundredth_row = titanic_survival.apply(hundredth_row)
#定义一个计算所有字段为空数量的方法
def not_null_count(column):
    column_null = pd.isnull(column)
    null = column[column_null]
    return len(null)
#使用这个方法
column_null_count = titanic_survival.apply(not_null_count)
11.将船舱由A、B、C、NAN变为First Class、Second Class、Third Class、Unknown
def which_class(row):
    pclass = row['Pclass']
    if pd.isnull(pclass):
        return "Unknown"
    elif pclass == 1:
        return "First Class"
    elif pclass == 2:
        return "Second Class"
    elif pclass == 3:
        return "Third Class"
classes = titanic_survival.apply(which_class, axis=1)
12.将年龄以18分界为minor,adult以及unknown
def generate_age_label(row):
    age = row["Age"]
    if pd.isnull(age):
        return "unknown"
    elif age < 18:
        return "minor"
    else:
        return "adult"
age_labels = titanic_survival.apply(generate_age_label, axis=1)
13.生成一个和年龄有关的透视表,查看不同年龄段生存情况
titanic_survival['age_labels'] = age_labels
age_group_survival = titanic_survival.pivot_table(index="age_labels", values="Survived")

好了这次先分享到这里,都是比较简单的操作,大家有问题可以在评论里提出来一起讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值