呆鸟的Python数据分析

python怎么画箱线图?Matplotlib数据可视化006:

2020-04-13  本文已影响0人  Yang_6234

前文回看:

    【Python菜鸟进阶大神】Matplotlib数据可视化001:基础API汇总&散点图

    【Python菜鸟进阶大神】Matplotlib数据可视化002:折线图

    【Python菜鸟进阶大神】Matplotlib数据可视化003:条形图

    【Python菜鸟进阶大神】Matplotlib数据可视化004:饼图

    【Python菜鸟进阶大神】Matplotlib数据可视化005:直方图

箱线图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。

箱线图API:

plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=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)

x:指定要绘制箱线图的数据;

notch:是否是凹口的形式展现箱线图,默认非凹口;

sym:指定异常点的形状,默认为+号显示;

vert:是否需要将箱线图垂直摆放,默认垂直摆放;

whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;

positions:指定箱线图的位置,默认为[0,1,2…];

widths:指定箱线图的宽度,默认为0.5;

patch_artist:是否填充箱体的颜色;

meanline:是否用线的形式表示均值,默认用点来表示;

showmeans:是否显示均值,默认不显示;

showcaps:是否显示箱线图顶端和末端的两条线,默认显示;

showbox:是否显示箱线图的箱体,默认显示;

showfliers:是否显示异常值,默认显示;

boxprops:设置箱体的属性,如边框色,填充色等;

labels:为箱线图添加标签,类似于图例的作用;

filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;

medianprops:设置中位数的属性,如线的类型、粗细等;

meanprops:设置均值的属性,如点的大小、颜色等;

capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;

whiskerprops:设置须的属性,如颜色、粗细、线的类型等;

# 引入模块

import numpy as np

import pandas as pd

import matplotlib as mpl

import matplotlib.pyplot as plt

# 中文乱码和坐标轴负号的处理

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

plt.rcParams['axes.unicode_minus'] = False

# 加载数据

path="C:/Users/Administrator/Desktop/exercise_data/train.csv"

df=pd.read_csv(path)

df.head()

# 将缺失值删除

df.dropna(subset=["Age"],inplace=True)

# 画图

plt.boxplot(x=df.Age,

          patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充

          showmeans=True, # 以点的形式显示均值

          boxprops = {'color':'black','facecolor':'blue'}, # 设置箱体属性,填充色和边框色

          flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}, # 设置异常值属性,点的形状、填充色和边框色

          meanprops = {'marker':'*','markerfacecolor':'y','markersize':'12'}, # 设置均值点的属性,点的形状、填充色

          medianprops = {'linestyle':'--','color':'orange'}) # 设置中位数线的属性,线的类型和颜色)

plt.xlabel("年龄",fontdict={'fontsize':12, 'color':'k'})

plt.title("泰坦尼克号乘客年龄箱线图",fontdict={'fontsize':'18', 'color':'k'})

箱线图四分位数:

将n个数从小到大排序,下四分位数是四分之一位置对应的数,一次类推:

下四分位:Q1=(n+1)/4

中分位:Q2=(n+1)/2

上四分位:Q3=3*(n+1)/4

四分位距:IQR=Q3-Q1

下界:Q1-1.5IQR

上界:Q3+1.5IQR

定义超出上界或者下界的数据解释离群值或者异常值。

将乘客年龄按照仓位划分

# 按舱级排序,为了后面正常显示分组盒形图的顺序

df.sort_values(by = 'Pclass', inplace=True)

# 通过for循环将不同仓位的年龄人群分别存储到列表Age变量中

Age = []

Levels = df.Pclass.unique()

for Pclass in Levels:

    Age.append(df.loc[df.Pclass==Pclass,'Age'])

# 绘图

plt.boxplot(x=Age,

          patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充

          labels = ['一等舱','二等舱','三等舱'], # 添加具体的标签名称

          showmeans=True, # 以点的形式显示均值

          boxprops = {'color':'black','facecolor':'blue'}, # 设置箱体属性,填充色和边框色

          flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}, # 设置异常值属性,点的形状、填充色和边框色

          meanprops = {'marker':'*','markerfacecolor':'y','markersize':'12'}, # 设置均值点的属性,点的形状、填充色

          medianprops = {'linestyle':'--','color':'orange'}) # 设置中位数线的属性,线的类型和颜色)

plt.ylabel("年龄",fontdict={'fontsize':12, 'color':'k'})

plt.title("泰坦尼克号乘客年龄箱线图",fontdict={'fontsize':'18', 'color':'k'})

# 显示图形

plt.show()

由上图可知,舱位等级越高的乘客,他们的年龄越高,三种舱位的平均年龄为38、30和25,说明年龄越是偏大一点,他们的经济能力会越强一些,所买的舱位等级可能就会越高一些。同时,在二等舱和三等舱内,乘客的年龄上存在一些异常用户。

原文,在本人公众号,链接:

https://mp.weixin.qq.com/s/4A4drHs02UIMfc7Ft7LBtg

上一篇下一篇

猜你喜欢

热点阅读