IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 数据分析第四回-数据可视化 -> 正文阅读

[人工智能]数据分析第四回-数据可视化

数据可视化

本文记录2022年3月组队学习-动手学数据分析教程知识点,采用kaggle上泰坦尼克的任务,实战数据分析全流程。
教程内容开源地址:
github: https://github.com/datawhalechina/hands-on-data-analysis
gitee:https://gitee.com/datawhalechina/hands-on-data-analysis

接下来要重点研究一下数据可视化。本章我们着重研究一下matplotlib绘图库。Matplotlib可以说是python数据可视化最重要且常见的工具之一,每一位和数据打交道的人几乎都不可避免要用到,此外也有大量的可视化工具是基于matplotlib做的二次开发。
matplotlib官网指南:https://matplotlib.org/stable/tutorials/introductory/usage.html

4.1 准备

本次实验平台为: Jupyter NotebookNumpyPandasmaplotlib

# 导入基本库
# 设置matplotlib在jupyter notebook的图表绘图
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 设置图表中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

4.2 matplotlib相识

4.2.1 认识matplotlib

知识点:

  • Matplotlib是一个Python 2D绘图库,用来绘制各种静态,动态,交互式的图表。
  • Matplotlib可用于Python脚本PythonIPython ShellJupyter notebookWeb应用程序服务器和各种图形用户界面工具包等。主要提供三个接口:plt接口、面向对象接口pylab接口。本文主要研究plt()接口。
4.2.2 matplotlib画像
1. 图像创建
  • Matplotlib的图像是画在figure(如windowsjupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。最简单的创建figure以及axes的方式是通过pyplot.subplots命令,创建axes以后,可以使用Axes.plot绘制最简易的折线图。
    例如:绘制折线图。
fig, ax = plt.subplots()  # 创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 3, 2, 4])  # 绘制图像

在这里插入图片描述

2. Figure的组成
  • Figure:顶层级,用来容纳所有绘图元素 。
  • Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成。
  • Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素。
  • Tick:axis的下属层级,用来处理所有和刻度有关的元素。
  • Grid:添加图表网格线。
  • legend:在图表中添加label图例参数后。
  • xlabel/ylabel:分别用于设置x、y轴标题。
  • xticks/yticks:分别用于自定义坐标轴刻度显示。
  • text/arrow/annotation:分别在图例指定位置添加文字、箭头和标记。
    在这里插入图片描述
3. 常用图表
  • plot:折线图或点图。
  • scatter:散点图。
  • bar/barh:条形图或柱状图。
  • hist:直方图。
  • pie:饼图。

4.3 绘图实战

知识点:
绘图流程主要分为三步:

  • 创建画板(包括创建figure对象和axes对象)。
  • 绘制图表(条形图,折线图等)。
  • 配置图例(title、legend等)。

接下来我们将按照三步规律完成任务。

4.3.1 可视化展示泰坦尼克号男女生中生存人数分布情况
  • 首先我们要先处理数据,因为需要用到对于性别与生存人数的统计,我们需要用到前面学到的groupby()归类后分别对人数进行sum()求和,得到目标数据的dataframe
  • 接下来创建画布,在figure对象进行绘画。
  • 选择图表为柱状图来直观展示分布情况。
  • 图例添加title。
sex = result.groupby('Sex')['Survived'].sum()
# 这里sex为dataframe可以直接调用plot绘制图表
sex.plot.bar()
plt.title('survived_count')
plt.show()

在这里插入图片描述

sex = result.groupby("Sex")["Survived"].sum()
plt.figure(figsize=(1,3))
plt.bar("Sex", sex["male"])
plt.bar("Sex", sex["female"], bottom = sex["male"])
plt.legend()
plt.title("生存人数分布情况")
plt.show()

在这里插入图片描述

4.3.2 可视化展示泰坦尼克号男女生中生存与死亡比例图
  • 首先我们要先处理数据,因为需要用到对于性别与生存人数的统计,我们需要用groupby()归类后分别对人数以及生存人数进行分类,再加上count()得到多维索引数据,要通过unstack()降维度,得到目标数据的dataframe
  • 接下来创建画布,在figure对象进行绘画。
  • 选择图表为柱状图堆叠来直观展示分布情况。
  • 图例添加图例、标题。
label = ["female", "male"]
Survived_temp = result.groupby(["Sex","Survived"])["Name"].count()
plt.figure(figsize=(5, 5))
plt.bar(label[0], Survived_temp[label[0]][0], label="女生死亡")
plt.bar(label[0], Survived_temp[label[0]][1], label="女生生存", bottom=Survived_temp[label[0]][0])
plt.bar(label[1], Survived_temp[label[1]][0], label="男生死亡")
plt.bar(label[1], Survived_temp[label[1]][1], label="男生生存", bottom=Survived_temp[label[1]][0])
plt.legend()
plt.title('survived_count')
plt.ylabel('count')
plt.show()

在这里插入图片描述

# 提示:计算男女中死亡人数 1表示生存,0表示死亡
# 使用unstack()降维
result.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')
plt.title('survived_count')
plt.ylabel('count')

在这里插入图片描述

4.3.3 可视化展示泰坦尼克号不同票价的人生存和死亡人数分布情况
  • 使用groupby()Fare进行聚类,获得其中的Survived的人数数据,并对人数按照票价索引进行排序。
  • 接下来创建画布,在figure对象进行绘画。
  • 选择图表为折线图来直观展示分布情况。
  • 图例添加方格线、标题。
result.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False).plot(grid=True)
plt.legend()
plt.title("Survived")
plt.show()

在这里插入图片描述

4.3.4 可视化展示泰坦尼克号不同仓位等级的人生存和死亡人员的分布情况
  • 对仓位等级以及生存情况进行聚类,统计Survived存活人数的count(),使用unstack()降维,获得目标DataFrame
  • 接下来创建画布,在figure对象进行绘画。
  • 选择图表为柱状图来直观展示分布情况。
  • 图例添加标题。
result.groupby(["Pclass", "Survived"])["Survived"].count().unstack().plot(kind="bar")

在这里插入图片描述

import seaborn as sns
sns.countplot(x="Pclass", hue="Survived", data=text)

在这里插入图片描述

4.3.5 可视化展示泰坦尼克号不同年龄的人生存与死亡人数分布情况
  • 分别统计Survived存活人数的年龄count(),获得目标DataFrame
  • 接下来创建画布,在figure对象进行绘画。
  • 选择图表为密度曲线来直观展示分布情况。
result["Age"][result["Survived"] == 0].plot(kind='kde')
result["Age"][result["Survived"] == 1].plot(kind='kde')
plt.xlabel("age")
plt.legend(("死亡","生存"),loc="best")

在这里插入图片描述

sns.kdeplot(result[result['Survived'] == 0]['Age'], label='死亡')
sns.kdeplot(result[result['Survived'] == 1]['Age'], label='存活')

在这里插入图片描述

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()

在这里插入图片描述

4.3.6 可视化展示泰坦尼克号不同仓位等级的人年龄分布情况
  • 分别统计"Pclass"不同等级下人物的年龄count(),获得目标DataFrame
  • 接下来创建画布,在figure对象进行绘画。
  • 选择图表为密度曲线来直观展示分布情况。
result.Age[result.Pclass == 1].plot(kind='kde')
result.Age[result.Pclass == 2].plot(kind='kde')
result.Age[result.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")

在这里插入图片描述

sns.kdeplot(result[result['Pclass'] == 1]['Age'], label='仓位等级1')
sns.kdeplot(result[result['Pclass'] == 2]['Age'], label='仓位等级2')
sns.kdeplot(result[result['Pclass'] == 3]['Age'], label='仓位等级3')

在这里插入图片描述

4.4 总结

数据可视化的重点在于能够发现数据之间变化的趋势,整体的规律,能够最快最直观的理解数据所要表达的具体内涵,这样才能有助于我们进一步去挖掘甚至于使用。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:32:32  更:2022-03-24 00:36:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 2:06:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码