本文主要是介绍数据重构 —— 泰坦尼克任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第二章:数据重构
熟悉的开始~
# 导入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)
总结
在前期处理过后的干净数据的基础上,我们通过数据的合并,数据类型的转换,甚至是数据的运算,对其进行数据重构,从而更进一步地为后期数据理解做好充足的准备。
这篇关于数据重构 —— 泰坦尼克任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!