文章插圖

文章插圖
今天是數據處理專題的第9篇文章 , 在之前的8篇文章當中我們已經介紹完了pandas這個庫的一些基本用法 , 我們先把一些冷門的高級用法放一放 , 先來給大家介紹一下另外一個很有用的數據分析庫——matplotlib 。
matplotlib簡介
如果你在大學里參加過數學建模競賽或者是用過MATLAB的話 , 想必會對這一款軟件中的畫圖功能印象深刻 。MATLAB可以做出各種函數以及數值分布圖像非常的好用和方便 。如果你沒用過呢也沒關系 , 知道這么回事就好了 。MATLAB雖然好用 , 但畢竟是收費軟件 , 而且相比于MATLAB , 很多人更喜歡Python的語法 。
所以呢MATLAB就被惦記上了 , 后來有大神仿照MATLAB當中的畫圖工具 , 也在Python當中開發了一個類似的作圖工具 。這也就是我們今天這篇文章要講的matplotlib , 也是Python、數據分析以及機器學習領域當中使用最廣泛的作圖工具包 , 幾乎沒有之一 。前段時間不是美國政府搞事情 , 導致MATLAB公司宣布對中國的幾所高校禁止使用MATLAB嘛 , 有一些人就提出來說我們可以使用Python當中的一些開源工具代替 , 當然MATLAB當中還有很多其他厲害的功能 , Python可能不一定能代替 , 但至少在作圖這個領域是沒問題的 。
matplotlib 基本用法
matplotlib廣泛流行的一個非常主要的原因就是它方便、好用 , 我們來看幾個經典的例子就知道了 , 短短幾行代碼就可以作出質量非常高的圖 。
我們使用的是matplotlib這個包下的pyplot這個庫 , 從名字上我們也看得出來它是Python庫 。如果你安裝了Anaconda這樣完整的Python包管理工具的話 , 那么這個包默認應該已經裝好了 。如果沒有 , 可以使用pip安裝一下 , 命令也非常簡單 。
pip install matplotlib裝好了包之后 , 我們通常的使用慣例是將它重命名成plt , 所以如果你閱讀一些源碼以及其他大神的代碼 , 作圖的時候經常會出現plt.xxx , 就是這么來的 。import matplotlib.pyplot as pltplot當中有幾種常用的作圖工具 , 第一種是作折線圖或者是曲線圖的 , 叫做plot 。第二種是作柱狀圖的叫做hist , 第三種是作散點圖的 , 叫做scatter , 第四種是作餅狀圖的 。除此之外還可以作一些三維的圖像 , 但是一般日常當中使用得比較少 , 大部分是用來炫技的 。曲線圖
plot其實是用來作曲線圖的 , 采用的方法是描點呈現 , 它會將我們的數據點串聯起來 , 成為一條光滑的曲線 。當然 , 作折線、直線也都是可以的 , 最后成圖的效果完全是由我們的數據決定的 。
它的使用方法很簡單 , 在最基本的用法當中 , 我們只需要傳入兩個list , 分別代表x軸和y軸的值即可 。比如我們要作出一個logistic的函數圖像 。我們可以這樣:
x = np.linspace(-10, 10, 100)y = 1 / (1 + np.exp(-x))plt.plot(x, y)plt.show()在上面的代碼當中我們首先使用numpy當中的linspace函數生成了一個-10到10之間的numpy數組 。這個數組當中有100個點 , 在-10到10之間均勻分布 。我們對它計算對應的logistic函數的值 , 也就是y = 1/1 + e^(-x) 。這個函數我想大家都應該很熟悉了 , x是一個一百個點的list , 對應的y也是一個一百個點的list 。也就是說一個x對應一個y構成了一個點對 , 代表圖中的一個坐標 。我們不需要做任何轉化 , 只需要把這兩個數組傳入plt當中 , 它會自動替我們完成坐標的映射 。最后呈現的效果如下 。
直方圖
hist可以用來繪制直方圖 , 這也是我們非常常見的圖像 。在財經領域我們經常用直方圖反應一個數據的走勢 , 在數據分析和機器學習當中我們也經常用直方圖來反應某一個特征或者是值的分布 。
在直方圖當中我們只需要傳入一個數組 , 就是我們要求分布的數組 , 另外我們需要再輸入一個參數bins , 表示我們希望將數據分桶的數量 。然后它會繪制出每個桶中數據數量的直方圖 , 這樣我們就可以很直觀地看出分布來了 。
x = np.random.normal(size=200)plt.hist(x,bins=30)plt.show()這里我們調用numpy當中以正態分布概率隨機的函數 , 得到的結果應該是正態分布的 。點狀圖
第三種圖像叫做散點圖 , 它反應的是每個點的分布情況 。比如我們之前在介紹KNN和Kmeans模型的時候曾經都作過散點圖 , 一個點代表一個樣本 , 通過散點圖我們觀察的也是樣本和數據分布的情況 。但是和直方圖相比它更加得直觀 , 我們能直接看到分布 , 而不是一個分布的統計結果 。
但是它也有缺點 , 缺點就是我們只能觀察二維平面當中的點的分布 , 畢竟超過3維的維度就沒辦法繪制了 。而且3維的數據分布也不是很好觀察 。
同樣散點圖的繪制也很簡單 , 我們只需要調用scatter函數傳入x和y的數組即可 。
x = np.random.rand(100)y = np.random.rand(100)plt.scatter(x, y)這里我們的x和y都是隨機分布 , 所以得到的結果是散亂沒有規律的點 。最后我們來看下餅狀圖 , 餅狀圖也很常用 , 雖然也是反映的數據分布 , 但是它更多是體現某一個值占的比例 。通過餅狀圖 , 我們可以很直觀地了解到這點 。
我們可以傳入一個list進入pie函數 , plot會根據list當中值在總體的占比繪制餅狀圖 。我們來看個很簡單的例子:
a = np.array([0.5, 0.3, 0.2, 0.1, 0.8])plt.pie(a)得到的結果如下:- dps軟件操作 dps軟件安裝教程
- 我的世界皮膚制作器下載安裝 我的世界導入皮膚教程手機版
- linux安裝redis哨兵模式 windows配置redis哨兵模式
- 藍牙應用程序下載安裝 安裝手機藍牙系統
- 簡單百寶箱怎么使用 百寶箱怎么安裝
- cd系統安裝教程 cd安裝程序是什么
- python插件開發實驗總結 Python開發插件
- 電腦版離線語音輸入 語音離線輸入法下載安裝
- photoshop破解版安裝步驟 Photoshop破解版安裝
- 黑蘋果電池驅動不加載 黑蘋果電池驅動安裝
