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

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

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者