分享

pandas可视化(3)【官方文档解读】-- 箱线图

 大哥快走 2017-08-09

作者:王大伟

Python爱好者社区唯一小编

博客:https://ask./blog/wangdawei


点击上图即可限时半价购买课程


前言

前文传送门:

pandas可视化(1)【官方文档解读】--基础绘图

pandas可视化(2)【官方文档解读】-- 条形图、直方图


如绘图过程中,中文字体和负号显示有问题,可以参照如下链接修改配置参数设置正常显示:

https://www./post/441


环境

IDE : jupyter notebook

Anaconda 3.X


箱线图
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
matplotlib.style.use('ggplot')#使用ggplot样式
%matplotlib inline

注:如前一章,先导入必要的模块和绘图的数据准备


df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.head()

注:使用numpy产生一个10行5列的矩阵,矩阵内的元素是随机产生的标准正态分布数字

然后将矩阵转为df,给这五列数据栏位命名为A、B、C、D、E,并显示其前五行观察



df.plot.box()

注:绘制箱线图


注:这里有A~E五个箱线图放在一张图,理解为5次试验,每次的即为其对应列中的十行(10个数字)的箱线图

箱线图解释如下图:



color = dict(boxes='DarkGreen', whiskers='DarkOrange',
            medians='DarkBlue', caps='Gray')
df.plot.box(color=color, sym='r+')

注:绘制箱线图,这里增加了箱线图每部分线条颜色的设置,至于sym官方解释是:specify fliers style

直译为:指定传单风格,我们暂且可以认为是绘图的某种风格,我把这个参数去掉绘图发现没什么区别

如果有朋友理解,请留言评论赐教



df.plot.box(vert=False, positions=[1, 4, 5, 6, 8])


注:这里vert = False绘制水平箱线图,并且将幕布竖直方向分为8块等大小区域

将5个箱线图从下到上依次画在1、4、5、6、8五个位置


可以使用DataFrame.boxplot来绘制boxplot的界面

df = pd.DataFrame(np.random.rand(10,5))
plt.figure()
bp = df.boxplot()


注:使用和之前产生df一样的方法产生df,然后用df的boxplot方法画箱线图


df = pd.DataFrame(np.random.rand(10,2), columns=['Col1', 'Col2'] )
df['X'] = pd.Series(['A','A','A','A','A','B','B','B','B','B'])
plt.figure()
bp = df.boxplot(by='X')


注:在原有的df上增加一栏X,其中包含A,B两种分类,最后根据这种分类分别对col1和col2画箱线图


df = pd.DataFrame(np.random.rand(10,3), columns=['Col1', 'Col2', 'Col3'])
df['X'] = pd.Series(['A','A','A','A','A','B','B','B','B','B'])
df['Y'] = pd.Series(['A','B','A','B','A','B','A','B','A','B'])
plt.figure();
bp = df.boxplot(column=['Col1','Col2'], by=['X','Y'])


注:这里传入两个分类依据,所以2X2有四种分类组合


np.random.seed(1234)
df_box = pd.DataFrame(np.random.randn(50, 2))
df_box['g'] = np.random.choice(['A', 'B'], size=50)
df_box.loc[df_box['g'] == 'B', 1] += 3
bp = df_box.boxplot(by='g')

注:这段比较难理解,我们分步理解:

np.random.seed(1234)
df_box = pd.DataFrame(np.random.randn(50, 2))
df_box.head()


注:这里使用某种随机数种子产生器,随机产生一个50行2列的df

df_box['g'] = np.random.choice(['A', 'B'], size=50)
df_box.head()


注:然后加一栏g,随机分为A,B两类

df_box.loc[df_box['g'] == 'B', 1] += 3
df_box.head()

注:定位到所有g栏属于B的行和第二列(索引是1),将其加3


bp = df_box.boxplot(by='g')


注:最后按照g栏分类画图,像之前两张图一样


和以下绘图代码注意对比:

bp = df_box.groupby('g').boxplot()


注:by有分开的意思,groupby有整合的意思


pandas绘制箱线图到此结束

文中所写如有谬误请指出,感谢!


参考文献

http://pandas./pandas-docs/stable/visualization.html#

微课福利:Hellobi live |8月22日,利用 Python 建构金融数据分析平台

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约