DW动手学数据分析Task3:数据重构)

news2024/12/27 3:52:39

目录

  • 1 数据的合并
    • 1.1合并方法一:用`concat`函数
    • 1.2 合并方法二:使用DataFrame自带的方法`join`方法和`append`
    • 1.3 合并方法三:使用Panads的`merge`方法和DataFrame的`append`方法
  • 2 换一种角度看数据
  • 3 数据聚合与运算
    • 3.1 groupby机制
    • 3.2 数据运算

1 数据的合并

  • 首先将所有文件都载入
    import numpy as np
    import pandas as pd
    text_left_up = pd.read_csv("data/train-left-up.csv")
    text_left_down = pd.read_csv("data/train-left-down.csv")
    text_right_up = pd.read_csv("data/train-right-up.csv")
    text_right_down = pd.read_csv("data/train-right-down.csv")
    

1.1合并方法一:用concat函数

  • 将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up

    list_up = [text_left_up,text_right_up]
    result_up = pd.concat(list_up,axis=1)
    result_up.head()
    
    # 将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。
    list_down=[text_left_down,text_right_down]
    result_down = pd.concat(list_down,axis=1)
    
    # 将上边的result_up和result_down纵向合并为result。
    result = pd.concat([result_up,result_down])
    result.head()
    

1.2 合并方法二:使用DataFrame自带的方法join方法和append

  • resul_up = text_left_up.join(text_right_up)
    result_down = text_left_down.join(text_right_down)
    result = result_up.append(result_down)
    result.head()
    

1.3 合并方法三:使用Panads的merge方法和DataFrame的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 = resul_up.append(result_down)
    result.head()
    
  • 合并方法:

    • 堆叠合并:堆叠合并就是简单的把两个表拼在一起
      • 横向堆叠(concat):axis=1将后一个表的数据堆叠到前一个表的后几列
      • 纵向堆叠(joinappendt):t(axis=0)指将后一个表的数据堆叠到前一个表的下几行
    • 主键合并:指前后两个表按照一个或者多个键匹配的方式连接起来,一般是以某一或多列为键,匹配其他列,很类似 SQL 中的 join。
      • merge 函数和 join 函数都可以实现主键合并
      • merge :不仅可以实现 SQL 中的 join 函数的全部功能,还可以在匹配的过程中对数据进行排序,通过其中的 sort 参数实现。
      • join :与 merge 函数 不同之处在于,join 函数要求两个主键的名称必须相同。
    • 重叠合并:数据处理的过程中会出现同样一份数据存储在两张表中,哪一张的数据都不算全,但是如果将其中一个表的数据补充进另外一个表中,生成的这张新表则是相对完整的数据。这种方法就叫重叠合并
      • combine_first函数

    参考文章

  • 分别介绍:

    • concat函数:
      • objs:参与连接的列表或字典,且列表或字典里的对象是pandas数据类型,唯一必须给定的参数
      • axis:指明连接的轴向,0是纵轴(上下合并),1是横轴,默认是0
      • join:指明轴向索引的索引是交集还是并集,‘inner’(交集),‘outer’(并集),默认是‘outer’

      注意:concat不会去重,要达到去重的效果可以使用drop_duplicates方法

    • join函数:
      • 参数意义基本和merge函数相同,只是join默认左外连接
    • merge函数:根据两组数据中的关键字key来合并(key在两组数据中是完全一致的)。
      • how:连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
      • on:用于连接的列名,必须同时存在于左右两个DataFrame对象中
      • left_index:使用左则DataFrame中的行索引做为连接键
      • right_index:使用右则DataFrame中的行索引做为连接键
    • append函数:append只有纵向合并,没有横向合并

    注意:
    1 join方法默认为左外连接how=left。
    2 concat默认的是外连接(outer join)
    3 merge默认的是内连接(inner join)


2 换一种角度看数据

  • 将数据变为Series类型的数据

    # 将完整的数据加载出来
    text = pd.read_csv('result.csv')
    text.head()
    # 代码写在这里
    unit_result=text.stack().head(20)
    unit_result.head()
    

    在这里插入图片描述

    #将代码保存为unit_result.csv
    unit_result.to_csv('unit_result.csv')
    test = pd.read_csv('unit_result.csv')
    test.head()
    

    在这里插入图片描述

  • stack函数:堆叠数组
    参考


3 数据聚合与运算

3.1 groupby机制

  • groupby函数:数据的分组和分组运算
  • 格式:df[].groupby([df[属性],df[属性]).mean()
    • df[]:(指输出数据的结果属性名称)
    • df[属性]:(指分类的属性,数据的限定定语,可以有多个)
    • mean():(对于数据的计算方式——函数名称)

3.2 数据运算

  • 任务二:计算泰坦尼克号男性与女性的平均票价

    df  = text['Fare'].groupby(text['Sex'])
    means = df.mean()
    means
    

    在这里插入图片描述

  • 任务三:统计泰坦尼克号中男女的存活人数

    survived_sex = text['Survived'].groupby(text['Sex']).sum()
    survived_sex.head()
    

    在这里插入图片描述

  • 任务四:计算客舱不同等级的存活人数

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

    在这里插入图片描述

    思考:从上面的数据可以看出,男性平均票价约是女性的两倍,女性存活的人数约是男性的两倍,并不是客舱等级越高存活人数越多,三等略低于一等舱存活数,二等舱存活人数最少。

  • agg()函数:agg函数通常用于调用groupby()函数之后,对数据做一些聚合操作,包括sum,min,max以及其他一些聚合函数

  • 任务五:统计在不同等级的票中的不同年龄的船票花费的平均值

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

    在这里插入图片描述

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

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

    在这里插入图片描述

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

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

    在这里插入图片描述

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

    在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文浅尝 | 利用常识知识图增强零样本和少样本立场检测

笔记整理:张嘉芮,天津大学硕士链接:https://aclanthology.org/2021.findings-acl.278.pd动机传统的数据驱动方法不适用于零样本和少样本的场景。对于人类来说,常识知识是理解和推理的关键因素。在没有标注数据和用户立场的隐晦表达…

2022最新MySQL高频面试题汇总

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

【C进阶】通讯录1.0(文末附原码)

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:C语言进阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们…

数据结构进阶 unordered_set unordered_map的使用

作者:小萌新 专栏:数据结构进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍高阶数据结构 unorder_set unorder_map的使用 unorder_set unorder_mapunordered系列关联式容器unordered_set介绍unordere…

微信小程序流量主提升ecpm的一些方法

本篇文章主要讲解:微信小程序流量主提升ecpm的一些方法 日期:2023年1月19日 作者:任聪聪 一、对ecpm的疑问和科普 什么是ecpm ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。 ecpm为什么会低? 微信官方…

KaiwuDB 数据服务平台 1.0 产品详解

大家好,今天我分享的是 KaiwuDB 数据服务平台(KDP),一款由我们独立自主研发,以 KaiwuDB 为核心的数据服务产品。KDP 产品建设目标是实现数据的云边端的一体化治理,提供一套完整的全生命周期服务。接下来我将…

2.5、线程概念和多线程模型

整体框架 1、什么是线程,为什么要引入线程? 还没有引入进程之前,各个程序只能串行执行 进程是程序的一次执行过程,但这些功能显然不可能是由一个程序顺序处理就能实现的 有的进程可能需要 “同时” 做很多事,而传统的…

伯俊ERP与金蝶云星空对接集成连通应收单新增

伯俊ERP与金蝶云星空对接集成表头表体组合查询连通应收单新增(应收单-标准应收单(KD应收单销售退)数据源系统:伯俊ERP未来,伯俊科技也会砥砺前行,不断为品牌提供更全面的零售终端致胜利器。伯俊科技始终坚持创新发展,探索大零售行…

【IDEA】自动部署SpringBoot Jar包到远程服务器并通过脚本启动jar

【IDEA】自动部署SpringBoot Jar包到远程服务器并通过脚本启动jar 文章目录 前言一.Deployment使用二.ssh使用三.启动脚本 前言 IDEA版本: 2019.3 一.Deployment使用 IDRA原生的Deployment不需要离开idea就可以直接将项目部署到远程运行,同时拥有远程视图窗口…

高并发系统设计 --计数服务抽离

传统计数 模糊计数 Cache DB。写Cache,批量刷新DB。 有一个写请求,我们就写cache,写一个在cache中1,buffer记一个,差不多(buffer满了,时间到了)写一次DB,丢数据也就丢…

JVM快速入门学习笔记(二)

临近过年,事太多,学习效率也好低,最近已经好久没搞学习了,发篇简单的学习笔记意思下吧 5. 沙箱安全机制 Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运…

Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离

CDB和PDB的职责分离一些数据库管理员管理整个CDB,而另一些管理员管理单个的pdb。.管理整个CDB的dba作为普通用户连接到CDB,管理整个CDB和根的属性,以及pdb的一些属性。例如,这些dba可以创建、拔出、插入和删除pdb。它们还可以为根…

【c语言】文件操作详解

主页:114514的代码大冒险 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 目录 前言 一、文件是什么 二、文件的打开和关闭 1.文件指针 2.文件的打开和关闭 三,文件的顺…

《计算机体系结构量化研究方法》 B.4 虚拟存储器 笔记

B.4 虚拟存储器 一、基本概念 1、虚拟存储器把物理存储器划分成块以后分配给不同的进程;采用一种保护机制来限制各个进程,使其仅能访问属于自己的块。 2、重定位机制允许同一程序在物理存储器中的任意位置运行。 3、页和段用于块,缺页错误…

SSM框架整合入门案例

文章目录SSM整合案例1,SSM整合1.1 流程分析1.2 整合配置步骤1:创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properties步骤8:创建Spring…

《Buildozer打包实战指南》第七节 常见的打包问题

目录 无法访问xxx网址,连接超时 目标路径xxx已经存在,并且不是一个空目录 每次打包时间都要很久 待更新 在打包过程中难免会碰到一些问题,在本节,笔者会把自己碰到的一些问题的解决方案写出来,好让读者节省时间。 …

KaiwuDB CTO 魏可伟:1.0 时序数据库技术解读

大家好,首先非常感谢大家参与本次 KaiwuDB 1.0 系列产品发布会。作为国内数据库新生品牌力量,KaiwuDB 是浪潮集团控股的数据库企业,我们聚焦在工业物联网、数字能源、交通车联网、智慧产业等快速发展的重要领域,希望为各大行业客户…

06技术太卷我学APEX-技术太卷我学APEX

06技术太卷我学APEX-技术太卷我学APEX 0 概述 自学APEX第7天,用APEX做了一个自学的笔记APP,名称就叫《技术太卷我学APEX》 1 登录页面 登录页面设置:就改了下名称和加上了测试账号。 登录页面效果: 这个是 APEX功能页面之一…

前端面试题合集-第一篇

前端面试题合集-第一篇 🔔每周不定时更新! ⛄️不要让自己失去竞争力! ☀️哪里都不是避风港,保持竞争力! 1. CSS选择器的优先级 !important>内联>id选择器>类选择器>标签选择器>通配符选择器>继承 在同一…

Java IO流补充 - Properties - IO流框架commons-io

文章目录IO流补充知识Properties结合IO流集合IO流框架IO流补充知识 Properties结合IO流集合 我们先来认识Properties属性集对象 Properties其实就是一个Map集合,但是我们一般不会当集合使用,因为HashMap更好用。 Properties核心作用: 属性文件&#xf…