1. 程式人生 > >如何使用Python 進行資料視覺化

如何使用Python 進行資料視覺化

> **微信公眾號:碼農充電站pro** > **個人主頁:** ![](https://img-blog.csdnimg.cn/20201124163927508.png?#pic_center) 在進行資料分析的時候,經常需要將資料進行視覺化,以方便我們對資料的認識和理解。 ### 0,Matplotlib 簡介 [Matplotlib](https://matplotlib.org/) 是一個視覺化工具包,可以讓我們使用[Python](https://blog.csdn.net/luaohan/category_9973992.html) 來視覺化資料。 ![Matplotlib](https://img-blog.csdnimg.cn/20201124170650225.png?#pic_center) 這裡有一些官方資源你可以點選檢視: - [Matplotlib 安裝](https://matplotlib.org/users/installing.html) - [Matplotlib 使用者手冊](https://matplotlib.org/users/index.html) - [Matplotlib 函式彙總](https://matplotlib.org/api/pyplot_summary.html) - [Matplotlib 模組索引](https://matplotlib.org/py-modindex.html) - [Matplotlib 示例庫](https://matplotlib.org/gallery/index.html) - Matplotlib 示例下載 - [Python code](https://matplotlib.org/_downloads/85d9be59fab8a02517f514497a37cf68/gallery_python.zip) - [Jupyter notebooks](https://matplotlib.org/_downloads/2e309644ccd557aada4afb564bdde6ed/gallery_jupyter.zip) 很多更高階的繪相簿,也都是基於**Matplotlib**,比如[seaborn](https://seaborn.pydata.org/),[HoloViews](https://holoviews.org/),[ggplot](http://ggplot.yhathq.com/) 等。 在使用 Matplotlib 時,經常需要用到 **pyplot** 模組,用下面程式碼引入: ```python import matplotlib.pyplot as plt ``` 下文中,都用`plt` 來代指`pyplot`。 >
說明: > 這裡我們只介紹幾種簡單的圖,更多其它的圖,可以檢視官方手冊。 > 下面的每個函式,只介紹了最簡單的用法,其它更多的引數可以檢視手冊。 ### 1,散點圖 `plt.scatter` 函式用於繪製散點圖。函式原型: ```python scatter(x, y, s = None, c = None, marker = None) ``` 引數含義: - `x, y`:分別表示點的橫縱座標。**x, y** 可以是單個點座標,也可以是一組點座標。 - `s`:表示點的大小。 - `c`:表示點的顏色。 - `marker`:表示點的形狀,可選的值見[這裡](https://matplotlib.org/api/markers_api.html),比如 **marker** 的值為`x`, `o`, `s`等。 如下程式碼,畫了三個點: ```python # 三個點的座標分別是: # (2, 5) # (3,6) # (3, 5) plt.scatter([2, 3, 3], [5, 6, 5], marker='o') plt.show() # 展示圖 ``` 畫出的散點圖如下: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124204048661.png?#pic_center) ### 2,折線圖 `plt.plot` 函式用於繪製折線圖。函式原型: ```python plot(x, y) ``` 引數 `x`,`y`分別表示點的橫縱座標,一般是一組點座標。 比如下面表格代表`5` 次數學考試成績: | 次數 | 1 | 2 | 3 | 4 | 5 | |--|--|--|--|--|--| | **成績** | **89** | **78** | **92** | **79** | **86** | 將上面表格資料,繪製成折線圖,程式碼如下: ```python x = [1, 2, 3, 4, 5] y = [89, 78, 92, 79, 86] plt.plot(x, y) plt.show() ``` 畫出的折線圖如下: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124210050563.png?#pic_center) ### 3,直方圖 直方圖用於描述資料的**分佈情況**。 `plt.hist` 函式用於繪製直方圖。函式原型: ```python plt.hist(x, bins=None) ``` 引數`x`是一個一維陣列,`bins` 可以理解為矩形的個數,預設是`10`。 假如下面是一次數學考試的成績,全班共50 名同學: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124224706567.png#pic_center) 將所有同學的成績畫成直方圖,程式碼如下: ```python scores = [ 96, 89, 95, 91, 94, 95, 92, 98, 95, 93, 93, 96, 94, 94, 98, 92, 88, 90, 88, 98, 84, 89, 87, 84, 94, 82, 83, 95, 93, 79, 84, 91, 86, 91, 81, 89, 77, 81, 77, 70, 66, 93, 90, 87, 79, 83, 86, 90, 93, 79, ] plt.hist(scores) plt.show() ``` 畫出來的直方圖如下,橫座標為成績區間,縱座標為人數: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124225621671.png?#pic_center) 通過該直方圖,可以直觀的看出來每個成績區間的人數。 ### 4,條形圖 `plt.bar` 函式用於繪製條形圖。函式原型: ```python plt.bar(x, y, width = 0.8) ``` 引數`x`, `y` 均是一個數組,`x` 是橫座標,表示資料類別;`y` 是縱座標,表示每個類別的頻度。引數`width` 表示長條的寬度。 比如下表是一位同學的期中考試的各科成績: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124232743100.png#pic_center) 我們將這位同學的成績單畫成條形圖,程式碼如下: ```python # 每個科目分別用字母表示 subjects = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'] scores = [96, 89, 85, 91, 75, 90, 88, 79, 89] plt.bar(subjects, scores) plt.show() ``` 畫出的條形圖如下: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124233535305.png?#pic_center) ### 5,餅圖 餅圖常用於表示個體佔總體的佔比情況。 `plt.pie` 函式用於繪製餅圖。函式原型: ```python plt.pie(x, labels=None) ``` 引數`x`是一個數組,表示一組資料,`labels` 用於描述每個資料的含義。 比如下表是某個公司某年每個季度的收入: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201125210023175.png#pic_center) 我們可以用餅圖分析出每個季度佔全年收入的佔比,程式碼如下: ```python # 表示每個季度 quarters = ['1', '2', '3', '4'] incomes = [56, 89, 75, 91] plt.pie(incomes, labels=quarters) plt.show() ``` 畫出的餅圖如下: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201124234936434.png?#pic_center) (本節完。) --- **推薦閱讀:** [***決策樹演算法-理論篇-如何計算資訊純度***](https://www.cnblogs.com/codeshell/p/13948083.html) [***決策樹演算法-實戰篇-鳶尾花及波士頓房價預測***](https://www.cnblogs.com/codeshell/p/13984334.html) [***樸素貝葉斯分類-理論篇-如何通過概率解決分類問題***](https://www.cnblogs.com/codeshell/p/13999440.html) [***樸素貝葉斯分類-實戰篇-如何進行文字分類***](https://www.cnblogs.com/codeshell/p/14034097.html) --- 歡迎關注作者公眾號,獲取更多技術乾貨。 ![碼農充電站pro](https://img-blog.csdnimg.cn/20200505082843773.png?#pic_center)