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

分享

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

 靜幻堂 2019-12-14
原創(chuàng) 讀芯術 2019-07-24 17:01:00
全文共6661字,預計學習時長20分鐘或更長
視覺化呈現數據,MatPlotLib是怎么大顯身手的?

圖片來源:pexels.com/@divinetechygirl

在現代數字世界中,數據就像空氣一樣重要。

人們每天都會自覺或不自覺地消費和產生大量數據。近來,許多商家試圖利用這些數據來進行營銷和吸引消費者。所有行業(yè)都開始在其服務中增添人性化色彩,向消費者兜售絕佳的用戶體驗。而這一切都是基于數據科學下人工智能和機器學習技術的發(fā)展。機器正變得越發(fā)聰明,能通過分析大量數據從而做出決策。

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

為了分析大量數據集,機器需要使用通過Python語言構建的數據視覺化工具。因此,今天需要了解以下問題:

1. 什么是數據視覺化呈現?

2. 有哪些數據視覺化呈現工具?

3. 如何使用這些工具?

4. 為什么需要學習使用這些工具?

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

數據科學中的數據視覺化

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

眾所周知,人腦更易于理解圖像。因此有句俗語說:一圖勝千言。而這完全適用于數據科學,因為其需要分析大量視覺化呈現的數據以推演數據模型。

數據視覺化是數據科學領域的一項技術,可使你講出具有信服力的故事,通過易于理解、模擬化的方式將數據和分析結果視覺化呈現。這項技術能讓復雜的數據看起來很簡單,并易于理解。

數據視覺化呈現工具

以下介紹幾個常用的數據視覺化工具:

1. Matplotlib

2. Seaborn

3. Plotly

4. Pandas

學習使用這些視覺化工具可促進數據理解、信息提取和決策制定。本文將對Matplotlib工具進行詳細介紹。

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

Matplotlib

Matplotlib是一個Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質量級別的圖形。Matplotlib可在多種環(huán)境下運行,包括Python腳本、Python及IPython shell命令行,Jupyter notebook,網絡應用服務器與四個圖形用戶界面工具包。

Matplotlib廣泛應用于數據視覺化,運行良好,用戶界面與Matlab相似度較低,并給予用戶極大的編碼靈活度。寫編碼可能會很無聊,但Matplotlib會給用戶極大的自由。

視覺化呈現數據,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 matplotlib

不同類型的Matpolotlib工具提供的功能不同:

1. 線、條、標志

2. 圖像、輪廓、場

3. 餅狀圖、極坐標圖

4. 統計性繪圖

以及許多其它功能。這些功能廣泛應用于折線圖、柱狀圖、直方圖、餅狀圖等。

圖庫傳送門:https:///gallery/index.html

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

案例學習

如上所述,可使用Matplotlib繪制多種圖形,如散點圖、柱狀圖和直方圖。根據數據視覺化過程中的實際需求選擇圖形類型,如群組對比、定量變量對比、數據分布分析等。

以下介紹幾個常用的繪圖技巧:

基本要求

解決實際問題之前,須安裝好工具:

安裝Anaconda科學包

1. 首先,確保安裝Anaconda

安裝流程傳送門:https://docs./anaconda/install/

啟動JupyterNotebook

Anaconda科學包安裝完成后,打開Anaconda指南,啟動Jupyter notebook(如下圖所示)。使用Jupyter notebook對案例進行編碼。

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

檢查安裝預裝包

參考下圖:在Environments菜單下,右側顯示有預裝包。比如,搜索Pandas,界面右側顯示Pandas已安裝。同樣,可輸入需要的安裝包名稱進行安裝。檢查并確保安裝matplotlib,numpy, pandas, seaborn等工具。

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

確保安裝所有科學包后,學習繪制餅狀圖。

關于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()展示圖片。

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

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是怎么大顯身手的?

說明:

導入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:///3.1.0/api/_as_gen/matplotlib.pyplot.bar.html

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

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'命令從兩個算法中選擇,以估算理想的線條數。更深層面,算法的目標是選擇合適的線寬,以最忠實地表現數據。

源代碼輸出:#以上提到的直方圖編碼:

視覺化呈現數據,MatPlotLib是怎么大顯身手的?
視覺化呈現數據,MatPlotLib是怎么大顯身手的?

3. 散點圖

散點圖是繪圖或數學圖形,使用笛卡爾坐標表現一組數據中兩個變量的數值。如果對散點進行編碼(顏色/形狀/規(guī)模),可額外表現一個變量。散點圖將數據顯示為一組點,一變量值決定散點水平位置,另一變量值確定其垂直位置。

散點圖可以顯示不同變量之間的相互關聯關系,并具有一定的機密間隔。比如,重量和高度,y軸為重量,x軸為高度。關聯關系可以是正向的(起)、反向的(落)、不存在的(無關聯)。如果散點模型從左下向右上傾斜,顯示變量之間為正相關。如果傾斜趨勢為從左上到右下,則為負相關。

模型:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, plotnonfinite=False, data=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:///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
# Plot
plt.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上編碼,結果如下所示:

視覺化呈現數據,MatPlotLib是怎么大顯身手的?
視覺化呈現數據,MatPlotLib是怎么大顯身手的?

通過實際數據集理解數據視覺化

使用從kaggle下載的汽車數據集理解MatplotLib數據視覺化:https://www./toramky/automobile-dataset

切記:

1. 從上述網站下載Automobile.csv文件

2. 將Jupyter文件上載至編碼所在的工作目錄

3. 繪制直方圖:分類使用群組數據:

可在一次繪圖中繪制多幅直方圖,有助于比較分類持續(xù)變量的分布。

使用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.

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

將以下編碼編寫/復制-粘貼至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();

以下直方圖使用了給定數據集的數值

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

顯然,馬力值集中在110-120 hp區(qū)段。

散點圖:

用散點圖表現數據分布。基于車型觀察價格分布。

將以下編碼復制/粘貼至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’)

輸出:

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

觀察:

數據點集中與轎車車型,價格通常在10,000至15,000美元之間。倉門式汽車次之。貨車車型的價格最低。

更多繪圖類型:

1. 小提琴圖

2. 堆積圖

3. 莖葉圖

4. 線條圖

5. 箱型圖

以下這幅圖全面展示了常用數據視覺化圖(表)類型,根據數據分析要求選擇適合的圖(表):

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

圖片來源:https://twitter.com/TonyDeJonker/status/1097191707916025856/photo/1

視覺化呈現數據,MatPlotLib是怎么大顯身手的?

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約