精华内容
下载资源
问答
  • 数据分析——泰坦尼克号乘客数据集
    千次阅读
    2022-03-15 20:09:15

    数据分析——泰坦尼克号数据集(一)

    泰坦尼克号乘客数据:https://www.kaggle.com/c/titanic/overview
    Datawhale开源课程:https://github.com/datawhalechina/hands-on-data-analysis

    一、数据载入以及初步观察

    1.1. 导入库

    import numpy as np
    import pandas as pd
    

    1.2. pd.read_csv和pd.read_table读取

    # pd.read_csv()
    data = pd.read_csv('train.csv')
    data0 = pd.read_csv('E:/MyPython/train.csv')
    # pd.read_table()读取
    data1 = pd.read_table('train.cav',sep = ',') # read_table默认分隔符是‘\t’
    

    1.3. chunk分块读取

    chunker = pd.read_csv('train.csv', chunksize=1000)
    #读取方式一
    chunker.get_chunk()
    #读取方式二
    for chunk in chunker:
        print(chunk)
    

    1.4. 修改数据表头

    # 将表头改成中文,索引改为乘客ID
    data = pd.read_csv('train.csv', 
                     names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄',
                            '兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],
                     index_col='乘客ID')
    data.head()
    

    1.5. 读取数据基本信息及判断是否为空

    # 读取基本信息
    data.info()
    # 观察表格前十行
    data.head(10) # data.head()默认为前5
    # 观察表格后15行
    data.tail(15) 
    # 判断数据是否为空
    data.isnull()
    

    1.6. 保存数据

    data.to_csv('trainchinese.csv')
    

    二、Pandas 基础

    2.1. 查看数据具体信息

    # 查看列名
    data.columns
    # 查看Cabin所有值
    data['Cabin'].head()
    # 或者 data.Cabin.head()
    

    2.2. 删除指定的列

    # 方法一
    del data['a']
    #方法二
    data.drop(['a'], axis=1, inplace=True)
    # inplace=True, 直接从内部删除
    
    # 若只想隐藏指定的列
    data.drop(['a'],axis=1)
    

    2.3. 选择指定的列并查看

    # 筛选年龄小于10岁
    data[data["Age"]<10]
    # 筛选Fare大于7小于70
    data[(data["Fare"]>10) & (df["Fare"]<50)]
    # 筛选Fare小于7大于70
    data[(data["Fare"]>10) | (df["Fare"]<50)]
    
    # 使用loc、iloc、reset_index()选择指定列
    # reset_index()
    midage0 = data.reset_index(drop=True)
    # loc
    midage1 = data.loc[[100],['Pclass','Sex','Name']]
    # iloc
    midage2 = data.iloc[[100],[2,3,4]]
    

    三、探索性数据分析

    3.1. 对数据进行排序

    '''导入数据为trainchinese.csv'''
    # 根据票价和年龄两列进行排序
    data0 = data.sort_values(by=['票价', '年龄'], ascending=False)
    data0.head()
    '''
    # 行索引升序
    data.sort_index()
    # 列索引升序
    data.sort_index(axis = 1)
    # 列索引降序
    data.sort_index(axis = 1,ascending = False)
    '''
    

    3.2. Pandas计算

    # 计算船上各个家族
    data1 = data['兄弟姐妹个数'] + data['父母子女个数']
    max(data1) # 最大值
    min(data1) # 最小值
    mean(data1) # 平均数
    medain(data1) # 中位数
    

    3.3. Pandas describe()函数查看数据

    data.descirbe()
    # 指定列:“仓位等级”
    data['仓位等级'].describe()
    
    更多相关内容
  • 泰坦尼克号数据集分析 分析结果:宿舍房等级较低的这个生还率较高,女性生还比男性高,儿童生的几率还差一些。但是这个结论有一定的概率,实际上泰坦尼克号上有224名乘客,而数据集只有 891 名还有乘客,另外也不...
  • 泰坦尼克号数据集,pyhton数据分析练手,练手专用,数据分析,Python
  • 主要分析有数据接:https://pan.baidu.com/s/1jn88GiOr7uWA8BDQocFXxg 密码: s0e0不同舱位等级中幸存者和遇难者的乘客比例不同性别的幸存比例幸存和遇难...首先做准备(导入库,读入数据集) import matplotlib.pypl
  • 暂无描述
  • 泰坦尼克号数据集分析 使用Seaborn库中包含的titanic数据集进行一些数据统计。 Seaborn是一个图形库,Anaconda已包含此库。数据集参见: https://github.com/mwaskom/seaborn-data import seaborn as sns tit = sns...

    实例练习

    泰坦尼克号数据集分析

    使用Seaborn库中包含的titanic数据集进行一些数据统计。
    Seaborn是一个图形库,Anaconda已包含此库。数据集参见:
    https://github.com/mwaskom/seaborn-data
    
    import  seaborn  as  sns
    tit = sns.load_dataset('titanic') # 读取数据集, 返回 DataFrame
    tit.shape
    Out: (891, 15)   		# 891行x15列
    tit.head(3)
    
    tit.columns 
    tit.to_excel('titanic.xlsx', index=False)  # 存为电子表格,便于观察
    
    

    在这里插入图片描述
    在这里插入图片描述
    泰坦尼克号幸存者数据集字段说明
    在这里插入图片描述

    survived字段只有01两种取值,1代表生还。
    tit.survived.unique()		# 取唯一值
    Out: array([0, 1], dtype=int64)
    tit['survived'].mean() 		# 总体的平均生还率
    Out: 0.3838
    tit.isnull().sum()         		# 查看各列数据的缺失情况
    Out: 
    survived       0
    pclass           0
    sex                0
    age            177
    
    tit.pclass.value_counts()	# 统计每类客舱记录数
    Out: 
    3    491
    1    216
    2    184
    
    tit.groupby('pclass')['survived'].mean()  # 按客舱等级统计生还率
    # 统计每个等级的平均票价、最高价、最低价
    tit.groupby('pclass').fare.agg(['mean', 'max', 'min']) 
    从统计数据可以看出,一等客舱生还率最高,三等客舱生还率最低,
    与之对应的是各等级客舱的票价也有很大差异。
    

    在这里插入图片描述
    在这里插入图片描述

    tit = pd.read_excel('titanic.xlsx')           		# 读取Excel数据
    fields = ['pclass', 'sex', 'who', 'embarked']		# 需做分类统计的字段
    for  field  in  fields:				# 按不同字段统计生还率
        print(tit.groupby(field)['survived'].agg(['sum', 'count', 'mean']))
    tit.groupby(['pclass','sex']).survived.mean()	# 按仓位等级/性别
    for  field  in  ['sex', 'who', 'pclass', 'alone']:  	# 按不同字段计数
        print('\n', field)
        print(tit.transform(field).value_counts())
    
    tit[(tit.age < 16)].groupby(['pclass'])['survived'].agg('mean')  # 16岁以下儿童
    发现孩子的生还率很高,尤其是二等舱中生还率达到了惊人的100%

    在这里插入图片描述
    在这里插入图片描述

    电影票房统计

    tushare是一个中文财经数据接口。利用该接口下载国内电影月票房榜数据,
    然后做统计分析。
    安装  pip   install   tushare
    国内站点 pip  install  tushare  -i  https://pypi.tuna.tsinghua.edu.cn/simple 
    
    
    import  tushare  as  ts		# https://tushare.pro		
    # ts.set_token('你的token')  	# 执行一次在本机保存token,以后无需执行
    pro = ts.pro_api()  		# 初始化 pro 接口
    df = pro.bo_monthly(date='20190701')
    df.columns  	# 字段含义见 https://tushare.pro/document/2?doc_id=113
    
    

    在这里插入图片描述
    新pro接口返回数据共11行,第0行是其他所有电影的合计票房,
    1-10行是当月排名前十的电影。下面的代码按月下载2008—2019年月票房数据,保存为 promovie.xlsx

    import  tushare  as  ts
    import time
    from pandas import DataFrame, Series
    pro = ts.pro_api()  			# 初始化 pro 接口  
    movie = DataFrame()                         	# 生成一个DataFrame对象
    for  year  in  range(2008, 2020):		# 2008—2019年
        for  mon  in  range(1,13):		# 1~12月
            date = '{:4d}{:02d}{:02d}'.format(year, mon,1)	# '20080101'格式
            df = pro.bo_monthly(date=date)	# 下载指定月票房
            movie = movie.append(df, ignore_index=True)  # 将df追加到movie中
            time.sleep(2)			# 休眠2s, 每分钟访问次数有限制
    movie.to_excel('promovie.xlsx', index=False)
    
    

    boxmonth.xlsx(2008.1-2019.8)数据含义

    Irank:排名
    MovieName:电影名称
    WomIndex:口碑指数(很多缺失)
    avgboxoffice:平均票价
    avgshowcount:场均人次
    box_pro:月度占比
    boxoffice:单月票房(万元人民币)
    days:月内上映天数
    releaseTime:首映日期
    month:月份
    people:月观影人数
    
    
    movie = pd.read_excel('boxmonth.xlsx')
    movie.shape   # pd.set_option('display.max_column',11)
    movie.loc[:, ['boxoffice', 'people']].sum()  # 总票房(万元),总观影人数
    
    

    在这里插入图片描述

    # 查看2008—2019年电影十大票房排行榜
    m = movie[movie.MovieName!='其他']       		# 先排除“其他”行
    m.groupby('MovieName').boxoffice.sum().sort_values(ascending=False)[:10]
    
    #统计年度票房和月度票房,然后绘制对比图形。
    # 由于2019年月份数据不全,排除2019年数据, 只统计2008—2018年的数据
    m = movie[movie.month.str[:4] != '2019']
    # 按年度,str[:4]取出年份,以此分类统计,sort_index按索引年度顺序排列
    ybox = m.groupby(m.month.str[:4]).boxoffice.sum().sort_index()
    ybox[::-1]			# 票房年度额
    
    

    在这里插入图片描述
    在这里插入图片描述

    import  matplotlib.pyplot  as  plt
    plt.rcParams['font.sans-serif'] = ['SimHei']		# 指定中文黑体字体
    ybox.plot(title='年票房', marker='o', fontsize=14)
    mbox = m.groupby(m.month.str[5:7]).boxoffice.sum().sort_index()
    mbox.plot(title='月票房', marker='o', fontsize=14)
    
    

    在这里插入图片描述
    近十年年度票房增长很快,从2008年的31亿元增加到了2018年的600亿元。电影月度消费差异很大,春节和暑假消费爆棚,所以这两个档期也是电影公司必争的黄金档期。

    # 按年度统计观影人数,ascending=False降序
    p=m.groupby(m.month.str[:4]).people.sum().sort_values(ascending=False)
    Out: 
    2018    1718045678
    2017    1622494840
    # ... ... 
     
    # 计算年度人均票价“年度总票房(万元人民币)/观影人数”,保留1位小数 
    np.round(ybox*10000/p, 1)
    Out:
    2008    28.8
    2009    30.8
    2010    35.3
    
    运算ybox*10000/p体现了Pandas索引运算的优势,两列统计数据都以年份为索引,
    在运算时自动按年份匹配。
    

    股票基本面统计

    import  tushare  as  ts
    stock = ts.get_stock_basics()    	# 股票基本面数据,公众接口可用
    stock.to_excel('stock.xlsx')		# 保存为电子表格
    stock.shape				# Out: (3678, 22)
    stock.columns				# 字段集
    
    
    数据字段详情查看 http://tushare.org/fundamental.html 。
    这里用到的数据列有:code,股票代码;name,名称;industry,
    所属行业;area,地区;pe,市盈率;totals,总股本(亿元人民币);
    esp,每股收益;timeToMarket,上市日期。
    
    
    df = pd.read_excel('stock.xlsx', dtype={'code': 'str'}) # code字符串类型
    df.set_index('code', inplace=True)	# 将code设为索引列
    df.loc['002522']            			# 显示某支股票基本面
    len(df.industry.unique())   		# 显示行业数
    df.area.unique().size    			# 显示地区数(即股票的归属省份)
    
    
    # 按地区统计上市公司数量,体现地区经济实力
    df.groupby('area').area.count().sort_values(ascending=False)
    year = df.timeToMarket.astype('str').str[:4]  # 转为字符串,提取前4位的年份
    yearnum = df.groupby(year).name.count()	 # 按年份统计,得到每年股票发行量
    # 数据集中有几支股票没有发行年份(年份为0), 作图时排除0年份
    import  matplotlib.pyplot  as  plt
    plt.rcParams['font.sans-serif'] = ['SimHei']		# 中文字体
    yearnum[yearnum.index!='0'].plot(fontsize=14, title='年IPO数量')
    
    

    在这里插入图片描述

    df.pe.mean()       		# 简单的算术平均pe
    df[df.pe > 0].pe.mean() 	# 剔除亏损股票后计算pe均值
    
    按总市值为权重计算加权pe。这里推算总市值的依据如下:
    	股票单价 = 4*esp(每股收益)*pe(市盈率)
    	总市值 = 股票单价*totals总股本(亿元人民币)
    df['tvalue'] = 4 * df.esp * df.pe * df.totals  	# 计算总市值,增加新列tvalue
    np.sum(df.pe * df.tvalue) / df.tvalue.sum()   # 计算以市值为权重的加权pe
    Out: 48.87        # 等同于 np.average(df.pe, weights=df.tvalue)
    
    计算沪市(60开头)、深圳主板(00开头)、创业板(30开头)
    及科创板(68开头)各板块的pe值和股票数。
    df['board'] = df.index.str[:2]     # 取code的前2个字符,新增board列
    # 按板块类型统计pe均值,计数
    df.groupby('board').pe.agg([('pe均值', 'mean'), ('股票数', 'count')])
    
    

    在这里插入图片描述

    pandas其他练习题

    1. https://blog.csdn.net/qq_41996090/article/details/88558868   十套练习
     上面练习的数据集地址 https://github.com/Rango-2017/Pandas_exercises
    	https://www.kesci.com/
    2.  https://blog.csdn.net/AvalancheM/article/details/81293149?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3
    3.  https://zhuanlan.zhihu.com/p/94096219?utm_source=qq
    
    4.  jupyter notebook  : 基于浏览器的IPython编程环境
     简介  https://www.jianshu.com/p/061c6e5c4b0d
    (1).ipynb 练习文件下载,例如存在 D:\ ;
    (2)进入命令行, 切换到 .ipynb文件所在目录, 执行 jupyter notebook
    
    
    展开全文
  • kaggle比赛——泰坦尼克号预测幸存者
  • 泰坦尼克号生存分类数据集 包括训练集和测试集两个csv文件
  • Titanic数据集是非常适合数据科学和机器...数据集为1912年泰坦尼克号沉船事件中一些船员的个人信息以及存活状况。这些历史数据已经非分为训练集和测试集,你可以根据训练集训练出合适的模型并预测测试集中的存活状况。
  • 泰坦尼克号数据集:准备的逻辑回归模型和完成的随机森林分析
  • 泰坦尼克号数据分析

    千次阅读 2022-04-18 15:14:07
    泰坦尼克号是一艘奥林匹克级邮轮,于1912年4月首航时撞上冰山后沉没。泰坦尼克号由位于北爱尔兰贝尔法斯特的哈兰·沃尔夫船厂兴建,是当时最大的客运轮船,由于其规模相当于一艘现代航空母舰,号称“上帝也沉没不了...

    项目场景:

    泰坦尼克号是一艘奥林匹克级邮轮,于1912年4月首航时撞上冰山后沉没。泰坦尼克号由位于北爱尔兰贝尔法斯特的哈兰·沃尔夫船厂兴建,是当时最大的客运轮船,由于其规模相当于一艘现代航空母舰,号称“上帝也沉没不了的巨型邮轮”。在泰坦尼克号的首航中,从英国南安普敦出发,途经法国瑟堡-奥克特维尔以及爱尔兰昆士敦,计划横渡大西洋前往美国纽约市。但由于人为操作失误,于1912年4月14日船上时间夜里11点40分撞上冰山;2小时40分钟后,即4月15日凌晨2点20分,船裂成两半后沉入大西洋,死亡人数超越1500人,堪称20世纪最大和最广为人知的海难事件。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
    泰坦尼克号上有不同阶级、不同年龄的乘客两千多人,而在这次沉船事故中幸存下来的仅有718人。根据数据统计分析,人们发现,幸存的乘客和他们的年龄、性别、乘坐车舱等级等因素存在某种关系。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
    train_titantic.csv给出了当时泰坦尼克号上891位乘客的基本数据及其生存情况。本次实验在原始数据上进行数据处理,并通过逻辑回归,svm等模型预测船上乘客的生存情况



    数据集和代码

    数据集

    提示:这里描述项目中遇到的问题:

    字段名以及含义:
    PassengerId 乘客编号
    Survived 生存情况(1=存活,0=死亡)
    Pclass 船舱等级(1=头等舱,2=二等舱,3=三等舱)
    Name 姓名
    Sex 性别
    Age 年龄
    SibSp 兄弟姐妹数/配偶数(即同船的同代亲属人数)
    Parch 父母/子女数(即同船的不同代直系亲属人数)
    Ticket 船票编号
    Fare 船票价格
    Cabin 客舱号
    Embarked 登船港口(S=美国南安普顿,C=法国瑟堡市,Q=爱尔兰昆士敦)

    在这里插入图片描述


    数据清洗:

    数据清洗策略:

    1. 查看数据的缺失情况,并用中位数填充Age与Fare字段的缺失值;用“Unknown"填充Cabin字段的缺失值;用众数填充Embarked字段的缺失值。
    df['Age'] = df['Age'].fillna(df['Age'].median())  #用中位数填充Age与Fare字段的缺失值
    df['Embarked'] = df['Embarked'].fillna(df['Embarked'].mode()[0])  #用众数填充Embarked字段的缺失值
    df['Cabin'] = df['Cabin'].fillna("Unknown")  #用“Unknown"填充Cabin字段的缺失值
    
    1. 将Age字段按照等宽间距划分为5等分,并统计输出每个区间的人数。
    k = 5
    data = df['Age']
    d1 = pd.cut(data,k)  #利用cut函数将Age字段按照等宽间距划分为5等分
    
    d1
    
    1. 将SibSP与Parch两个字段的数值相加,生成新的字段”Family",表示与乘客同船的家庭成员人数。
    df['Family'] = df['SibSp']+df['Parch']
    df.head()
    
    1. 将字段Pclass及Sex字段转化为哑变量的形式。其中,Age字段中,请用数字0代表male,用数字1代表female.‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
    df['Family'] = df['SibSp']+df['Parch']
    df.head()
    
    1. 提取乘客姓名Name中的头衔(如Mr.,Miss.,Mrs.等),按照下表所示的对应关系将乘客头衔归为6个类别,生成新字段“Title",并将该字段转化为哑变量的形式。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
      这步是最麻烦的,就是通过名字前缀分为6类:
    Title头衔
    OfficerCapt,Col,Major,Dr,Rev
    RoyaltyJonkheer,Don,Sir,the Countess,Dona,Lady
    MasterMaster
    MissMiss,Mlle
    MrMr
    MrsMrs,Ms,Mme

    代码:

    df['Title'] = df['Name'].str.split(' ') #将name值按空格分开,分开后类型为列表 如[Braund,, Mr., Owen, Harris]
    lst = ['Capt.','Col.','Major.','Dr.','Rev.','Jonkheer.'
         ,'Don.','Sir.','Countess.','Dona.','Lady.',
        'Master.','Miss.','Mlle.','Mr.','Mrs.','Ms.','Mme.'
        ] #将关键字放到列表中
    for i in range(len(df['Title'])):
      pos = 0
      for j in range(len(df['Title'][i])):
          if(df['Title'][i][pos] not in lst): #如果不是关键字,就删掉
              df['Title'][i].pop(pos)
          else:
              pos+=1
    dd = df['Title'].apply(pd.Series).stack() #stack方法可以吧列表转换成字符串
    df['Title'] = dd.values 
    di = {'S':0,'C':1,'Q':2}
    df['Embarked'] = df['Embarked'].apply(lambda x:di[x]) #将Embarked数值化
    i = 0
    for x in df['Title']:  #将Title数值化
      if(x in lst[0:5]):
          df.iloc[i,13] = 0
      if(x in lst[5:11]):
          df.iloc[i,13] = 1
      if(x == "Master."):
          df.iloc[i,13] = 2
      if(x in lst[12:14]):
          df.iloc[i,13] = 3
      if(x == "Mr."):
          df.iloc[i,13] = 4
      if(x in lst[-3:]):
          df.iloc[i,13] = 5
      i += 1
    
    df.head()    
    

    看不懂的话到GitHub上下代码一步一步跑把
    处理后的数据:
    在这里插入图片描述


    数据分析:

    通过相关性选取特征:
    在这里插入图片描述

    逻辑回归

    首先通过循环随机种子选取准确率最高的数据集,随机种子不同选取的数据集就不同:
    在这里插入图片描述
    选择后的训练集与数据集中的年龄与票价查看分布:
    在这里插入图片描述
    对比两者可以看出,训练集相当于在每个年龄与票价区间都取了80%,分布均匀因此准确率高

    逻辑回归的准确率
    在这里插入图片描述

    SVM

    SVM的准确率:
    在这里插入图片描述
    sklearn中的核函数:
    在这里插入图片描述

    总结

    最终我们使用逻辑回归达到了90%的准确率,使用SVM达到92%的准确率

    展开全文
  • 泰坦尼克号生存预测数据集 泰坦尼克号生存预测数据集 Taitanic data.zip
  • 作为大家都非常熟悉的沉船事故–泰坦尼克号事件,该事件数据集同样广受大家关注。 本文的目的是希望自己通过分析研究,去找出影响幸存率的因素。

    作为大家都非常熟悉的沉船事故–泰坦尼克号事件,该事件数据集同样也广受大家所关注,许多人拿数据集来分析研究,找出影响乘客幸存率的因素有哪些。

    本文的目的是希望自己通过分析研究,去找出那些影响幸存率的因素,同时在过程中学习,强化自己。

    一、前言

    数据来源自kaggle数据集,该数据一共有12个字段,各项字段意义如下表:
    在这里插入图片描述
    对各字段进行意义性理解分析,找出影响幸存率的因素如下图
    在这里插入图片描述

    二、数据处理

    打开数据源,对数据进行处理,发现cabin、age、Fare、embarked有缺失值。

    1、cabin字段

    该字段数据属于文本型字段,具体意义是指客舱号。
    在这里插入图片描述
    数据筛选,1309条记录中只有295条数据,缺失过于严重,故数据不再进行分析研究。

    2、age字段

    该字段是数字型字段,其数据意义是分析年龄对存活率的影响。
    在这里插入图片描述
    在1309条数据中只有1046条数据,缺失 263条数据。为了保持数据的真实性,所以不在对数据进行填充。
    对数据进行整理,age应该为整数,故小于1的记为1岁,其他数据采用4舍5入,空值不改变。

    3、Fare字段

    该字段属于数字型数据,其意义是研究船票价格对存活的影响。数据筛选如下
    在这里插入图片描述
    该数据只有一个空值,我们可以按照该人员的详细数据去得出此人的Fare值。依据pclas=3,embarked=s,age在60岁周边,得出Fare的平均值为7,填入该数据。

    4、Embarked字段

    该字段属于文本型字段,其研究意义是分析登船港口对存活率的影响
    在这里插入图片描述
    本字段数据筛选后有2个空值。按照之前的逻辑,对其填入文本S

    三、数据分析

    1、舱位维度

    建立舱位和存活情况的数据透视表
    

    在这里插入图片描述
    数据源中总体人数为1309人,存活494,占比38%,死亡率高达62%,从数据层面来说,这是一起非常严重的沉船事故。

    做关于各舱位存活率的柱状图
    

    在这里插入图片描述
    在Pclass字段中,1代表一等,2代表二等,3代表三等。
    一等舱的幸存率最高,为58%;三等舱最低,为27%,该数据还不到一等舱位幸存率的一半;所以,科能还是需要有钱……

    2、性别

    性别

    建立性别和存活状况的数据透视表。
    

    在这里插入图片描述
    在总乘客人员中,女性占比64%,男性占比36%。
    在这里插入图片描述
    生还人员中,女性占比78%,男性占比22%,还不到女性占比的三分之一。
    在这里插入图片描述
    女性生还人数占女性总人数的83%,男性生还人数占男性总人数的13%,该数据为观点“事故发生时,优先解救女性”提供了依据。
    在这里插入图片描述
    性别&客舱

    建立客舱、性别、存活状况的数据透视表。
    

    在这里插入图片描述
    对各舱位的男女性幸存、死亡率做百分比堆积柱形图。无论在哪个舱位,女性幸存人数比例都远远大于男性生还比例。
    拆分到舱位上,一等舱女性幸存比例最高,为98%,三等舱最低,为67%;
    在这里插入图片描述
    男女乘客中,男性幸存的比例仅为13%,远低于女性幸存比例;拆分到舱位上,一等舱男性幸存比例最高,三等舱最低。进而推论可能在男性解救过程中,或许存在因地位、财富等原因。
    在这里插入图片描述

    3、年龄

    因为年龄缺失值较多,为了数据的真实性,没有对数据进行整理。

    对数据进行描述性检验。 
    

    在这里插入图片描述
    年龄的平均值为30岁,最大值为80,最小值为1岁,众数为24岁,中位数为28岁。
    对年龄进行分段划分, 我们规定0-15岁为青少年,15-40为青年,40-60为中年,60以上为老年。
    在这里插入图片描述
    本数据源age字段数据不缺失的人员中,青年占主要人群,占比66%。老年占比最少,为4%

    建立年龄段划分、性别和存活状况的数据透视表:
    

    在这里插入图片描述
    在这里插入图片描述
    所有年龄段划分中,青少年幸存人数占青少年总人数的比例最高,为52%;青年、中年、老年依次减少,最小值为35%;
    另外,有一个有趣的数字,对于老年女性乘客有11人,这11人全部获救。(这就是绅士精神?)
    在这里插入图片描述
    幸存人员中,青年占比最大,为65%;老年占比最小,为3%;

    4、船票价格

    理论来说,舱位登记越高,其价格越贵,验证此结论。对舱位登记和价格做相关性分析。
    在这里插入图片描述
    舱位和船票价格成负相关,该情况表示舱位越高,价格越贵,符合现实依据。

      建立价格和存活状况的数据透视表,因价格区间差别过大,所以对价格进行区间划分,我们以50为组距。
    

    在这里插入图片描述
    数据显示,虽然在0-50的价格区间内幸存人数最多,但该区间的幸存比例最低,数值仅为32%,其数值仅为其他价位存活率的一半左右。
    另外,在500-550的价格区间的人们有4人,该4人全部获救。(金钱的力量?)

    5、亲属

    Sibsp字段

    对字段sibsp建立数据透视表,该字段是表示乘客的同系兄弟姐妹或配偶数。
    

    在这里插入图片描述
    该图表说明,在乘客中,有1个同系的兄弟姐妹或配偶的获救比例最高,数值为52%

    Parch字段

    对字段parch建立数据透视表,该字段是表示船上的父母或子女数。
    

    在这里插入图片描述
    该图表显示说明,父母或者子女相加人数为3的人员获救比例最大,达到了63%

    数据中parch为9的有2人,一男、一女,女士幸存了下来,观察此两条数据,其共同点较多,推测可能为夫妻,也许这就是爱情吧~
    在这里插入图片描述

    6、登船港口

    对Embarked字段建立数据透视表,
    

    在这里插入图片描述
    C所代表港口人员获救比例最高,达到了50%;在获救人数中,S所代表港口获救比例最大,达到了62%;

    结论

    1、幸存率与舱位有关,舱位越高,存活率越高;
    2、幸存率与性别有关,女性幸存率(83%)远远高于男性(13%),尽管船上乘客以男性为主;另外,不同舱位的女性之间,舱位越高,生还比例越大,男性同样如此;
    3、尽管船上多以青年为主,但青少年的实际存活比例确为最高(52%);再有对于老年女性乘客,存活比例为100%;
    4、不同的船票价格确实会影响存活率,船票的价格越低(0-50)其存活率越低(32%),价格越高,存活率越高(100%)
    5、在乘客中,有1个兄弟姐妹或配偶的幸存率最高(52%),再有父母或子女相加人数为3的乘客幸存率最大(63%);
    6、对于登船港口,S代表的港口即英国南安普顿登船人数最多;但在C港即法国卢森堡登船的人员幸存比例最高(50%)

    展开全文
  • 一、数据来源数据集来自于Kaggle。Kaggle是一个数据分析建模的应用竞赛平台。当然也可以从其它地方下。二、相关工具2.1 Python 3.5.22.2 Anaconda 3三、牛刀小试3.1 导入训练数据集import pandas as pdimport numpy ...
  • RMS泰坦尼克号的沉没是历史上最臭名昭著的沉船之一。1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震撼了国际社会,并导致了更好的船舶安全条例。...
  • 一、首先导入读取csv的pandas包,然后读取训练数据集及预测数据集 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns #训练数据集 train = pd.read_csv("train.csv") ...
  • Python分析泰坦尼克号数据集

    千次阅读 2020-10-12 20:35:58
    泰坦尼克号数据分析 分析目的: 分析影响乘客生存的因素 #导入相应的库 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline 导入数据 网上有很多...
  • 泰坦尼克数据集预测分析Imagine your group of friends have decided to spend the vacations by travelling to an amazing destination. And you have been given the responsibility to find one. Interesting? ...
  • //解析数据 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns train = pd.read_csv("D:\pythona\Titanic.csv") train.head() 运行结果: //查看所有数据 train....
  • 泰坦尼克数据集下载 训练集 测试集 导入需要的库 import matplotlib.pyplot as plt %matplotlib inline import numpy as np import pandas as pd 加载数据集 train_file = './data/titanic/train.csv' eval_file = ...
  • 泰坦尼克号数据分析python实战

    千次阅读 2020-04-25 11:11:31
    数据集:kaggle上的泰坦尼克号数据集 主要字段有: PassengerId:乘客的ID Survived:是否存活(1为存活,0为死亡) Pclass:船舱等级 Name:乘客姓名 Sex:乘客性别 Age:乘客年龄 SibSp:兄弟姐妹(有些乘客可能带...
  • 导入必要的库和csv格式的数据文件(titanic数据) 2按性别处理数据中年龄的缺失值(用合适数值填充) 3通过查看极值和分箱,探索数据中有没有异常值,有异常值则进行处理(用合适数值填充) 4.练习设置分层索引并进行拆堆...
  • 泰坦尼克号数据分析案例实战

    千次阅读 2020-05-23 11:56:21
    这是一个很经典的案例,很多博主都写过,对,就是它:泰坦尼克号生存率的分析,它是kaggle上的一道题,通过船上乘客的信息分析和建模,预测哪些乘客得以生还。 我们就非常粗暴地拿这个数据集做一个简单的分析好了。...
  • 泰坦尼克号生存概率数据-Kaggle
  • 泰坦尼克号-数据分析泰坦尼克号数据集进行统计分析,以预测哪些乘客能够幸存。 要使用python脚本,请创建一个csv文件夹,并在其中提供文件train.csv和test.csv 。 可以从下载这两个数据集。
  • 数据读取与统计分析二. 特征分析 & 缺失值填充2.1 性别与获救2.2 船舱等级与获救2.3 年龄与获救2.4 姓名(称谓) 与获救2.5 填充缺失值2.6 登船地点与获救2.7 兄弟姐妹的数量2.8 父母和孩子的数量2.9 船票的价格三. ...
  • 泰坦尼克号数据分析报告

    千次阅读 2020-03-22 20:52:54
    泰坦尼克号数据分析报告 数据链接:https://www.kaggle.com/c/titanic/data 观察数据 图(1) 由图可知,在age/cabin/Embark 字段中有缺失,在之后的分析中会做相应的处理。 基本特征 由图2.3.4可知,共有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,849
精华内容 1,139
关键字:

泰坦尼克号数据集分析