作者:王大偉 Python愛好者社區(qū)唯一小編 博客:https://ask.hellobi.com/blog/wangdawei
點(diǎn)擊上圖即可限時(shí)半價(jià)購買課程
前文傳送門:pandas可視化(1)【官方文檔解讀】--基礎(chǔ)繪圖
如繪圖過程中,中文字體和負(fù)號(hào)顯示有問題,可以參照如下鏈接修改配置參數(shù)設(shè)置正常顯示:
https://www.joinquant.com/post/441
IDE : jupyter notebook
Anaconda 3.X
對(duì)于標(biāo)記的非時(shí)間序列數(shù)據(jù),你可能希望生成條形圖:
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
matplotlib.style.use('ggplot')#使用ggplot樣式
%matplotlib inline
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
注:如前一章,先導(dǎo)入必要的模塊和繪圖的數(shù)據(jù)準(zhǔn)備
plt.figure();
df.iloc[5].plot(kind='bar')
plt.axhline(0, color='k')
注:df.iloc[5]意思是取出df第6行(索引為5),然后繪制條形圖
plt.axhline(0, color='k')指的是在y=0的位置畫一條黑色的線
注:因?yàn)槭请S機(jī)產(chǎn)生的值繪圖,你的圖一般和我不一樣,一樣就厲害了!
這種為圖所存在的內(nèi)存地址位置
df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df2.plot.bar()
注:如果看了前一章,以上代碼很好理解,這里同一幅圖繪制多個(gè)條形圖比較
df2.plot.bar(stacked=True)
注:將a、b、c、d數(shù)據(jù)疊加起來繪制條形圖
df2.plot.barh(stacked=True)
注:繪制水平疊加條形圖
df4 = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000),
'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df4.head()
注:以標(biāo)準(zhǔn)正態(tài)分布為基礎(chǔ)產(chǎn)生一個(gè)df4
plt.figure()
df4.plot.hist(alpha=0.5)
注:繪制直方圖,alpha=0.5意思為透明度為50%
注:明明有三列數(shù)據(jù),畫出有六種顏色,應(yīng)該是是顏色疊加出了新顏色
plt.figure()
df4.plot.hist(stacked=True, bins=20)
注:畫堆積直方圖(不會(huì)重疊,直觀)bins=20指的是分為20個(gè)區(qū)段
圖中沒有顯示20個(gè)因?yàn)檎龖B(tài)分布距離中心遠(yuǎn)處取值可能心很小,可能只有個(gè)別值,在圖中不明顯
plt.figure();
df4['a'].plot.hist(orientation='horizontal', cumulative=True)
注:取出A列畫橫向累積直方圖,采用默認(rèn)10個(gè)區(qū)段
plt.figure()
df['A'].diff().hist()
注:diff為差分,即后一個(gè)減去前一個(gè),我們看一下:
df['A'].diff().head()
注:顯示A列中差分結(jié)果的前五個(gè)數(shù)
注意,第一個(gè)值不存在,因?yàn)樵瓉淼牡谝粋€(gè)數(shù)減去前面一個(gè)(第一個(gè)的前面一個(gè)數(shù)不存在),所以為NaN
差分后繪制的直方圖為(默認(rèn)為十個(gè)區(qū)段吧):
plt.figure()
df.diff().hist(color='g', alpha=0.5, bins=20)
注:df中四欄(4列)分別繪制一階差分的圖(綠色,半透明,分20區(qū)段),有種2x2子圖的感覺
data = pd.Series(np.random.randn(1000))
data.hist(by=np.random.randint(0, 4, 1000),figsize=(6, 4))
注:這里產(chǎn)生1000個(gè)正態(tài)分布的隨機(jī)數(shù),然后使用hist方法中的by參數(shù)隨機(jī)產(chǎn)生0-3中的整數(shù)(即0、1、2、3)
將原來的1000個(gè)正態(tài)分布的隨機(jī)數(shù)對(duì)應(yīng)上分組繪制四張圖
圖的長寬大小為6x4
pandas的繪圖真美~~~~~~~~
pandas繪制條形圖、正方圖到此結(jié)束
文中所寫如有謬誤請(qǐng)指出,感謝!
http://pandas.pydata.org/pandas-docs/stable/visualization.html#
微課福利:Hellobi live |8月22日,利用 Python 建構(gòu)金融數(shù)據(jù)分析平臺(tái)
聯(lián)系客服