以下学习笔记来自Datawhale组队学习的数据分析课程第二章,此次数据分析课程主要是完成kaggle上泰坦尼克的任务,实战数据分析全流程。
链接:https://github.com/datawhalechina/hands-on-data-analysis
在前面我们已经学习了Pandas基础,第二章我们开始进入数据分析的业务部分,在第二章第一节的内容中,我们学习了数据的清洗,而这一节学习的是数据重构,数据重构依旧属于数据理解(准备)的范围。
导入基本库:
import numpy as np
import pandas as pd
载入data文件中的:train-left-up.csv:
data = pd.read_csv('./data/train-left-up.csv')
data

数据重构
数据合并
将data文件夹里面的所有数据都载入,与之前的原始数据相比,观察他们的之间的关系
train_left_up=pd.read_csv('./data/train-left-up.csv')
train_left_down=pd.read_csv('./data/train-left-down.csv')
train_right_up=pd.read_csv('./data/train-right-up.csv')
train_right_down=pd.read_csv('./data/train-right-down.csv')

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

使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。
result_up=pd.concat([train_left_up,train_right_up],axis=1)
result_up.head()

使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务
result_up=train_left_up.join(train_right_up)
result_down=train_left_down.join(train_right_down)
result=result_up.append(result_down)
result

使用Panads的merge方法和DataFrame的append方法:完成任务二和任务三的任务
result_up=pd.merge(train_left_up,train_right_up,left_index=True,right_index=True)
result_down=pd.merge(train_left_down,train_right_down,left_index=True,right_index=True)
result=result_up.append(result_down)
result

完成的数据保存为result.csv
result.to_csv('result.csv')
换一种角度看数据
将我们的数据变为Series类型的数据
stack方法是将数据堆叠,对应的有取消堆叠 unstack,详细的可以参考:
https://www.gairuo.com/p/pandas-stacking
text=pd.read_csv('result.csv')
#数据堆叠
unit_result=text.stack().head(20)
unit_result.head()

将数据保存并重新读取显示

数据聚合与运算
数据运用
当需要根据某个(多个)字段划分为不同的群体,就要用groupby,groupby的过程就是将原有的DataFrame按照groupby的字段,划分为若干个分组DataFrame,被分为多少个组就有多少个分组DataFrame。所以说,在groupby之后的一系列操作(如agg、apply等),均是基于子DataFrame的操作。
groupby的详细使用可参考:
https://zhuanlan.zhihu.com/p/101284491
计算泰坦尼克号男性与女性的平均票价
首先读取之前保存的result.csv文件
data = pd.read_csv('result.csv')
data.head()
计算票价:
means=data['Fare'].groupby(data['Sex']).mean()
means

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

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

通过agg()函数来同时计算
data.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
{'Fare': 'mean_fare', 'Pclass': 'count_pclass'})

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

将means和survived_sex的数据合并,并保存到sex_fare_survived.csv
result = pd.merge(means,survived_sex,on='Sex')
result.to_csv('sex_fare_survived.csv')
得出不同年龄的总的存活人数,然后找出存活人数最多的年龄段,最后计算存活人数最高的存活率(存活人数/总人数)
不同年龄的总的存活人数:
survived_age = data['Survived'].groupby(text['Age']).sum()
survived_age

存活人数最多的年龄段:
survived_age[survived_age.values==survived_age.max()]

计算存活人数最高的存活率:
_sum = text['Survived'].sum()
print("sum of person:"+str(_sum))
precetn =survived_age.max()/_sum
print("最大存活率:"+str(precetn))

本文介绍了使用Python进行泰坦尼克号生存预测项目的数据分析过程,包括数据清洗、重构、合并及聚合运算等内容,并展示了如何利用Pandas库进行高效的数据处理。
1万+

被折叠的 条评论
为什么被折叠?



