数据分析——数据重构

目录

  • 数据的合并
    • 载入四个文件和train表格观察关系
    • 数据的拼接
  • 换一种角度看数据
  • 数据聚合与运算

数据的合并

import numpy as np
import pandas as pd

载入四个文件和train表格观察关系

text_left_up = pd.read_csv("C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/train-left-up.csv")
text_left_down = pd.read_csv("C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/train-left-down.csv")
text_right_up = pd.read_csv("C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/train-right-up.csv")
text_right_down = pd.read_csv("C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/train-right-down.csv")
text_left_up.head()

数据分析——数据重构_第1张图片

text_left_down.head()

数据分析——数据重构_第2张图片

text_right_up.head()

数据分析——数据重构_第3张图片

text_right_down.head()

数据分析——数据重构_第4张图片

df.head()

数据分析——数据重构_第5张图片
观察发现四个数据分别是这个表格十字拆分出的四个部分。

数据的拼接

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

#数据的拼接
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)   #两个up横向连接
result_up.head()

数据分析——数据重构_第6张图片

pd.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
objs: 需要连接的对象,eg [df1, df2]
axis: axis = 1, 表示在水平方向(row)进行连接;axis = 0, 表示在垂直方向(column)进行连接
join outer: 表示index全部需要; inner,表示只取index重合的部分
join_axes: 传入需要保留的index
ignore_index: 忽略需要连接的frame本身的index,当原本的index没有特别意义的时候可以使用。
keys: 可以给每个需要连接的df一个label

result_down = pd.concat([text_left_down,text_right_down],axis=1)   #两个down横向连接
result_down.head()

数据分析——数据重构_第7张图片

result = pd.concat([result_up,result_down],axis=0)   #两个result纵向连接
result.head()

数据分析——数据重构_第8张图片

#用DataFrame的join方法完成以上任务
resul_up = text_left_up.join(text_right_up)
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down) #join横连,append竖连
result.head()

数据分析——数据重构_第9张图片

#用Pandas的merge方法和DataFrame的append方法完成任务
result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)
#left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
#right_index: 与left_index功能相似。    merge用法:https://blog.csdn.net/brucewong0516/article/details/82707492
result_down = pd.merge(text_left_down,text_right_down,left_index=True,right_index=True)
result = resul_up.append(result_down)
result.head()

数据分析——数据重构_第10张图片
保存数据:

result.to_csv('C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/result.csv')

换一种角度看数据

#将数据变成Series的数据

# 将完整的数据加载出来
text = pd.read_csv('C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/result.csv')
text.head()

# 代码写在这里
unit_result=text.stack().head(20) #stuck()是将列旋转到行,unstack()是将行旋转到列,Series数据只有两列
unit_result.head()

数据分析——数据重构_第11张图片

#将代码保存为unit_result,csv
unit_result.to_csv('C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/unit_result.csv')
test = pd.read_csv('C:/Users/Administrator/LC python/datawhale/data analysis/unit 2/data/unit_result.csv')
test.head()

数据分析——数据重构_第12张图片

数据聚合与运算

男性与女性的平均票价:

df = text['Fare'].groupby(text['Sex']) #用groupby将sex分为两类,把对应的票价值取出
means = df.mean()
means

在这里插入图片描述

survived_sex = text['Survived'].groupby(text['Sex']).sum() #格式同上略有变化
survived_sex.head()

男女的存活人数:

survived_sex = text['Survived'].groupby(text['Sex']).sum() #格式同上略有变化
survived_sex.head()

在这里插入图片描述
客舱不同等级的存活人数:

survived_pclass = text['Survived'].groupby(text['Pclass']) #格式同上略有变化
survived_pclass.sum()

数据分析——数据重构_第13张图片
在不同等级的票中的不同年龄的船票花费的平均 值:

text.groupby(['Pclass','Age'])['Fare'].mean()

数据分析——数据重构_第14张图片
回顾下年龄这列:

text.describe()

数据分析——数据重构_第15张图片数据合并,并保存到sex_fare_survived.csv:

result = pd.merge(means,survived_sex,on='Sex')  #不同性别票价均值和存活人数构成的表格
result

数据分析——数据重构_第16张图片

result.to_csv('sex_fare_survived.csv')

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

#不同年龄的存活人数
survived_age = text['Survived'].groupby(text['Age']).sum()
survived_age.head()

数据分析——数据重构_第17张图片

找出最大值的年龄段
survived_age[survived_age.values==survived_age.max()]  #输出的是个Series

在这里插入图片描述

_sum = text['Survived'].sum() #计算总存活人数
print(_sum)

342

#首先计算总人数
_sum = text['Survived'].sum()
print("sum of person:"+str(_sum))
precent =survived_age.max()/_sum
print("最大存活率:"+str(precent))#首先计算总人数
_sum = text['Survived'].sum()
print("sum of person:"+str(_sum))
precent =survived_age.max()/_sum
print("最大存活率:"+str(precent))

在这里插入图片描述

你可能感兴趣的:(数据分析,数据分析,python)