• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

第五章. 可视化数据图表—常用图表的绘制4—箱形图,3D图表

武飞扬头像
归途^ω^
帮助1

第五章. 可视化数据分析图

5.3 常用图表的绘制4—箱形图,3D图表

本节主要介绍常用图表的绘制,主要包括箱形图,3D柱形图,3D曲面图。

1.箱形图(matplotlib.pyplot.boxplot)

·箱形图又称箱线图、盒须图或盒式图
·用于显示一组数据分散情况的统计图
·优点:不受异常值的影响,可以以一种相对稳定的方式描述数据的离散分布情况,也常用于异常值的识别

1).语法:

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None

参数说明:
x:指定要绘制箱形图的数据
notch:是否以凹口的形式展现箱形图,默认False
sym:指定异常点的形状,默认‘ ’
vert:是否需要将箱形图垂直摆放,默认True
whis:指定上下限与上下四分位的距离,默认1.5倍的四分位差
positions :指定箱形图的位置,默认位[0,1,2…]
widths:指定箱形图的宽度,默认为0.5
patch_artist:是否填充箱体的颜色
meanline:是否用线的形式表示均值,默认用点
showmeans: 是否显示均值,默认False
showcaps:是否显示箱形图顶端和末端的两条线,默认True
showbox:是否显示箱形图的箱体,默认True
showfliers:是否显示异常值,默认True
boxprops:设置箱子的属性,如边框色,填充色
labels:为箱体填充标签,类似于图例
flierprops: 设置异常值的属性,如异常点的形状,颜色,填充色
medianprops:设置中位数的属性,如线的类型,颜色
meanprops: 设置均值的属性,如点的大小,颜色
capprops:设置箱形图顶端和末端线条的属性,如颜色,粗线
whiskerprops:设置必须的属性,如颜色,粗细,线的类型等

2).示例:

清单.xlsx表格中的数据
学新通

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet6')

plt.boxplot(x=df['value'], whis=1.5, widths=0.5, patch_artist=True, showmeans=True, boxprops={'facecolor': 'c'},
            flierprops={'markerfacecolor': 'red', 'markersize': 4},
            meanprops={'marker': '*', 'markerfacecolor': 'skyblue'}, medianprops={'linestyle': '--', 'color': 'orange'},
            capprops={'color': 'r'})

Q1 = df['value'].quantile(q=0.25)
Q2 = df['value'].quantile(q=0.5)
Q3 = df['value'].quantile(q=0.75)

low_limit = Q1 - 1.5 * (Q3 - Q1)
upper_limit = Q3   1.5 * (Q3 - Q1)

print('下四分位数:', Q1)
print('中位数:', Q2)
print('上四分位数:', Q3)
print('下限:', low_limit)
print('上限:', upper_limit)

# 查找异常值
val = df['value'][(df['value'] > upper_limit) | (df['value'] < low_limit)]
print('数据中的异常值:', val)

#显示图像
plt.show()

学新通

结果展示:
学新通

3).数学层面理解箱形图每个部分的含义(下四分位线,中位数,上四分位数,上限,下限,异常值,极端异常值)

  • 名词说明:
    ·下四分位数:指数据的25%分位点所对应的值(Q1)
    ·中位数:指数据的50%分位点所对应的值(Q2)
    ·上四分位数:指数据的75%分位点所对应的值(Q3)
    ·上限:上限=Q3 1.5*(Q3-Q1)
    ·下限:下限=Q1-1.5*(Q3-Q1)
    ·异常值的判定标准:当变量的数据值大于上限或小于下限时,判定为异常值

  • 计算方法:
    1).数据集:7,36,15,39,41,40
    2).按从小到大的顺序对数据集进行排列:7,15,36,39,40,41
    3)确定四分位数索引位置的根据公式:1 (n-1)*数据的百分比分位点,在根据索引位置确定索引所对应的数据值(n是数据集的数量 n=6)
    ·Q1_position=1 (6-1)*0.25=2.25 (Q1在第二个数和第三个数之间)
    ·Q1_value=15 (36-15)*(2.25-2)=20.25
    ·Q2_position=1 (6-1)*0.5=3.5 (Q2在第三个数和第四个数之间)
    ·Q2_value=36 (39-36)*(3.5-3)=37.5
    ·Q3_position=1 (6-1)*0.75=4.75 (Q3在第四个数和第五个数之间)
    ·Q3_value=39 (40-39)*(4.75-4)=39.75
    ·上限=39.75 (39.75-20.25)*1.5=69
    ·下限=20.25-(39.75-20.25)*1.5=-9

  • 极端异常值:
    ·极端上限:上限=Q3 3*(Q3-Q1)
    ·极端下限:下限=Q1-3*(Q3-Q1)
    ·极端异常值的判定标准:当变量的数据值大于极端上限或小于极端下限时,判定为极端异常值

2.3D图表—三维柱形图

1).语法:

mpl_toolkits.mplot3d.axes3d.bar(left, height, zs=0, zdir=‘z’, *args, **kwargs) 

参数说明:
left:x轴数据集
height:柱子的高度
zs:z轴的数据集
zdir:可选参数{‘x’, ‘y’, ‘z’}, 默认: ‘z’

2).示例:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

#创建画布
fig = plt.figure()

# 创建3D坐标系 
axes3d = Axes3D(fig)
x = np.arange(0, 5)
zs = np.arange(1,15,5)
for z in zs:
    y = np.random.randint(0, 100, size=5)
    axes3d.bar(x, y, zs=z, zdir='x', color=['r', 'g', 'y', 'c'])
    
plt.xticks(zs, ['小明', '小美', '小强'])
plt.yticks(x, ['语文', '数学', '英语', '物理', '生物'])
plt.xlabel('姓名')
plt.ylabel('学科')

# 设置标题和图例
plt.title('学生成绩统计')


# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)

# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)

plt.show()
学新通

结果展示:
学新通

2.3D图表—三维曲面图

1).语法:

mpl_toolkits.mplot3d.axes3d.plot_surface( X, Y, Z, *, norm=None, vmin=None,vmax=None, lightsource=None, **kwargs) 

参数说明:
X, Y, Z,:2D数组形式的数据值
rstride:数组行距(步长大小)
cstride:数组列距(步长大小)
color:曲面块颜色
cmap:颜色块颜色映射
facecolors:单独曲面块表面颜色
norm:将值映射为颜色的 Nonnalize实例
vmin:映射的最小值
vmax:映射的最大值

2).示例:


import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

#创建画布
fig = plt.figure()

# 创建3D坐标系 
axes3d = Axes3D(fig)
x = np.arange(-5.0, 5.0,0.5)
y = np.arange(-3.0,3,0.5)

#返回list,对x,y数据进行网格化
X,Y=np.meshgrid(x,y)

Z1=np.sin(X)
Z2=np.sin(Y)
Z=(Z1-Z2)*2

surf=axes3d.plot_surface(X, Y, Z, cmap=plt.get_cmap('rainbow'))

# 设置标题
plt.title("3D曲面图")
fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()
学新通

结果展示:
学新通

注意:代码中所涉及到的函数和参数,在图表的常用设置1图表的常用设置2 有所介绍

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgageji
系列文章
更多 icon
同类精品
更多 icon
继续加载