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

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

相关文章

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock