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

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

相关文章

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转