数据可视化-7. 箱线图

目录

1. 箱线图的构成

2. 解读箱线图

3. 箱线图的适用场景

4. 箱线图的局限性

5. 箱线图的代码实现

5.1 Python 代码

5.2 箱线图效果( 网页展示)


        箱线图(Boxplot),又称为盒须图,是一种用于统计数据分布分析的图表。它可以直观地展示数据的分布特征集中趋势离散程度,并能有效识别异常值

1. 箱线图的构成

箱线图由以下几个部分组成:

  • 箱体(Box):表示数据分布的中间部分,通常从第一四分位数(Q1)第三四分位数(Q3)
    • Q1(第25百分位数):表示25%的数据小于此值。
    • Q3(第75百分位数):表示75%的数据小于此值。
    • 箱体的高度(或宽度,取决于方向)反映了四分位距(IQR = Q3 - Q1),即中间50%数据的范围。
  • 中位数(Median):箱体内的一条线,表示数据的中间值。
  • 须(Whiskers)
    • 须的长度通常延伸至非异常值的范围。
    • 上须的最大值为Q3 + 1.5 × IQR,下须的最小值为Q1 - 1.5 × IQR
  • 异常值(Outliers)
    • 在须范围外的数据点,被单独标记为圆点或其他符号,表示可能的异常数据。

2. 解读箱线图

        以一个单个箱线图为例:

  • 箱体位置:如果箱体位于图表的上半部分,说明数据整体偏高;反之偏低。
  • 箱体宽窄:箱体越窄,说明中间50%的数据分布越集中。
  • 中位数的位置:如果中位数偏向箱体一侧,说明数据分布不对称。
  • 须的长度:长须表明数据有较大的变化范围或离散程度。
  • 异常值的数量和位置:离须越远的点,异常程度越高。

     多个箱线图在一起时候,

  • 组间对比:可以比较不同组数据的分布和特征。

3. 箱线图的适用场景

  • 数据分布的初步探索
  • 数据质量检查(例如检测异常值)
  • 比较多个数据组的特征,例如实验组与对照组的结果
  • 分析指标的趋势和变化

4. 箱线图的局限性

  • 仅展示关键的统计特征,隐藏了数据的具体分布形态(如双峰分布)。
  • 如果数据量较少,可能不适合使用箱线图。
  • 异常值的定义较为固定(1.5 × IQR以外),对特殊情况下的异常值判断可能不够灵活。
  • 箱线图在某些情况下可能不适用。例如,当数据中存在超大或超小异常值时,箱线图可能呈现扁平形态或只剩一线,此时不适合使用箱线图;当数据量较小时,箱线图的统计能力可能不足;此外,箱线图只能反映数据的一维分布,无法展示多个变量之间的关系。

5. 箱线图的代码实现

5.1 Python 代码
import dash
from dash import html, dcc
import plotly.graph_objects as go
import dash_bootstrap_components as dbc
import numpy as np


def create_advanced_charts():
    """
    创建高级图表示例
    返回一个包含多个图表的列表
    """
    # 1. 箱线图
    #np.random.normal(loc=0.0, scale=1.0, size=None),其作用:返回一组符合高斯分布的概率密度随机数。
    # 其中,loc为高斯概率分布的均值;scale为高斯概率分布的标准差;size为输出的shape,默认为None,只输出一个值。
    box_data = [
        np.random.normal(0, 1, 100),   
        np.random.normal(2, 1.2, 100), 
        np.random.normal(-1, 1.5, 100) 
    ]
    
    print(max(box_data[0]),min(box_data[0]))
    print(max(box_data[1]),min(box_data[1]))
    print(max(box_data[2]),min(box_data[2]))

    box_fig = go.Figure()
    box_fig.add_trace(go.Box(y=box_data[0], name="组A"))
    box_fig.add_trace(go.Box(y=box_data[1], name="组B"))
    box_fig.add_trace(go.Box(y=box_data[2], name="组C"))
    box_fig.update_layout(
        title='箱线图示例',
        yaxis_title='数值',
        template='plotly_white'
    )
    return(box_fig)


app = dash.Dash(__name__)

app.layout = html.Div([
    html.Div([
        html.H3("高级图表展示", className="text-center mt-4 mb-3"),
        dbc.Row([
            dbc.Col(dcc.Graph(figure=create_advanced_charts()), width=6)
        ], className="mb-4")
    ], style={"backgroundColor": "#fff0f4", "padding": "20px", "borderRadius": "10px"}),
])

if __name__ == "__main__":
    app.run_server(debug=True, port=8051)
5.2 箱线图效果( 网页展示)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南野栀子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值