ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据分析_task3

2021-06-19 20:31:05  阅读:197  来源: 互联网

标签:数据分析 task3 up down train result csv data


第二章 数据重构

导入基本库

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有