【动手学数据分析】 Task03 - 数据重构

一、数据的合并

常见的合并方法1有 concat、append、merge、join

原始数据如下:
原始数据

1.1 concat() 合并表

  1. train-left-up 与 train-right-up 合并为 result_up

    # 参数:合并列表,表轴
    list_up = [text_left_up,text_right_up]
    result_up = pd.concat(list_up, axis=1)
    

    在这里插入图片描述

  2. train-left-down 与 train-right-down 合并为 result_down

    list_down=[text_left_down,text_right_down]
    result_down = pd.concat(list_down,axis=1)
    

    在这里插入图片描述

  3. 两表合并为result:

    result = pd.concat([result_up,result_down])
    

    在这里插入图片描述

1.2 使用DataFrame.join()和DataFrame.append()

# 合并上表
result_up = text_left_up.join(text_right_up)
# 合并下表
result_down = text_left_down.join(text_right_down)
# 上下合并
result = result_up.append(result_down)

join

1.3 使用 pandas.merge() 和 pandas.append()

result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)
result_down = pd.merge(text_left_down,text_right_down,left_index=True,right_index=True)
result = result_up.append(result_down)

pandas

保存数据:result.to_csv('result.csv')

contactappendjoinmerge
拼接拼接关联关联
只能横向(axis=0)合并纵向横向都可以合并仅能在索引上关联可实现列与索引的关联
  • 关联操作基本上用 merge1

二、使用Series类型的数据

text = pd.read_csv('result.csv')
text.head()

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

stack
pandas里面利用stack(堆叠)和unstack(不堆叠)函数进行数据重排。数据的层次化结构有两种2:DataFrame的表格、Series的层级结构。那么:

  • stack:表格→层级,行索引变列索引
  • unstack:层级→表格,列索引变行索引

三、数据的聚合与运算

使用result.csv的数据:
在这里插入图片描述

GroupBy机制

GroupBy3,顾名思义,就是通过某一列进行分组,即其参数——“分组键”。每次分组后产生一个新的Series,也可传入多个分组键,类型可不同,产生一个层次化的Series。

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

在这里插入图片描述

2. 计算男女存活人数

在这里插入图片描述

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

在这里插入图片描述
通过以上计算,可以看出:

  • 女性平均票价高于男性平均票价
  • 女性存活人数高于男性存活人数
  • 等级最高的一等舱存活人数最多

4. 统计不同等级票中不同年龄的船票平均值

在这里插入图片描述

5. 合并性别、船票费用、存活人数数据

result = pd.merge(means, survived_sex, on='Sex')
result.to_csv('sex_fare_survived.csv')

在这里插入图片描述

6. 计算最高的存活率

思路:不同年龄的总存活人数→存活人数最大的年龄→最高存活率(= 最大年龄段存活人数 / 总存活人数)

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

#找出最大值的年龄
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))

执行结果
从结果上看,24岁存活人数最多,其存活率约为4.39%


  1. Pandas中DataFrame关联操作(concat、append、merge、join) - ai_1046067944 ↩︎ ↩︎

  2. python pandas stack和unstack函数 ↩︎

  3. 《利用Python进行数据分析》 10.1 GroupBy机制 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beta Lemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值