动手学数据分析-01 第一章:数据载入及初步观察

该博客通过实例介绍了如何使用Python进行数据分析,以泰坦尼克号数据集为例,进行了数据加载、初步观察、缺失值检查、数据筛选、排序、新特征创建等步骤。通过分析发现,家庭成员较多的乘客生存率较高,年龄小且船票费用高的乘客(A组)生存率高于费用低年龄大的(B组)。
摘要由CSDN通过智能技术生成

内容说明

这门课程得主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作。知道了课程的目的之后,我们接下来我们要正式的开始数据分析的实战教学,完成kaggle上泰坦尼克的任务,实战数据分析全流程。 这里有两份资料: 教材《Python for Data Analysis》和 baidu.com & google.com(善用搜索引擎)
学习地址:
https://github.com/datawhalechina/hands-on-data-analysis

载入数据

导入包

import numpy as np
import pandas as pd
import os

利用pandas载入在kaggle上下载到的数据

df=pd.read_csv('train')
df.head()

out

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale2210A/5 211717.25nanS
1211Cumings, Mrs. John Bradley (Florence Briggs Thayer)female3810PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale2600STON/O2. 31012827.925nanS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female351011380353.1C123S
4503Allen, Mr. William Henrymale35003734508.05nanS

初步观察

df_trian.isnull().sum()

out

PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

查看数据名称

查看DataFrame数据的每列的名称

df.columns()

out

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

筛选数据

我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
使用query方法筛选符合要求的数据

df.query('Age<=10')

out
在这里插入图片描述

对数据排序

利用船票价格进行排序

df.sort_values('Fare')

out
在这里插入图片描述
对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从这个数据中你可以分析出什么?

res=df.sort_values(['Fare','Age'],ascending=[True,False])
res.tail(200).groupby('Survived')[['PassengerId','Fare','Age']].agg({'PassengerId':'count','Fare':'mean','Age':'mean'})

out
在这里插入图片描述

res.head(200).groupby('Survived')[['PassengerId','Fare','Age']].agg({'PassengerId':'count','Fare':'mean','Age':'mean'})

out
在这里插入图片描述
对表格进行费用正序,年龄逆序排序,然后分别计算前200人和后两百人的数据。将船费高且年龄小的组称为A组,另外一组称为B组。可以发现,A组的生存人数较多,而B组生存人数较少,同时船费和年龄似乎成负相关,即船费越高,年龄往往会更小。

添加特征

通过泰坦尼克号数据计算出在船上最大的家族有多少人(‘兄弟姐妹个数’+‘父母子女个数’)

df['Family']=df['Sibsp']+df['Parch']
df['Family']

out

0      1
1      1
2      0
3      1
4      0
      ..
886    0
887    0
888    3
889    0
890    0
Name: Family, Length: 891, dtype: int64

对是否存活进行分组,然后求平均值

df.groupby('Survived')['Family'].mean()

out:

Survived
0    0.883424
1    0.938596
Name: Family, dtype: float64

可以看到,存活的人拥有的家庭人数大于遇难的人的家庭人数,我们可以推断,在灾难中,有家庭的人更倾向于互相帮助,所以有更大的机会存活。

总结

学习了对数据进行载入,然后对数据进行探索,包括排序以及运算后得到新指标等操作,并且试着对数据的运算结果进行自己的分析与解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值