数据重构 —— 泰坦尼克任务

2023-11-27 03:00

本文主要是介绍数据重构 —— 泰坦尼克任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第二章:数据重构

熟悉的开始~

# 导入numpy和pandas
import pandas as pd
import numpy as np# 载入data文件中的:train-left-up.csv
left_up = pd.read_csv('train-left-up.csv')
left_up.head()

2.4 数据的合并

2.4.1 任务一:将data文件夹里面的所有数据都载入,观察数据的之间的关系

# 载入data文件中的:train-left-down.csv
left_down = pd.read_csv('train-left-down.csv')
left_down.head()# 载入data文件中的:train-right-up.csv
right_up = pd.read_csv('train-right-up.csv')
right_up.head()# 载入data文件中的:train-right-down.csv
right_down = pd.read_csv('train-right-down.csv')
right_down.head()

四个数据表分别来自于一张数据总表(train.csv数据)

2.4.2:任务二:使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up

# 使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up
result_up = pd.concat([left_up,right_up],axis=1)
result_up

2.4.3 任务三:使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。

# 使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。
result_down = pd.concat([left_down,right_down],axis=1)
result_down
# 使用concat方法:将上边的result_up和result_down纵向合并为result。
result = pd.concat([result_up,result_down])
result
# 查看合并后数据表的大小
result.shape

2.4.4 任务四:使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务

# 使用DataFrame自带的方法join方法和append方法,完成拼接
# join 是把列横向合并
# append 是把行纵向合并
up =left_up.join(right_up)
up.head()down =left_down.join(right_down)
down.head()result = up.append(down)
result.head()
# 完成的数据保存为result.csv
result.to_csv('result.csv')

append是list(列表)的方法,函数参数是可以是任意一个元素,作用是在列表的最后添加上这个新元素。
例如a=[1,2,3],a.append(4)以后a就是[1,2,3,4]

join是string(字符串)的方法,函数参数是一个由字符串组成的列表比如[‘a’,‘b’,‘c’],作用是用字符串把这个字符串列表里的字符串连接起来,
比如:a=’-’,则a.join([‘a’,‘b’,‘c’])=‘a-b-c’

2.4.5 任务五:使用Panads的merge方法和DataFrame的append方法:完成任务二和任务三的任务

# 使用Panads的merge方法和DataFrame的append方法,完成拼接
up = pd.merge(left_up,left_up,left_index = True,right_index = True) 
down = pd.merge(left_down,left_down,left_index = True,right_index = True) 
result = up.append(down)
result

Panads的merge方法 指的是将两个 DataFrame 数据表按照指定的规则进行连接,最后拼接成一个新的 DataFrame 数据表。

pandas.merge用法详解 —— 传送门

2.4.6 任务六:完成的数据保存为result.csv

# 完成的数据保存为result.csv
result.to_csv('result.csv')

2.5 换一种角度看数据

2.5.1 任务一:将我们的数据变为Series类型的数据

将数据变为Series类型的数据
# 将数据变为Series类型的数据
data = pd.read_csv('result.csv')
data.head()
data.stack()

stack()即“堆叠”,作用是将列旋转到行
unstack()即stack()的反操作,将行旋转到列

数据聚合与运算

载入上一个任务人保存的文件中:result.csv,并查看这个文件

df = pd.read_csv('result.csv')
df

2.6 数据运用

2.6.1 任务一:通过教材《Python for Data Analysis》P303、Google or anything来学习了解GroupBy机制

先分组,再聚合
在这里插入图片描述
Groupby用法详解 —— 传送门

2.6.2:任务二:计算泰坦尼克号男性与女性的平均票价

# 计算泰坦尼克号男性与女性的平均票价
# 第一步:按照性别分组
df.groupby('Sex')
list(df.groupby('Sex')) #  显示性别的所有信息
list(df.groupby('Sex'))[1] #  显示男性的所有信息# group = df.groupby('Sex') # 根据性别分类 得出所有基本信息
# group.describe()# df.groupby('Sex')['Age']  # 添加['Age'] 索引 只查找有关年龄的基本信息mean_fare_sex = df.groupby('Sex')['Fare'].mean() # 票价的平均值
mean_fare_sex

下面通过几个任务来熟悉GroupBy机制。

2.6.3:任务三:统计泰坦尼克号中男女的存活人数

# 统计泰坦尼克号中男女的存活人数
survived_sex = df.groupby('Sex')['Survived'].sum()
survived_sex

2.6.4:任务四:计算客舱不同等级的存活人数

# 计算客舱不同等级的存活人数
survived_pclass = df.groupby('Pclass')['Survived'].sum()
survived_pclass

【提示:】表中的存活那一栏,可以发现如果还活着记为1,死亡记为0

【思考】从数据分析的角度,上面的统计结果可以得出那些结论

#思考心得

【思考】从任务二到任务三中,这些运算可以通过agg()函数来同时计算。并且可以使用rename函数修改列名。你可以按照提示写出这个过程吗?
【思考心得】

df.groupby('Sex').agg({'Survived':'sum','Fare':'mean'}) # 利用agg()函数 同时对'Survived'求和,'Fare'求平均值df.groupby('Sex').agg({'Survived':'sum','Fare':'mean'}).rename(columns = {'Survived':'survived_sum','Fare':'fare_mean' })  # 重新命名表头 方便查阅

2.6.5:任务五:统计在不同等级的票中的不同年龄的船票花费的平均值

# 统计在不同等级的票中的不同年龄的船票花费的平均值
a = df.groupby(['Pclass','Age'])['Fare'].mean()
a

2.6.6:任务六:将任务二和任务三的数据合并,并保存到sex_fare_survived.csv

# 将任务二和任务三的数据合并,并保存到sex_fare_survived.csv
# 将 Series类型 转换成 Dataframe类型
# mean_fare_sex = mean_fare_sex.to_frame()
survived_sex = survived_sex.to_frame()
a.index
mean_fare_sex.index
survived_sex.index
# mean_fare_sex.to_frame()  # 变换数据类型
# survived_sex = survived_sex.to_frame()  # 变换数据类型
result = pd.merge(mean_fare_sex,survived_sex,on='Sex')
# merge()函数 支持Dataframe类型
result
result.to_csv('sex_fare_survived.csv')

这里要注意的就是 利用merge函数()进行合并操作时,合并数据集的类型应该是Dataframe类型 ;若不是可以通过 .to_frame()函数 进行转换

2.6.7:任务七:得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数)

# 不同年龄的总的存活人数
survived_age = df.groupby('Age')['Survived'].sum()
survived_age# 找出存活人数最多的年龄段
survived_age[survived_age.values == max(survived_age)]# 计算存活人数最高的存活率(存活人数/总人数)
rate = max(survived_age)/sum(df['Survived'])
# 格式化输出
'最大存活率:{}'.format(rate)

总结

在前期处理过后的干净数据的基础上,我们通过数据的合并,数据类型的转换,甚至是数据的运算,对其进行数据重构,从而更进一步地为后期数据理解做好充足的准备。

这篇关于数据重构 —— 泰坦尼克任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426908

相关文章

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口