DW动手学数据分析Task4:数据可视化

news2024/11/16 19:38:19

目录

  • 1 了解matplotlib
  • 2 可视化图案
  • 3 matplotlib用法
  • 4 了解Seaborn

1 了解matplotlib

  • Matplotlib: 是 Python 的绘图库, 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

2 可视化图案

  • 基本可视化团及场景使用
    • 柱状图
      • 场景:展示多个分类的数据变化和同类别各变量之间的比较情况。
      • 适用:对比分类数据
      • 局限:分类过多则无法展示数据特点
    • 条形图
      • 场景:类似柱状图,只不过两根轴对调一下
      • 适用:类别名称过长,将有大量空白位置标示每个类别的名称
      • 局限:分类过多则无法展示数据特点
    • 折线图
      • 场景:展示数据随时间或有序类别的波动情况的趋势变化
      • 适用:有序的类别,比如时间
      • 局限:无序的类别无法展示数据特点
    • 柱线图
      • 场景:结合柱状图和折线图在同一个图表展现数据
      • 适用:要同时展现两个项目数据的特点
      • 局限:有柱状图和折线图两者的缺陷
    • 散点图
      • 场景:用于发现各变量之间的关系
      • 适用:存在大量数据点,结果更精准,比如回归分析
      • 局限:数据量小的时候会比较混乱
    • 饼图
      • 场景:用来展示各类别占比,比如男女比例
      • 适用:了解数据的分布情况
      • 局限:分类过多,则扇形越小,无法展现图表
    • 雷达图
      • 场景:将多个分类的数据量映射到坐标轴上,对比某项目不同属性的特点
      • 适用:了解同类别的不同属性的综合情况,以及比较不同类别的相同属性差异
      • 局限:分类过多或变量过多,会比较混乱
    • 漏斗图
      • 场景:用梯形面积表示某个环节业务量与上一个环节之间的差异
      • 适用:有固定流程并且环节较多的分析,可以直观地显示转化率和流失率
      • 局限:无序的类别或者没有流程关系的变量
    • 瀑布图
      • 场景:采用绝对值与相对值结合的方式,展示各成分分布构成情况,比如各项生活开支的占比情况
      • 适用:展示数据的累计变化过程
      • 局限:各类别数据差别太大则难以比较

3 matplotlib用法

  • plt.figure()函数:生成一个画布
    • 格式:figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
    • num:图像编号或名称,数字为编号,字符串为名称
    • figsize:指定figure的宽和高,单位为英寸
    • dpi:指定绘图对象的分辨率
    • facecolor:背景颜色
    • edgecolor:边框颜色
    • frameon:是否显示边框
  • plt.plot()函数:用于画图
    • kind:图形种类,可以使’line’,'bar’等
    • grid:显示轴网格线
  • 添加轴坐标标签、表头
    • plt.xlabel:添加x轴坐标标签
    • plt.ylabel:添加y轴坐标标签。可以设置字体大小(fontsize=)
    • plt.title:添加表头,有很多参数可以设置
      • fontsize:字体大小
      • backgroudcoloe:背景颜色
      • fontweight:字体粗细,[‘light’,‘normal’,‘bold’]
      • color:字体颜色
      • verticalalignment:对齐方式, ‘center’ , ‘top’ , ‘bottom’ ,‘baseline’
  • plt.legend():给绘图加上图例
  • plt.show():显示绘图
  • 【任务二:可视化展示泰坦尼克号数据集中男女中生存人数分布情况】
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    text = pd.read_csv(r'result.csv')
    
    sex = text.groupby('Sex')['Survived'].sum()
    sex.plot.bar()
    plt.title('survived_count')
    plt.show()
    
    在这里插入图片描述
  • 【任务三:可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图】
    # 提示:计算男女中死亡人数 1表示生存,0表示死亡
    text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')
    plt.title('survived_count')
    plt.ylabel('count')
    
    
    在这里插入图片描述
  • 【任务四:可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。】(横轴是不同票价,纵轴是存活人数)
    # 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
    fare_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False) # 降序排列
    fare_sur
    
    在这里插入图片描述
    # 排序后绘折线图
    fig = plt.figure(figsize=(20, 18))
    fare_sur.plot(grid=True) # 显示网格线
    plt.legend() # 给图像加上图例
    plt.show()
    
    在这里插入图片描述
    # 排序前绘折线图
    fare_sur1 = text.groupby(['Fare'])['Survived'].value_counts()
    fare_sur1
    
    在这里插入图片描述
    fig = plt.figure(figsize=(20, 18))
    fare_sur1.plot(grid=True)
    plt.legend()
    plt.show()
    
    在这里插入图片描述

4 了解Seaborn

  • 什么是seaborn:
    • Seaborn是基于matplotlib的图形可视化python包,在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易
    • 应该把Seaborn视为matplotlib的补充
  • sns.countplot函数
    • 作用:countplotseaborn库中分类图的一种,作用是使用条形显示每个分箱器中的观察计数
    • x:x轴名称
    • y:y轴名称
    • hue:分组绘图参数
    • data:原始数据df对象
  • 【任务五:可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况】
    # 1表示生存,0表示死亡
    pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts()
    pclass_sur
    
    在这里插入图片描述
    import seaborn as sns
    sns.countplot(x="Pclass", hue="Survived", data=text)
    
    在这里插入图片描述
  • FaceGrid函数:
    • 作用:当想要在数据集的子集中分别可视化变量的分布或多个变量之间的关系时,该类非常有用
    • 维度关系:一个FacetGrid可以与多达三个维度可以得出:row,col,和hue。前两个与得到的轴阵列有明显的对应关系; 将色调变量视为沿深度轴的第三个维度
    • 工作流程:
      • 首先,FacetGrid使用数据集和用于构造网格的变量初始化对象
      • 然后,可以通过调用FacetGrid.map()或将一个或多个绘图函数应用于每个子集 FacetGrid.map_dataframe()
      • 最后,可以使用其他方法调整绘图,以执行更改轴标签,使用不同刻度或添加图例等操作
  • kdeplot:可用于对单变量和双变量进行核密度估计并可视化
  • 参数kde:是否绘制核密度图
  • 【任务六:可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况】
    facet = sns.FacetGrid(text, hue="Survived",aspect=3)
    facet.map(sns.kdeplot,'Age',shade= True)
    facet.set(xlim=(0, text['Age'].max()))
    facet.add_legend()
    
    在这里插入图片描述
  • 【任务七:可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况】
    text.Age[text.Pclass == 1].plot(kind='kde')
    text.Age[text.Pclass == 2].plot(kind='kde')
    text.Age[text.Pclass == 3].plot(kind='kde')
    plt.xlabel("age")
    plt.legend((1,2,3),loc="best")
    
    在这里插入图片描述

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

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

相关文章

如何实现机械臂的正解计算?

1. 机械臂运动学介绍 机械臂运动学 机器人运动学就是根据末端执行器与所选参考坐标系之间的几何关系,确定末端执行器的空间位置和姿态与各关节变量之间的数学关系。包括正运动学(Forward Kinematics)和逆运动学(Inverse Kinematic…

在线支付系列【3】支付安全之对称和非对称加密

有道无术,术尚可求,有术无道,止于术。 文章目录前言信息安全加密机制核心概念对称加密非对称加密JCE对称加解密1. 创建密钥2. 加密3. 解密非对称加解密1. 创建密钥2. 公钥加密3. 私钥解密前言 支付和金钱挂钩,支付安全显得尤为重…

域名被封的解决方案

如果您的域名被封,可能是域名下网站存在非法信息或敏感内容,导致被GFW屏蔽。 封禁原因及解决方案如下: 1. 域名解析的IP纳入黑名单 这种情况只需更换IP即可恢复正常,但换IP也只能解除一时的燃眉之急,一旦又被GFW发现很…

MySQL进阶——视图(view)

1. 视图 1.1 视图介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑&#xf…

MySQL详细教程,2023年硬核学习路线

文章目录前言1. 数据库的相关概念1.1 数据1.2 数据库1.3 数据库管理系统1.4 数据库系统1.5 SQL2. MySQL数据库2.1 MySQL安装2.2 MySQL配置2.2.1 添加环境变量2.2.2 新建配置文件2.2.3 初始化MySQL2.2.4 注册MySQL服务2.2.5 启动MySQL服务2.3 MySQL登录和退出2.4 MySQL卸载2.5 M…

【Python】如何为Matplotlib图像添加标签?

一、添加文本标签 plt.text() 用于在绘图过程中,在图像上指定坐标的位置添加文本。需要用到的是plt.text()方法。 其主要的参数有三个: plt.text(x, y, s)其中x、y表示传入点的x和y轴坐标。s表示字符串。 需要注意的是,这里的坐标&#x…

基于Springboot+Mybatis+mysql+vue电影院在线售票系统

基于SpringbootMybatismysqlvue电影院在线售票系统一、系统介绍二、所用技术三、功能展示1.主页(普通用户)2.影院管理员相关功能(影院管理员)3.系统管理权限(管理员)四、获取源码一、系统介绍 电影院网上售票系统拥有三种角色,用户、工作人员…

三星K2200复印机提示更换传输卷问题的简单处理

故障现象: 三星K2200复印机开机后提示更换传输卷; 故障分析与处理: 三星K2200复印机提示更换传输卷是转印带使用寿命到期,三星k2200复印件更换传输卷,是指转印带使用寿命到期了,需要更换传输卷。如果这台机器报传输卷一般是这台机器也有一条转印带,如果报这个看看上面…

C/C++数据结构(十一)—— 平衡二叉树(AVL树)

文章目录1. AVL树的概念2. AVL树的结点3. AVL树的插入🍑 更新平衡因子🍑 插入函数的实现4. AVL树的旋转🍑 左单旋🍑 右单旋🍑 左右双旋🍑 右左双旋🍑 总结6. AVL树的删除🍑 算法思想…

基于EasyExcel实现百万级数据导入导出

基于EasyExcel实现百万级数据导入导出 在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。 很多问题只要这一次…

2022-12-08版本:Open Inventor Toolkit SDK Crack

为什么使用 Open Inventor Toolkit Open Inventor SDK 是一种商业 3D 软件开发工具包 ( SDK ),适用于医疗和牙科、石油和天然气、工程领域的专业应用。 Open Inventor其面向对象的 API、可扩展的架构及其大量高级组件为软件开发人员提供了一个高级平台,…

JUC面试(五)——Collection线程不安全

Collection线程不安全 前言 当我们执行下面语句的时候&#xff0c;底层进行了什么操作 new ArrayList<Integer>(); 底层创建了一个空的数组&#xff0c;伴随着初始值为10 当执行add方法后&#xff0c;如果超过了10&#xff0c;那么会进行扩容&#xff0c;扩容的大小…

Spring源码学习:三级缓存的必要性

目录前言概述正文Spring的生命周期Spring中循环依赖场景Spirng中的三级缓存Spring一级缓存解决循环依赖Spring二级缓存解决循环依赖Spring三级缓存解决循环依赖总结前言 工作中可能会碰到循坏依赖问题&#xff0c;所以了解其Spring设计原理&#xff0c;对于解决问题更加高效。…

c++ - 第26节 - c++知识梳理

1.STL知识梳理 STL知识掌握&#xff1a; 底层实现角度&#xff1a;六大组件 上层用的角度&#xff1a;容器、算法、迭代器 底层实现角度&#xff1a; 注&#xff1a; 1.可以认为迭代器是容器和算法的粘合剂&#xff0c;如果没有迭代器&#xff0c;那么算法要访问容器有两大问题…

三种循环的区别

三种循环的区别:1.for循环和while循环先判断条件是否成立&#xff0c;然后决定是否执行循环体&#xff08;先判断后执行)2.do..while循环先执行一次循环体&#xff0c;然后判断条件是否成立&#xff0c;是否继续执行循环体(先执行后判断)for和while的区别:1.条件控制语句所控制…

英语学习打卡day2

2023.1.20 1.if虚拟语气的倒装 If it were not for your help, I would be homeless. Were it not for your help, I would be homeless. 要不是你的帮助&#xff0c;我会无家可归。 2.plausible adj.似乎有理的;有道理的 plaus拍手&#xff0c;鼓掌 ible可…的- >能鼓掌的…

注册中心(一)

注册中心&#xff08;一&#xff09; 业务痛点 项目的架构从以前的单体结构发展到现在的微服务。不仅服务的数量变的多了&#xff0c;而且服务都是多节点的部署。 假如在serviceA去调用serviceB&#xff0c;当serviceA会在配置中配置一个serviceB的ip和port进行通信。 当se…

如何安装配置hbase

当完成hdfs、zookeeper的安装配置后&#xff0c;现在进入到hbase的安装和配置环节。这样的做的目的之一是要把海量的数据存入到hbase数据库中。JDK版本的要求hbase对JDK版本是有要求的&#xff0c;不是JDK版本越高越好&#xff0c;根据我走过的坑&#xff0c;目前最好的JDK版本…

LeetCode刷题复盘笔记—一文搞懂贪心算法之122. 买卖股票的最佳时机 II问题(贪心算法系列第三篇)

今日主要总结一下可以0贪心算法解决的一道题目&#xff0c;122. 买卖股票的最佳时机 II 题目&#xff1a;122. 买卖股票的最佳时机 II Leetcode题目地址 题目描述&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&am…

深度学习实战 —— LSTM轨迹预测

前言 最近写了一份用LSTM之类的序列模型+SeNet预测轨迹,经过一系列调试效果最后比较理想了。记录下~ 上效果: 一些效果图 训练误差图: 测试误差图: 训练损失: 测试损失: batch平均耗时: 拟合效果: