前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据分析可视化--Titanic

Python数据分析可视化--Titanic

作者头像
北山啦
发布2022-11-27 11:45:17
3450
发布2022-11-27 11:45:17
举报
文章被收录于专栏:北山啦的博客

Python数据分析可视化–Titanic

这篇文章主要介绍泰坦尼克幸存者问题的数据处理以及可视乎部分,关于机器学习部分: 机器学习2:KNN决策树探究泰坦尼克号幸存者问题

文章目录

代码语言:javascript
复制
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.pylab import style
style.use('ggplot')
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC,LinearSVC
import warnings
warnings.filterwarnings("ignore")

导入数据

代码语言:javascript
复制
df = pd.read_csv('train.csv',index_col=None)
test_df = pd.read_csv('test.csv')

数据探索

判断是否存在缺失值

代码语言:javascript
复制
np.any(pd.isnull(df)) 
代码语言:javascript
复制
True
代码语言:javascript
复制
np.any(df["Embarked"].isnull())
代码语言:javascript
复制
True
代码语言:javascript
复制
df.describe()

PassengerId

Survived

Pclass

Age

SibSp

Parch

Fare

count

891.000000

891.000000

891.000000

714.000000

891.000000

891.000000

891.000000

mean

446.000000

0.383838

2.308642

29.699118

0.523008

0.381594

32.204208

std

257.353842

0.486592

0.836071

14.526497

1.102743

0.806057

49.693429

min

1.000000

0.000000

1.000000

0.420000

0.000000

0.000000

0.000000

25%

223.500000

0.000000

2.000000

20.125000

0.000000

0.000000

7.910400

50%

446.000000

0.000000

3.000000

28.000000

0.000000

0.000000

14.454200

75%

668.500000

1.000000

3.000000

38.000000

1.000000

0.000000

31.000000

max

891.000000

1.000000

3.000000

80.000000

8.000000

6.000000

512.329200

关系探索

仓位和存活率关系

代码语言:javascript
复制
df[['Pclass','Survived']].groupby(by=["Pclass"]).mean().sort_values(by="Survived",ascending=False)

Survived

Pclass

1

0.629630

2

0.472826

3

0.242363

从表可知,仓位高低与存活率存在一定的关系

性别和存活率关系

代码语言:javascript
复制
df['Sex'].value_counts()
代码语言:javascript
复制
male      577
female    314
Name: Sex, dtype: int64
代码语言:javascript
复制
df[['Sex','Survived']].groupby(by=["Sex"]).mean().sort_values(by="Survived",ascending=False)

Survived

Sex

female

0.742038

male

0.188908

从表可知,女性的存活率明显高于男性,性别与存活率存在一定的关系

兄弟姐妹和孩子对于存活关系

代码语言:javascript
复制
df[['SibSp','Survived']].groupby(by=["SibSp"]).mean().sort_index(ascending=False)

Survived

SibSp

8

0.000000

5

0.000000

4

0.166667

3

0.250000

2

0.464286

1

0.535885

0

0.345395

代码语言:javascript
复制
df[['Parch','Survived']].groupby(by=["Parch"]).mean().sort_index(ascending=False)

Survived

Parch

6

0.000000

5

0.200000

4

0.000000

3

0.600000

2

0.500000

1

0.550847

0

0.343658

兄弟姐妹和孩子对于存活关系不大

数据可视化分析

  1. 年龄和存活率关系
代码语言:javascript
复制
g1 = sns.FacetGrid(df,col="Survived")
g1.map(plt.hist,"Age",bins=20)
plt.show()
在这里插入图片描述
在这里插入图片描述
  1. 船票等级和存活率关系
代码语言:javascript
复制
g2 = sns.FacetGrid(df,col="Survived",row="Pclass")
g2.map(plt.hist,"Age")
plt.show()
在这里插入图片描述
在这里插入图片描述

可以看到,船票等级和存活率存在关系

  1. 复合关系
代码语言:javascript
复制
g3 = sns.FacetGrid(df,row="Embarked",height=3,aspect=1.6)
g3.map(sns.pointplot,"Pclass",'Survived','Sex',palette="deep",hue_order=["female","male"])
g3.add_legend()
plt.show()
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
g4 = sns.FacetGrid(df,row="Embarked",col="Survived",height=3,aspect=1.6)
g4.map(sns.barplot,'Sex','Fare',palette="deep",hue_order=["female","male"])
g4.add_legend()
plt.show()
在这里插入图片描述
在这里插入图片描述
  • 票价和存活率存在关系,登船口和存活率也存在关系

数据预处理

  • 对于甲板层的分布对与于获救的分析,过于复杂,这里就不探究了
代码语言:javascript
复制
df = df.drop(["Ticket","Cabin"],axis=1)
  • 缺失值填充
代码语言:javascript
复制
df['Age'].fillna(method="pad",inplace=True)
df["Embarked"].fillna(method="pad",inplace=True)
  • 分类数据转化
代码语言:javascript
复制
df["Embarked"]
代码语言:javascript
复制
0      S
1      C
2      S
3      S
4      S
      ..
886    S
887    S
888    S
889    C
890    Q
Name: Embarked, Length: 891, dtype: object
代码语言:javascript
复制
"""性别转换"""
df["Sex"] = df["Sex"].map({"female":1,"male":0}).astype(int)
#df.loc[df['Sex'] == 'male', 'Sex'] = 1       # 用数值1来代替male,用0来代替female
#df.loc[df['Sex'] == 'female', 'Sex'] = 0
"""登船口转换"""
df["Embarked"] = df["Embarked"].map({"S":0,"C":1,"Q":2}).astype(int)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python数据分析可视化–Titanic
    • 文章目录
    • 导入数据
    • 数据探索
      • 判断是否存在缺失值
        • 关系探索
          • 仓位和存活率关系
          • 性别和存活率关系
          • 兄弟姐妹和孩子对于存活关系
          • 数据可视化分析
        • 数据预处理
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档