Python数据分析案例篇(一)泰坦尼克号数据分析

Python泰坦尼克生还预测

Kaggle Titanic 数据分析案例

  • 背景介绍
    20世纪初,由英国白星航运公司制造的一艘巨大豪华客轮。是当时世界上最大的豪华客轮,被称为是“永不沉没的”或是“梦幻客轮”。
    泰坦尼克号是人类的美好梦想达到顶峰时的产物,反映了人类掌握世界的强大自信心。她的沉没,向人类展示了大自然的神秘力量,以及命运的不可预测。到泰坦尼克号沉没那天为止,西方世界的人们已经享受了100年的安稳和太平。科技稳定地进步,工业迅速地发展,人们对未来信心十足。泰坦尼克号的沉没惊醒了这一切。这艘“永不沉没的轮船”——埃菲尔铁塔之后最大的人工钢铁构造物,工业时代的伟大成就,因为对自然的威力掉以轻心,满不在乎,所以在第一次处女航中就沉没了。泰坦尼克号将永远让人们牢记人类的傲慢自信所付出的代价。人们永远也忘不了这幅画面:泰坦尼克号在海底昂着头,残破和污迹也掩盖不了她的高贵。这就是她的归宿。历史就这样演变成了传奇。
    好的,不要被开头这段迷惑,这真的是个不太正经的分析
    在这里插入图片描述
  • 分析目标(别被博主骗了,他就分析了几个简单的)
    根据官方给出的数据分析各个属性间的关系
    在这里插入图片描述
  • 数据来源(完全可以百度网盘见)
    https://www.kaggle.com/c/titanic
    或者在我的资源里下载
  • 数据说明
    在这里插入图片描述
  • 数据预处理
>     import pandas as pd
>     import numpy as np
>     import matplotlib.pyplot as plt
>     
>     train=pd.read_csv('/Users/a/Desktop/Titanic/train.csv')
>     test=pd.read_csv('/Users/a/Desktop/Titanic/test.csv')

#1.数据概览

> print(train.head())
> print('--------------------------------------------')
> print(test.head()) print('数据维度为:',train.shape,'  ',test.shape)
> print('--------------------------------------------')
> print('train.csv字段名为:',train.info())
> print('test.csv字段名为:',test.info())

在这里插入图片描述
#2.数据清洗

train_a=train.loc[:,[‘PassengerId’,‘Survived’,‘Pclass’,‘Sex’,‘Age’,‘SibSp’,‘Parch’,‘Fare’]]
test_a=test.loc[:,[‘PassengerId’,‘Pclass’,‘Sex’,‘Age’,‘SibSp’,‘Parch’,‘Fare’]]
print(’------------------------------------’) print(train_a.head())
print(test_a.head()) print("------------------------------------")
print(test_a.info()) print(train_a.info())

在这里插入图片描述

#填补空值,重点,敲黑板,由于实际统计时,部分信息无法采集,会出现"空值",在数据预处理时,我们会用填充空值,例如我们要建立与年龄字段’Age’相关的模型,就对"Age"中的空白字段进行填充
在这里插入图片描述

median_age=train_a[‘Age’].median()#这里取中位数,Q1:为什么不取平均值?:平均数反映的是一组数据的平均情况,容易受到个别极端值到影响;与之相比中位数反映了一组数据到一般情况,不受个别极端值影响
print(median_age)#这里计算出到值为28.0
train_a.loc[train_a[‘Age’].isnull(),‘Age’]=median_age#前面行中传入到参数表示空值,后面代表’Age’列,这一步我们将中位数填入空值
median_age2=test_a[‘Age’].median()
test_a.loc[test_a[‘Age’].isnull(),‘Age’]=median_age2

Fare=train_a[‘Fare’].mode()#取众数,填充Fare空值,为什么这里又取众数呢?票价缺失只占很小的一部分,个人理解,票价要精确到个人
Fare2=test_a[‘Fare’].mode()
train_a.loc[train_a[‘Fare’].isnull(),‘Fare’]=Fare
test_a.loc[test_a[‘Fare’].isnull(),‘Fare’]=Fare2 print(test_a.info)
print(train_a.info)

#修改数据类型,为了方便统计,我们先查看数据类型,发现Sex为object(字符串),这里我们将其转换成整型

print(train_a.dtypes) print(’--------------------’)
print(test_a.dtypes)
test_a[‘Sex’]=test_a[‘Sex’].map({‘male’:1,‘female’:0}).astype(int)
train_a[‘Sex’]=train_a[‘Sex’].map({‘male’:1,‘female’:0}).astype(int)
print(test_a.head()) print(train_a.head())

#处理完数据后,我们发现,数据中部分列可以合并,这里就需要我们进行数据重构

test_a[‘f_size’]=test_a.loc[:,‘SibSp’]+test_a.loc[:,‘Parch’]+1

train_a[‘f_size’]=train_a.loc[:,‘SibSp’]+train_a.loc[:,‘Parch’]+1
train_a[‘Single’]=0 test_a[‘Single’]=0
train_a.loc[train_a[‘f_size’]==1,‘Single’]=1
test_a.loc[test_a[‘f_size’]==1,‘Single’]=1
train_f=train_a.loc[:,[‘PassengerId’,‘Survived’,‘Pclass’,‘Sex’,‘Age’,‘Parch’,‘Fare’,‘f_size’,‘Single’]]
test_f=test_a.loc[:,[‘PassengerId’,‘Pclass’,‘Sex’,‘Age’,‘SibSp’,‘Parch’,‘Fare’,‘f_size’,‘Single’]]
print(test_f.head) print(train_f.head)

在这里插入图片描述
#作为单身狗,我还是比较关心,单身与存活率到关系,所以,先从这里开始分析
在这里插入图片描述

d=train_f[[‘Single’,‘Survived’]].groupby([‘Single’]).mean() print(d)
plt.bar([0,1],
[1-d.loc[0,‘Survived’],1-d.loc[1,‘Survived’]],
0.5,
color=‘green’,
alpha=0.5,
) plt.xticks([0,1],[‘not_alone’,‘Single’]) plt.show()

在这里插入图片描述
结果一目了然,单身存活率高,原因我想看过泰坦尼克号的人都知道,全在船头看Jack和Rose秀恩爱了,忘记要跑了,结论秀恩爱死得快!!!
在这里插入图片描述

#性别和生存率

m=train_f[[‘Sex’,‘Survived’]].groupby([‘Sex’]).mean() plt.bar([0,1],
[1-m.loc[0,‘Survived’],1-m.loc[1,‘Survived’]],
0.5,
color=‘blue’,
alpha=0.9,
) plt.xticks([0,1],[‘female’,‘male’]) plt.show()

在这里插入图片描述

#下面我们看看船舱等级和生还率的关系

c = train_f[[‘Pclass’, ‘Survived’]].groupby([‘Pclass’]).mean()
plt.bar(
[0,1,2],
[1-c.loc[1,‘Survived’],1-c.loc[2,‘Survived’],1-c.loc[3,‘Survived’]],
0.5,
color=‘r’,
alpha=0.7 )

plt.xticks([0,1,2],[1,2,3]) plt.show()

在这里插入图片描述
三等舱存活率最高,所以啊不要被万恶的资本主义腐蚀,人家三等舱还真就生存率高,生命力顽强。

emmmm依然是那个希望被赞然后肯定没人赞的菜?博主,不会唱跳rap篮球,只会没事写篇文章记录自学过程

  • 24
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Python数据分析Python Data Analysis)是指利用Python语言进行数据的处理、分析、可视化和挖掘等工作的过程。Python数据分析在数据科学、机器学习、深度学习等领域都有广泛的应用。本篇博客将介绍Python数据分析的基本流程和常用工具,以及如何利用Python进行数据分析。 一、Python数据分析的基本流程 Python数据分析的基本流程包括数据收集、数据清洗、数据分析和数据可视化四个环节。 1. 数据收集 数据收集是Python数据分析的第一步,也是最关键的一步。数据收集的方式有很多种,可以通过爬虫技术、API接口、数据库等方式获取数据。在Python中,我们可以使用requests库进行网络请求,使用BeautifulSoup库进行网页解析,使用pandas库进行数据读取等操作。 2. 数据清洗 数据清洗是指对数据进行处理,使得数据符合分析需求。数据清洗的过程包括数据去重、缺失值处理、异常值处理等。在Python中,我们可以使用pandas库进行数据清洗,例如使用drop_duplicates()函数进行去重,使用fillna()函数进行缺失值处理,使用replace()函数进行异常值处理。 3. 数据分析 数据分析Python数据分析的核心环节,包括数据统计、数据挖掘、机器学习等。在Python中,我们可以使用numpy库进行数据统计,使用scikit-learn库进行机器学习等操作。例如,使用numpy库中的mean()函数进行平均值计算,使用scikit-learn库中的KMeans算法进行聚类分析等。 4. 数据可视化 数据可视化是指通过图表、图像等方式展示数据分析结果。数据可视化能够更加清晰地呈现数据的特征和规律,方便我们更好地进行数据分析和决策。在Python中,我们可以使用matplotlib库进行图表绘制,使用seaborn库进行高级可视化等操作。 二、Python数据分析常用工具 1. pandas pandas是Python的一个数据处理库,提供了一系列的数据结构和函数,能够帮助我们方便地进行数据清洗、数据分析等操作。pandas库中最常用的数据结构是Series和DataFrame,可以使用这些数据结构进行数据读取、数据清洗、数据分析等操作。 2. numpy numpy是Python的一个科学计算库,提供了一系列的数学函数和数组操作,能够帮助我们方便地进行数据分析。numpy库中最常用的函数包括mean()、std()、var()等,可以用来进行数据统计和描述性分析。 3. matplotlib matplotlib是Python的一个图表库,能够帮助我们方便地绘制各种图表,例如散点图、线图、柱状图等。使用matplotlib库,我们可以将数据的分析结果可视化,更加直观地呈现数据的规律和特点。 4. seaborn seaborn是Python的一个高级可视化库,能够帮助我们方便地进行数据可视化。seaborn库提供了一系列的图表类型和主题样式,能够帮助我们制作出更加美观和专业的图表。 5. scikit-learn scikit-learn是Python的一个机器学习库,提供了一系列的机器学习算法和工具,能够帮助我们进行数据挖掘和预测分析。scikit-learn库中包括分类、回归、聚类、降维等多种机器学习算法,能够满足我们不同的数据分析需求。 三、如何利用Python进行数据分析 下面以一个案例来介绍如何利用Python进行数据分析案例:某电商平台销售数据分析 某电商平台在过去一年内的销售数据如下表所示: | 时间 | 月销售额 | 平均订单量 | | ----------- | ---------- | ---------- | | 2020-01-01 | 1000000 | 500 | | 2020-02-01 | 1200000 | 600 | | 2020-03-01 | 1400000 | 700 | | 2020-04-01 | 1600000 | 800 | | 2020-05-01 | 1800000 | 900 | | 2020-06-01 | 2000000 | 1000 | | 2020-07-01 | 2200000 | 1100 | | 2020-08-01 | 2400000 | 1200 | | 2020-09-01 | 2600000 | 1300 | | 2020-10-01 | 2800000 | 1400 | | 2020-11-01 | 3000000 | 1500 | | 2020-12-01 | 3200000 | 1600 | 1. 数据读取 首先,我们需要将数据读取到Python中。这里我们使用pandas库中的read_csv()函数进行数据读取。 ```python import pandas as pd df = pd.read_csv('sales_data.csv') ``` 2. 数据清洗 接下来,我们需要对数据进行清洗,使得数据符合分析需求。这里我们发现数据已经比较完整,没有重复值和缺失值,因此不需要进行数据清洗。 3. 数据分析 接下来,我们需要对数据进行分析,了解销售数据的特点和规律。这里我们使用numpy库进行数据统计和分析。 ```python import numpy as np # 计算平均月销售额和平均订单量 avg_sales = np.mean(df['月销售额']) avg_orders = np.mean(df['平均订单量']) # 计算销售额的标准差和方差 std_sales = np.std(df['月销售额']) var_sales = np.var(df['月销售额']) # 计算订单量的标准差和方差 std_orders = np.std(df['平均订单量']) var_orders = np.var(df['平均订单量']) print('平均月销售额:', avg_sales) print('平均订单量:', avg_orders) print('销售额的标准差:', std_sales) print('销售额的方差:', var_sales) print('订单量的标准差:', std_orders) print('订单量的方差:', var_orders) ``` 输出结果如下: ``` 平均月销售额: 2266666.6666666665 平均订单量: 1050.0 销售额的标准差: 752928.8704090519 销售额的方差: 566666666666.6666 订单量的标准差: 433.0127018922193 订单量的方差: 187500.0 ``` 由上述结果可知,电商平台的平均月销售额为2266666.67元,平均订单量为1050个。销售额的标准差为752928.87元,订单量的标准差为433.01个。 4. 数据可视化 最后,我们使用matplotlib库进行数据可视化,将销售数据的规律和特点呈现出来。 ```python import matplotlib.pyplot as plt # 绘制月销售额折线图 plt.plot(df['时间'], df['月销售额']) plt.xlabel('时间') plt.ylabel('月销售额') plt.title('月销售额趋势图') plt.show() # 绘制平均订单量折线图 plt.plot(df['时间'], df['平均订单量']) plt.xlabel('时间') plt.ylabel('平均订单量') plt.title('平均订单量趋势图') plt.show() ``` 输出结果如下: ![月销售额趋势图](https://i.imgur.com/P8wzEaG.png) ![平均订单量趋势图](https://i.imgur.com/iZz9ZiI.png) 由上述图表可知,电商平台的销售额和订单量均呈现出逐月增长的趋势。其中,销售额在7、8、9月份增长较为迅速,订单量在9、10、11月份增长较为迅速。 总结 本篇博客介绍了Python数据分析的基本流程和常用工具,以及如何利用Python进行数据分析。在实际应用中,Python数据分析能够帮助我们更好地理解和分析数据,从而做出更好的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值