日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

pandas可視化(3)【官方文檔解讀】-- 箱線圖

 大哥快走 2017-08-09

作者:王大偉

Python愛好者社區(qū)唯一小編

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


點(diǎn)擊上圖即可限時半價購買課程


前言

前文傳送門:

pandas可視化(1)【官方文檔解讀】--基礎(chǔ)繪圖

pandas可視化(2)【官方文檔解讀】-- 條形圖、直方圖


如繪圖過程中,中文字體和負(fù)號顯示有問題,可以參照如下鏈接修改配置參數(shù)設(shè)置正常顯示:

https://www./post/441


環(huán)境

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

注:如前一章,先導(dǎo)入必要的模塊和繪圖的數(shù)據(jù)準(zhǔn)備


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

注:使用numpy產(chǎn)生一個10行5列的矩陣,矩陣內(nèi)的元素是隨機(jī)產(chǎn)生的標(biāo)準(zhǔn)正態(tài)分布數(shù)字

然后將矩陣轉(zhuǎn)為df,給這五列數(shù)據(jù)欄位命名為A、B、C、D、E,并顯示其前五行觀察



df.plot.box()

注:繪制箱線圖


注:這里有A~E五個箱線圖放在一張圖,理解為5次試驗,每次的即為其對應(yīng)列中的十行(10個數(shù)字)的箱線圖

箱線圖解釋如下圖:



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

注:繪制箱線圖,這里增加了箱線圖每部分線條顏色的設(shè)置,至于sym官方解釋是:specify fliers style

直譯為:指定傳單風(fēng)格,我們暫且可以認(rèn)為是繪圖的某種風(fēng)格,我把這個參數(shù)去掉繪圖發(fā)現(xiàn)沒什么區(qū)別

如果有朋友理解,請留言評論賜教



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


注:這里vert = False繪制水平箱線圖,并且將幕布豎直方向分為8塊等大小區(qū)域

將5個箱線圖從下到上依次畫在1、4、5、6、8五個位置


可以使用DataFrame.boxplot來繪制boxplot的界面

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


注:使用和之前產(chǎn)生df一樣的方法產(chǎn)生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兩種分類,最后根據(jù)這種分類分別對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'])


注:這里傳入兩個分類依據(jù),所以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()


注:這里使用某種隨機(jī)數(shù)種子產(chǎn)生器,隨機(jī)產(chǎn)生一個50行2列的df

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


注:然后加一欄g,隨機(jī)分為A,B兩類

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

注:定位到所有g(shù)欄屬于B的行和第二列(索引是1),將其加3


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


注:最后按照g欄分類畫圖,像之前兩張圖一樣


和以下繪圖代碼注意對比:

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


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


pandas繪制箱線圖到此結(jié)束

文中所寫如有謬誤請指出,感謝!


參考文獻(xiàn)

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

微課福利:Hellobi live |8月22日,利用 Python 建構(gòu)金融數(shù)據(jù)分析平臺

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多