全文共6661字,預計學習時長20分鐘或更長html
圖片來源:pexels.com/@divinetechygirlpython
在現代數字世界中,數據就像空氣同樣重要。算法
人們天天都會自覺或不自覺地消費和產生大量數據。近來,許多商家試圖利用這些數據來進行營銷和吸引消費者。全部行業都開始在其服務中增添人性化色彩,向消費者兜售絕佳的用戶體驗。而這一切都是基於數據科學下人工智能和機器學習技術的發展。機器正變得愈加聰明,能經過分析大量數據從而作出決策。shell
爲了分析大量數據集,機器須要使用經過Python語言構建的數據視覺化工具。所以,今天須要瞭解如下問題:api
1. 什麼是數據視覺化呈現?服務器
2. 有哪些數據視覺化呈現工具?微信
3. 如何使用這些工具?網絡
4. 爲何須要學習使用這些工具?app
數據科學中的數據視覺化dom
衆所周知,人腦更易於理解圖像。所以有句俗語說:一圖勝千言。而這徹底適用於數據科學,由於其須要分析大量視覺化呈現的數據以推演數據模型。
數據視覺化是數據科學領域的一項技術,可以使你講出具備信服力的故事,經過易於理解、模擬化的方式將數據和分析結果視覺化呈現。這項技術能讓複雜的數據看起來很簡單,並易於理解。
數據視覺化呈現工具
如下介紹幾個經常使用的數據視覺化工具:
1. Matplotlib
2. Seaborn
3. Plotly
4. Pandas
學習使用這些視覺化工具可促進數據理解、信息提取和決策制定。本文將對Matplotlib工具進行詳細介紹。
Matplotlib
Matplotlib是一個Python的2D繪圖庫,它以各類硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。Matplotlib可在多種環境下運行,包括Python腳本、Python及IPython shell命令行,Jupyter notebook,網絡應用服務器與四個圖形用戶界面工具包。
Matplotlib普遍應用於數據視覺化,運行良好,用戶界面與Matlab類似度較低,並給予用戶極大的編碼靈活度。寫編碼可能會很無聊,但Matplotlib會給用戶極大的自由。
安裝Matplotlib
1. 使用畫中畫
python -m pip install -U pip
python -m pip install -U matplotlib
2. 使用Python科學包
有許多第三方科學包,如:
· Anaconda
· Canopy
· Activestate
本文最推薦Anaconda。它是經常使用Python數據科學包之一,可幫助輕鬆安裝全部數據科學包,並預裝Numpy,SciPy, Pandas, Matplotlib, Plotly等工具。推薦全部人安裝這個科學包,安裝時間只須要幾秒鐘。
可在conda終端運行conda命令以安裝任何科學包。不過須要訪問官網獲取準確的命令形式。
conda install PackageName
對於Matpotlib工具:
conda install matplotli
不一樣類型的Matpolotlib工具提供的功能不一樣:
1. 線、條、標誌
2. 圖像、輪廓、場
3. 餅狀圖、極座標圖
4. 統計性繪圖
以及許多其它功能。這些功能普遍應用於折線圖、柱狀圖、直方圖、餅狀圖等。
圖庫傳送門:https://matplotlib.org/gallery/index.html
案例學習
如上所述,可以使用Matplotlib繪製多種圖形,如散點圖、柱狀圖和直方圖。根據數據視覺化過程當中的實際需求選擇圖形類型,如羣組對比、定量變量對比、數據分佈分析等。
如下介紹幾個經常使用的繪圖技巧:
基本要求
解決實際問題以前,須安裝好工具:
安裝Anaconda科學包
1. 首先,確保安裝Anaconda
安裝流程傳送門:https://docs.anaconda.com/anaconda/install/
啓動JupyterNotebook
Anaconda科學包安裝完成後,打開Anaconda指南,啓動Jupyter notebook(以下圖所示)。使用Jupyter notebook對案例進行編碼。
檢查安裝預裝包
參考下圖:在Environments菜單下,右側顯示有預裝包。好比,搜索Pandas,界面右側顯示Pandas已安裝。一樣,可輸入須要的安裝包名稱進行安裝。檢查並確保安裝matplotlib,numpy, pandas, seaborn等工具。
確保安裝全部科學包後,學習繪製餅狀圖。
關於Matplotlibs的幾個要點
Matplotlibs包含一個幫助繪圖的子模塊,稱爲Pyplot。繪圖中可以使用Jupyter notebook,它易於使用、操做簡單。運行import matplotlib.pyplot as plt命令導入Matplotlibs下的Pyplot模塊。
· 使用Pandas pd.read_csv()導入所需圖庫和數據集。
· 使用plt.plot()繪製折線圖及其餘圖形。全部繪圖功能都須要數據,數據以參數形式提供。
· 使用plot.xlabel , plt.ylabel分別標記x軸和y軸。
· 使用plt.xticks , plt.yticks分別標記x軸和y軸觀察點。
· 使用 plt.legend()表示觀察變量。
· 使用plt.title()設置圖片標題。
· 使用plot.show()展現圖片。
1. 繪製餅狀圖
#Here we import ther matplotlibpackage with alias name as plt import matplotlib.pyplot as plt plt.bar([1,3,5,7,9],[5,2,7,8,2],label=」Example one」) plt.bar([2,4,6,8,10],[8,6,2,5,6],label=」Example two」, color=’g’) plt.legend() plt.xlabel(‘bar number’) plt.ylabel(‘bar height’) plt.title(‘Wow! We Got OurFirst Bar Graph’) plt.show()
將以上編碼複製粘貼到Jupyter notebook,運行該命令,餅狀圖以下所示:
說明:
導入matplotlib包後,其子模塊pyplot運行餅狀圖繪製命令。
經過如下說明了解plt. bar繪圖方法。
#matplotlib.pyplot.bar(x,height, width=0.8, bottom=None, *, align='center',data=None, **kwargs)[source] So to Make a bar plot: The bars are positioned at xwith the given alignment. Their dimensions are given by width andheight. The vertical baseline is bottom(default 0). Each of x, height,width, and bottom may either be a scalar applying to all bars, orit may be a sequence of length N providing a separate value for each bar.
詳情傳送門:https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.bar.html
2. 直方圖
直方圖由一系列高度不等的縱向條紋或線段表示數據分佈的狀況。
直方圖可用以估測數據分佈,頻率值被劃分到某一數值段。
若需想爲某一直方賦值,使用numpyhistogram()方法,運行以下命令。若需估測數值分佈,可以使用.hist()方法,繪製簡單直方圖。
Matplotlib可經過NumPy’s histogram()方法視覺化呈現Python直方圖,並提供通用包裝:
案例:
#Histogram Code import matplotlib.pyplot as plt import numpy as np #importingnumpy package for array generation np.set_printoptions(precision=3) >>> d = np.random.laplace(loc=15, scale=3, size=500) >>> d[:5] # An "interface" tomatplotlib.axes.Axes.hist() method n, bins, patches =plt.hist(x=d, bins='auto', color='#0504aa', alpha=0.7,rwidth=0.85) plt.grid(axis='y', alpha=0.75) plt.xlabel('Value') plt.ylabel('Frequency') plt.title('My First Histogram Ever') plt.text(23, 45, r'$\mu=15, b=3$') maxfreq = n.max() # Set a clean upper y-axis limit. plt.ylim(ymax=np.ceil(maxfreq / 10) * 10 if maxfreq % 10 else maxfreq + 10)
說明:
可經過matplotlib下pyplot.hist()命令繪製直方圖。須肯定所需直方內線條數量。X軸接觸線條邊緣,y軸爲相應頻率。在以上直方圖中,bins='auto'命令從兩個算法中選擇,以估算理想的線條數。更深層面,算法的目標是選擇合適的線寬,以最忠實地表現數據。
源代碼輸出:#以上提到的直方圖編碼:
3. 散點圖
散點圖是繪圖或數學圖形,使用笛卡爾座標表現一組數據中兩個變量的數值。若是對散點進行編碼(顏色/形狀/規模),可額外表現一個變量。散點圖將數據顯示爲一組點,一變量值決定散點水平位置,另外一變量值肯定其垂直位置。
散點圖能夠顯示不一樣變量之間的相互關聯關係,並具備必定的機密間隔。好比,重量和高度,y軸爲重量,x軸爲高度。關聯關係能夠是正向的(起)、反向的(落)、不存在的(無關聯)。若是散點模型從左下向右上傾斜,顯示變量之間爲正相關。若是傾斜趨勢爲從左上到右下,則爲負相關。
模型:
matplotlib.pyplot.scatter(x, y, s=None, c=None, ma rker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts= None, edgecolors=None, *, plotnonfinite=False, da ta=None, **kwargs)[source] x,y :array_like, shape (n, ) The data positions. s : scalar orarray_like, shape (n, ), optional The marker size in points**2. Default is rcParams['lines.markersize'] ** 2. c : color, sequence,or sequence of color, optional
更多信息傳送門:https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.scatter.html
案例:
#scatter plot lib example usingmatplotlb import numpy as np import matplotlib.pyplot as plt # Create data N = 100 x = np.random.rand(N) y = np.random.rand(N) colors = (0,100,255) area = np.pi*3 # Plotplt.scatter(x, y, s=area, c=colors, alpha=0.5) plt.title('Scatter plot example using matplotlib') plt.xlabel('x')plt.ylabel('y')plt.show()
在jupyternotebook上編碼,結果以下所示:
經過實際數據集理解數據視覺化
使用從kaggle下載的汽車數據集理解MatplotLib數據視覺化:https://www.kaggle.com/toramky/automobile-dataset
切記:
1. 從上述網站下載Automobile.csv文件
2. 將Jupyter文件上載至編碼所在的工做目錄
3. 繪製直方圖:分類使用羣組數據:
可在一次繪圖中繪製多幅直方圖,有助於比較分類持續變量的分佈。
使用Automobile.csv數據集進行理解:
讀取數據集:
import pandas as pd #Reading data frm the automobile #data sets using pandas read method df =pd.read_csv(‘Automobile.csv’) df.head() #When you compile this code youwill see the below given o/p as a series of data column wise.
將如下編碼編寫/複製-粘貼至jupyter notebook文件:
import matplotlib.pyplot as plt #is you don't want to make aregular call on #plt.show use this line %matplotlib inline x1 =df.loc[df.make=='alfa-romero', 'horsepower'] x2 = df.loc[df.make=='audi', 'horsepower'] x3 = df.loc[df.make=='bmw', 'horsepower'] x4 = df.loc[df.make=='ferrari', 'horsepower']kwargs = dict(alpha=0.9,bins=100) plt.hist(x1, **kwargs,color='g', label='alfa-romero') plt.hist(x2, **kwargs, color='b', label='audi') plt.hist(x3, **kwargs, color='r', label='bmw') plt.hist(x3, **kwargs, color='y', label='ferrari') plt.gca().set(title='Horsepower Varitation for various make of a car', ylabel='Frequency') #plt.xlim(50,200)plt.legend();
如下直方圖使用了給定數據集的數值
顯然,馬力值集中在110-120 hp區段。
散點圖:
用散點圖表現數據分佈。基於車型觀察價格分佈。
將如下編碼複製/粘貼至jupyter notebook文件,並運行命令。
# Scatter Plot import matplotlib.pyplot as plt %matplotlib inline import pandas as pd df = pd.read_csv(‘Automobile.csv’) bodystyle = df[‘body_style’]#fetching bodytype values r price = df[‘price’] #fetching price for different body type plt.scatter(bodystyle, price,edgecolors=’r’) plt.xlabel(‘body_style’, 'make') plt.ylabel(‘price (Rs)’) plt.title(‘Price variation based on car body type’)
輸出:
觀察:
數據點集中與轎車車型,價格一般在10,000至15,000美圓之間。倉門式汽車次之。貨車車型的價格最低。
更多繪圖類型:
1. 小提琴圖
2. 堆積圖
3. 莖葉圖
4. 線條圖
5. 箱型圖
如下這幅圖全面展現了經常使用數據視覺化圖(表)類型,根據數據分析要求選擇適合的圖(表):
圖片來源:https://twitter.com/TonyDeJonker/status/1097191707916025856/photo/1
留言 點贊 關注
咱們一塊兒分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」
(添加小編微信:dxsxbb,加入讀者圈,一塊兒討論最新鮮的人工智能科技哦~)