DW动手学数据分析Task4:数据可视化
创始人
2024-05-14 12:41:42
0

目录

  • 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")
    
    在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...