首页 > 其他分享 >数据处理与统计分析篇-day10-Matplotlib数据可视化

数据处理与统计分析篇-day10-Matplotlib数据可视化

时间:2024-09-25 15:21:29浏览次数:12  
标签:plt day10 Matplotlib dataset set anscombe ax 可视化 tips

数据可视化简介

可视化介绍

  1. 数据可视化是指直观展现数据,它是数据处理过程的一部分。

  2. 把数值绘制出来更方便比较。借助数据可视化,能更直观地理解数据,这是直接查看数据表做不到的

  3. 数据可视化有助于揭示数据中隐藏的模式,数据分析时可以利用这些模式选择模型

可视化库介绍

基于Matplotlib 绘制静态图形
  1. pandas

  2. seaborn

基于JS (javaScript)
  1. pyecharts/echarts

  2. plotly

Matplotlib的API介绍

Matplotlib提供了两种方法作图: 状态接口面向对象

import numpy as np
​
import matplotlib.pyplot as plt
​
plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示汉字
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
​
import pandas as pd
import os
​
os.chdir(r'D:\CodeProject\03data_processing_analysis\my_project')
os.getcwd()

状态接口

步骤:
  1. 准备x轴和y轴的数据

  2. 创建画布: plt.figure(figsize=(画布大小)). figure: 创建画布, figsize: 指定画布大小

  3. 绘图, 传入x轴和y轴数据: plt.plot(x, y)

  4. 设置x轴和y轴坐标及范围: plt.xlim(0, 10), plt.xlim(0, 10)

  5. 设置网格: plt.grid(True)

  6. 设置x轴和y轴的标签: plt.xlabel('标签内容', size=大小(数字))

    plt.xlabel('标签内容', size=大小(数字))

  7. 设置标题: plt.title('内容', size=大小(数字))

  8. 具体显示绘图结果: plt.show()

代码:
# 准备x轴和y轴的一些坐标点, 结合x, y轴就可以确定一个点的位置
x = [1, 3, 2, -1]
y = [3, 11, 8, 3]
​
# 创建1个画板
plt.figure(figsize=(12, 6))
​
# 开始绘图
plt.plot(x, y)
​
# 设置坐标值的范围
plt.xlim(-1, 3)
plt.ylim(0, 11)
​
# 设置网格
plt.grid(True)
​
# 设置x和y轴标签
plt.xlabel('x轴')
plt.ylabel('y轴')
​
# 设置标题
plt.title('状态接口', fontsize=21)
​
# 具体绘图动作
plt.show()
结果图

面向对象

步骤:
  1. 准备x轴 和 y轴的一些坐标点, 结合x, y轴就可以锁定1个点的位置.

  2. 创建画布和坐标对象: fig, ax = plt.subplots(figsize=(范围))

  3. 利用坐标对象开始绘图: ax.plot(x, y)

  4. 设置坐标值的范围: ax.set_xlim(范围), ax.set_ylim(范围)

  5. 设置网格: ax.grid(True)

  6. 设置x轴和y轴坐标: ax.set_xlabel('x轴'), ax.set_xlabel('x轴')

  7. 设置标题: ax.set_title('内容')

  8. 具体绘图结果: plt.show()

代码:
# 主备x轴和y轴的一些坐标点, 结合x, y轴就可以确定一个点的位置
x = [1, 3, 2, -1]
y = [3, 11, 8, 3]
​
# 调用函数, 创建1个画板, 及坐标对象
fig, ax = plt.subplots(figsize=(12, 6))
​
# 开始绘图
ax.plot(x, y)
​
# 设置坐标值的范围
ax.set_xlim(-1, 3)
ax.set_ylim(0, 11)
​
# 设置网格
ax.grid(True)
​
# 设置x和y轴标签
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
​
# 设置标题
ax.set_title('状态接口', fontsize=21)
​
# 具体绘图动作
plt.show()
结果图

散点图-可视化重要性

数据集介绍

  1. 通过Anscombe数据集说明数据可视化的重要性

  2. Anscombe数据集由英国统计学家Frank Anscombe创建

  3. 数据集包含4组数据,每组数据包含两个连续变量。

  4. 每组数据的平均值、方差、相关性基本相同,但是当它们可视化后,就会发现每组数据的模式明显不同。

describe()查看数据的查看数据的分布情况

发现每组数据中, x, y 的分布情况基本相同, 从均值, 极值和几个4分位数上看, 这几组数据貌似分布差不多

anscombe = pd.read_csv('data/anscombe.csv')
anscombe
​
anscombe.describe()
anscombe[anscombe.dataset == 'I'].describe()
anscombe[anscombe.dataset == 'II'].describe()
anscombe[anscombe.dataset == 'III'].describe()
anscombe[anscombe.dataset == 'IV'].describe()
​
# 上述格式的合并版, 按照 dataset进行分组, 然后统计.
anscombe.groupby('dataset').describe().T  # 转置矩阵
anscombe.groupby('dataset').describe().T

代码-数据可视化

# 可视化
# 获取画布对象
fig = plt.figure(figsize=(16, 8))
​
# 获取坐标轴对象
# 2行2列, 对应坐标轴1, 即: 第1个位置. 
ax1 = fig.add_subplot(2, 2, 1)
# 2行2列, 对应坐标轴2, 即: 第2个位置. 
ax2 = fig.add_subplot(2, 2, 2)
# 2行2列, 对应坐标轴3, 即: 第3个位置. 
ax3 = fig.add_subplot(2, 2, 3)
# 2行2列, 对应坐标轴4, 即: 第4个位置. 
ax4 = fig.add_subplot(2, 2, 4)
​
# 绘制散点图的过程
# 下述两种写法效果一致
ax1.scatter(anscombe[anscombe.dataset == 'I'].x, anscombe[anscombe.dataset == 'I'].y)
ax2.scatter(anscombe[anscombe.dataset == 'II'].x, anscombe[anscombe.dataset == 'II'].y)
ax3.scatter(anscombe.query("dataset == 'III'").x, anscombe.query("dataset == 'III'").y)
ax4.scatter(anscombe.query("dataset == 'IV'").x, anscombe.query("dataset == 'IV'").y)
​
# 设置标题
# 子集
ax1.set_title('数据集I', fontsize=15)
ax2.set_title('数据集II', fontsize=15)
ax3.set_title('数据集III', fontsize=15)
ax4.set_title('数据集IV', fontsize=15)
# 画布标题
fig.suptitle('安斯克姆数据集', fontsize=21)
​
# 具体绘图过程
plt.show()

结果图

单变量直方图

格式

df对象/plt.hist(total_bill, bins)

total_bill: 表示要绘制的列

bins: 分成几个区间(底层是等差数列)

等差数列(分成10个区间需要11个值), 生成3.07 ~ 50.81区间的11个等差数列

np.linspace(3.07, 50.81, 11)

直方图的高度, 就是落到每个区间中的数据的条目数

代码

tips = pd.read_csv('data/tips.csv')
tips
​
tips.describe()  # total_bill: 最小值:3.070000, 最大值: 50.810000
​
# 绘制直方图
# hist(): total_bill: 表示要绘制的列,  bins: 分成几个区间(底层是等差数列)
# 等差数列(分成10个区间需要11个值)
# 生成3.07 ~ 50.81区间的11个等差数列
# np.linspace(3.07, 50.81, 11)
​
# pandas写法
# tips.hist('total_bill', bins=10, figsize=(16, 8))
​
# Matplotlib写法
plt.hist(tips.total_bill, bins=10)
plt.xlabel('消费金额')
plt.ylabel('频次')
plt.title('消费金额-直方图(适用于单变量)', fontsize=21)
plt.show()

结果图

双变量散点图

概述

  1. 双变量(bivariate)指两个变量

  2. 散点图用于表示一个连续变量随另一个连续变量的变化所呈现的大致趋势

  3. 例如: 了解账单金额小费之间的关系可以绘制散点图

代码

# 画布
plt.figure(figsize=(12, 6))
# 绘制散点图
plt.scatter(tips.total_bill, tips.tip)
# 横纵坐标
plt.xlabel('消费金额')
plt.ylabel('消费')
# 设置标题
plt.title('消费金额-消费关系图')
# 具体画图
plt.show()

结果图

多变量散点图

概述

  1. 在散点图的基础上, 可以通过颜色来区分不同的类别

  2. 散点的大小也可以用来表示一个变量

代码

# 在上述基础上, 增加性别信息
tips
​
# 给原始数据增加一列, 根据性别显示颜色
tips['sex_color'] = tips.sex.apply(lambda sex: 'blue' if sex == 'Female' else 'black')
tips
​
# 绘图
plt.figure(figsize=(16, 6))
plt.scatter(tips.total_bill, tips.tip, c=tips.sex_color, alpha=1,
            s=tips['size'] * tips['size'] * tips['size'] * tips['size'])
# 横纵坐标
plt.xlabel('消费金额')
plt.ylabel('小费')
​
# 设置图例
from matplotlib.lines import Line2D
legend_elements = [Line2D([0], [0], marker='o', color='w', label='Female', 
                            markerfacecolor='blue', markersize=10),
                   Line2D([0], [0], marker='o', color='w', label='Male', 
                            markerfacecolor='black', markersize=10)]
​
plt.legend(handles=legend_elements)
​
# 设置标题
plt.title('消费金额-消费关系图')
# 具体画图
plt.show()

结果图

标签:plt,day10,Matplotlib,dataset,set,anscombe,ax,可视化,tips
From: https://blog.csdn.net/m0_60916732/article/details/142491208

相关文章

  • GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.7.0发布 新增各项优化与BUG修复
    GZY.Quartz.MUI(基于Quartz的UI可视化操作组件)2.7.0发布新增各项优化与BUG修复 前言时隔大半年,终于抽出空来可以更新这个组件了(边缘化了,大概要被裁员了)2.7.0终于发布了~更新内容:1.添加API类任务的超时时间,可以通过全局配置也可以单个任务设置2.设置定时任务日......
  • 模块“matplotlib.cm”没有“Blues”成员
    importmatplotlib.pyplotaspltx_value=range(1,500)y_value=[x**3forxinx_value]plt.style.use('Solarize_Light2')fig,ax=plt.subplots()ax.scatter(x_value,y_value,c=y_value,cmap=plt.cm.Blues,s=5)plt.show()plt.savefig(&#......
  • 在 python 中可视化四元数
    我在无人机上安装了一个IMU,每0.1秒收集一次四元数数据(w,x,y,z)。现在我想将四元数数据与实际的无人机方向(视频数据)进行比较。所以我想创建某种盒子对象来显示基于四元数数据的方向。我实现了以下教程,将四元数转换为欧拉以进行可视化:https://www.youtube.com/watch?......
  • 3d可视化图片:通过原图和深度图实现
    1、depthy在线体验demo:https://depthy.stamina.pl/#/也可以docker安装上面服务:dockerrun--rm-t-i-p9000:9000ndahlquist/depthyhttp://localhost:90001)首先传原图2)再传对应深度图3)效果</ifra......
  • 五款免费可视化工具全解析:选择你的最佳搭档
    1.山海鲸可视化介绍:山海鲸可视化是一款免费的国产可视化报表软件,与许多其他宣传免费的软件不同,山海鲸的报表功能完全免费并且没有任何限制,就连网站管理后台这个功能也是免费的。同时山海鲸可视化还提供了种类丰富的可视化图表、三维模型、模板可供使用,软件采用点击拖拽操作,新手......
  • COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件
    COMTRADE录波文件|可视化工具|电能质量查看软件主要功能介绍支持IEEEStdC37.111-1991/1999/2013规范。读取ASCII或二进制COMTRADE文件。查看来自COMTRADE配置文件的模拟和数字通道列表。将图表导出为SVG、BMP、JPEG和PNG图形格式。将显示的观察结果以CSV文件......
  • 计算机专业毕设选题推荐-基于python知识图谱的医疗可视化分析系统
    ......
  • 抛开线性回归模型,基于树模型来尝试构建回归模型,可视化绘制树状层级结构
    一提到回归,可能很多人第一时间脑海里想到的就是线性回归模型,的确,线性回归器可以说是非常常用的模型了。线性回归模型广泛应用于各种领域,如经济学、金融学、社会科学、工程学等。它可以用于预测、因果分析、趋势分析等。线性回归模型是一种广泛应用于统计学和机器学习中的预测模......
  • Axure大屏可视化模板:跨领域数据分析平台原型案例
    随着信息技术的飞速发展,数据可视化已成为各行各业提升管理效率、优化决策过程的重要手段。Axure作为一款强大的原型设计工具,其大屏可视化模板在农业、园区、城市、企业数据可视化、医疗等多个领域得到了广泛应用。本文将通过几个具体案例,展示Axure大屏可视化模板在不同领域中的......
  • Python可视化过程中.pictures.add这里一直报错,不明原因
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【沐子山树】问了一个Python可视化的问题,问题如下:importmatplotlib.pyplotasplt#创建一个简单的图表fig,ax=plt.subplots()ax.plot([1,2,3,4])ax.set_ylabel('somenumbers')#保存图表为PNG文件temp......