其他分享
首页 > 其他分享> > 数据分析_task3

数据分析_task3

作者:互联网

第二章 数据重构

导入基本库

import numpy as np
import pandas as pd

载入data文件中的train-left-up.csv文件

train_left_up = pd.read_csv(r'F:\data_analyse\hands-on-data-analysis\第二章项目集合\data\train-left-up.csv')
train_left_up.head(5)

在这里插入图片描述

2.4数据的合并

2.4.1将data文件夹里面的所有数据都载入,观察数据的之间的关系

train_left_down = pd.read_csv(r'F:\data_analyse\hands-on-data-analysis\第二章项目集合\data\train-left-down.csv')
train_right_up = pd.read_csv(r'F:\data_analyse\hands-on-data-analysis\第二章项目集合\data\train-right-up.csv')
train_right_down = pd.read_csv(r'F:\data_analyse\hands-on-data-analysis\第二章项目集合\data\train-right-down.csv')
train_left_down.head(5)

在这里插入图片描述

train_right_up.head(5)

在这里插入图片描述

与train_csv文件相比较,这几个文件是将train.csv文件按中间行和中间列拆分形成的四个文件。

2.4.2使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up

train_up = [train_left_up,train_right_up]
result_up = pd.concat(train_up,axis=1)
result_up.head(5)
reslut_up.to_csv('result_up.csv',index=False)

在这里插入图片描述

2.4.3 使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。

train_down = [train_left_down,train_right_down]
result_down = pd.concat(train_down,axis=1)
result_down.to_csv('result_down.csv',index=False)

result = pd.concat([result_up,reslut_down],axis=0)
result

在这里插入图片描述

2.4.4 使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务

join是对两个表进行行索引,列拼接的函数,直接使用df1.join(df2)就可以

append相当于concat函数在axis=0上进行合并

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

在这里插入图片描述

2.4.5 使用Panads的merge方法和DataFrame的append方法:完成任务二和任务三的任务

pandas.merge()函数参数说明:

left和right:两个不同的DataFrame或Series
how:连接方式,有inner、left、right、outer,默认为inner
on:用于连接的列索引名称,必须同时存在于左、右两个DataFrame中,默认是以两个DataFrame列名的交集作为连接键,若要实现多键连接,‘on’参数后传入多键列表即可
left_on:左侧DataFrame中用于连接键的列名,这个参数在左右列名不同但代表的含义相同时非常有用;
right_on:右侧DataFrame中用于连接键的列名
left_index:使用左侧DataFrame中的行索引作为连接键( 但是这种情况下最好用JOIN)
right_index:使用右侧DataFrame中的行索引作为连接键( 但是这种情况下最好用JOIN)
sort:默认为False,将合并的数据进行排序,设置为False可以提高性能
suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(’_x’, ‘_y’)
copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能
indicator:显示合并数据中数据的来源情况

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.head(5)

在这里插入图片描述

2.4.6 完成的数据保存为result.csv

result.to_csv('result.csv',index=False)

2.5 换一种角度看数据

2.5.1 将我们的数据变为Series类型的数据

#加载result数据
result_data = pd.read_csv('result.csv')
result_data.head(5)

使用stack()函数将DataFrame数据变为Series数据,stack()又叫做堆叠,将DataFrame数据的行索引变为列索引。相当于DataFrame数据的每一行作为一个集合,这一行行中每个特征对应的表头作为Series数据中的索引,特征值表示为Series数据中的值

unit_result = result_data.stack().head(20)
unit_result.head()

在这里插入图片描述

unit_result.to_csv('unit_result.csv',index=False)
unit_result = pd.read_csv('unit_result.csv')
unit_result.head(10)

在这里插入图片描述

#加载result.csv数据
result_data = pd.read_csv('result.csv')
result_data.head(5)

在这里插入图片描述

2.6数据的运用

2.6.1通过教材《Python for Data Analysis》P303、Google or anything来学习了解GroupBy机制

'''
GroupBy的应用包括三个流程:
Splitting: 将数据按需求分组;
Applying: 对每个小组进行函数操作;
Combining: 合并结果。
'''

分组机制

对性别进行分组

sex_group = result_data.groupby('Sex')
sex_group

在这里插入图片描述

发现数据不在是DataFrame数据,而是DataFrameGroupBy对象。

对sex_group进行计数可以发现,groupby()将数据按性别分成了两行

sex_group.count()

在这里插入图片描述

当你需要去对具体的某一列数据进行分析时,分组机制会起到很好的作用。

2.6.2计算泰坦尼克号男性与女性的平均票价

ticket_data = result_data['Fare'].groupby(result_data['Sex'])
means_data = ticket_data.mean()
means_data

在这里插入图片描述

将票价数据通过.groupby(result_data[‘Sex’])将数据按性别分为两类,并通过.mean()函数计算平均值。

2.6.3统计泰坦尼克号中男女的存活人数

survived_Sex = result_data['Survived'].groupby(result_data['Sex'])
survived_data = survived_Sex.sum()

在这里插入图片描述

2.6.4计算客舱不同等级的存活人数

survived_pclass = result_data['Survived'].groupby(rsult_data['Pclass'])
survived_pclass.sum()

在这里插入图片描述

思考:从数据分析角度可以得出什么结论?

从数据分析中可以看出,女性的平均票价比男性的平均票价高。女性的存活人数高于男性,主要是因为在灾难中男性选择去救助女性乘客。但是从客舱等级中的存活人数可以看出,高等级客舱的存活人数高于低等级的客舱,因此可以说明等级高的客舱存活几率更大。

【思考】从任务二到任务四中,这些运算可以通过agg()函数来同时计算。并且可以使用rename函数修改列名。

agg()函数参数为选择多需要的函数

result_data.groupby('Survived').agg({'Sex': 'mean', 'Pclass': 'count'}).rename(columns=
                            {'Sex': 'mean_sex', 'Pclass': 'count_pclass'})

2.6.5统计在不同等级的票中的不同年龄的船票花费的平均值

fare = result_data.groupby(['Pclass','Age'])['Fare']
fare.mean()

在这里插入图片描述

2.6.6将任务二和任务三的数据合并,并保存到sex_fare_survived.csv

result = pd.merge(means_data,survived_data,on='Sex')
result

在这里插入图片描述

result.to_csv('sex_fare_result.csv')

2.6.7得出不同年龄的总的存活人数,然后找出存活人数的最高的年龄,最后计算存活人数最高的存活率(存活人数/总人数)

survived_age = result_data['Survived'].groupby(result_data['Age'])
survived_age = survived_age.sum()
survived_age.head(5)

在这里插入图片描述

#找到最大年龄段
survived_age[survived_age.values == survived_age.max()]

在这里插入图片描述

#总人数
all_sum = result_data['Survived'].sum()
all_sum

在这里插入图片描述

all_sum = result_data['Survived'].sum()
print("总人数:{}".format(all_sum))
precent = survived_age.max() / all_sum
print("最大存活率:{}".format(precent))

在这里插入图片描述

标签:数据分析,task3,up,down,train,result,csv,data
来源: https://blog.csdn.net/Ninjasone/article/details/118058576