小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

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

圖片來(lái)源:pexels.com/@divinetechygirl

在現(xiàn)代數(shù)字世界中,數(shù)據(jù)就像空氣一樣重要。

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

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

為了分析大量數(shù)據(jù)集,機(jī)器需要使用通過(guò)Python語(yǔ)言構(gòu)建的數(shù)據(jù)視覺(jué)化工具。因此,今天需要了解以下問(wèn)題:

1. 什么是數(shù)據(jù)視覺(jué)化呈現(xiàn)?

2. 有哪些數(shù)據(jù)視覺(jué)化呈現(xiàn)工具?

3. 如何使用這些工具?

4. 為什么需要學(xué)習(xí)使用這些工具?

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

數(shù)據(jù)科學(xué)中的數(shù)據(jù)視覺(jué)化

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

眾所周知,人腦更易于理解圖像。因此有句俗語(yǔ)說(shuō):一圖勝千言。而這完全適用于數(shù)據(jù)科學(xué),因?yàn)槠湫枰治龃罅恳曈X(jué)化呈現(xiàn)的數(shù)據(jù)以推演數(shù)據(jù)模型。

數(shù)據(jù)視覺(jué)化是數(shù)據(jù)科學(xué)領(lǐng)域的一項(xiàng)技術(shù),可使你講出具有信服力的故事,通過(guò)易于理解、模擬化的方式將數(shù)據(jù)和分析結(jié)果視覺(jué)化呈現(xiàn)。這項(xiàng)技術(shù)能讓復(fù)雜的數(shù)據(jù)看起來(lái)很簡(jiǎn)單,并易于理解。

數(shù)據(jù)視覺(jué)化呈現(xiàn)工具

以下介紹幾個(gè)常用的數(shù)據(jù)視覺(jué)化工具:

1. Matplotlib

2. Seaborn

3. Plotly

4. Pandas

學(xué)習(xí)使用這些視覺(jué)化工具可促進(jìn)數(shù)據(jù)理解、信息提取和決策制定。本文將對(duì)Matplotlib工具進(jìn)行詳細(xì)介紹。

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

Matplotlib

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

Matplotlib廣泛應(yīng)用于數(shù)據(jù)視覺(jué)化,運(yùn)行良好,用戶界面與Matlab相似度較低,并給予用戶極大的編碼靈活度。寫(xiě)編碼可能會(huì)很無(wú)聊,但Matplotlib會(huì)給用戶極大的自由。

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

安裝Matplotlib

1. 使用畫(huà)中畫(huà)

python -m pip install -U pip
python -m pip install -U matplotlib

2. 使用Python科學(xué)包

有許多第三方科學(xué)包,如:

· Anaconda

· Canopy

· Activestate

本文最推薦Anaconda。它是常用Python數(shù)據(jù)科學(xué)包之一,可幫助輕松安裝所有數(shù)據(jù)科學(xué)包,并預(yù)裝Numpy,SciPy, Pandas, Matplotlib, Plotly等工具。推薦所有人安裝這個(gè)科學(xué)包,安裝時(shí)間只需要幾秒鐘。

可在conda終端運(yùn)行conda命令以安裝任何科學(xué)包。不過(guò)需要訪問(wèn)官網(wǎng)獲取準(zhǔn)確的命令形式。

conda install PackageName

對(duì)于Matpotlib工具:

conda install matplotlib

不同類(lèi)型的Matpolotlib工具提供的功能不同:

1. 線、條、標(biāo)志

2. 圖像、輪廓、場(chǎng)

3. 餅狀圖、極坐標(biāo)圖

4. 統(tǒng)計(jì)性繪圖

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

圖庫(kù)傳送門(mén):https:///gallery/index.html

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

案例學(xué)習(xí)

如上所述,可使用Matplotlib繪制多種圖形,如散點(diǎn)圖、柱狀圖和直方圖。根據(jù)數(shù)據(jù)視覺(jué)化過(guò)程中的實(shí)際需求選擇圖形類(lèi)型,如群組對(duì)比、定量變量對(duì)比、數(shù)據(jù)分布分析等。

以下介紹幾個(gè)常用的繪圖技巧:

基本要求

解決實(shí)際問(wèn)題之前,須安裝好工具:

安裝Anaconda科學(xué)包

1. 首先,確保安裝Anaconda

安裝流程傳送門(mén):https://docs./anaconda/install/

啟動(dòng)JupyterNotebook

Anaconda科學(xué)包安裝完成后,打開(kāi)Anaconda指南,啟動(dòng)Jupyter notebook(如下圖所示)。使用Jupyter notebook對(duì)案例進(jìn)行編碼。

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

檢查安裝預(yù)裝包

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

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

確保安裝所有科學(xué)包后,學(xué)習(xí)繪制餅狀圖。

關(guān)于Matplotlibs的幾個(gè)要點(diǎn)

Matplotlibs包含一個(gè)幫助繪圖的子模塊,稱(chēng)為Pyplot。繪圖中可使用Jupyter notebook,它易于使用、操作簡(jiǎn)單。運(yùn)行import matplotlib.pyplot as plt命令導(dǎo)入Matplotlibs下的Pyplot模塊。

· 使用Pandas pd.read_csv()導(dǎo)入所需圖庫(kù)和數(shù)據(jù)集。

· 使用plt.plot()繪制折線圖及其他圖形。所有繪圖功能都需要數(shù)據(jù),數(shù)據(jù)以參數(shù)形式提供。

· 使用plot.xlabel , plt.ylabel分別標(biāo)記x軸和y軸。

· 使用plt.xticks , plt.yticks分別標(biāo)記x軸和y軸觀察點(diǎn)。

· 使用 plt.legend()表示觀察變量。

· 使用plt.title()設(shè)置圖片標(biāo)題。

· 使用plot.show()展示圖片。

視覺(jué)化呈現(xiàn)數(shù)據(jù),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()

將以上編碼復(fù)制粘貼到Jupyter notebook,運(yùn)行該命令,餅狀圖如下所示:

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

說(shuō)明:

導(dǎo)入matplotlib包后,其子模塊pyplot運(yùn)行餅狀圖繪制命令。

通過(guò)以下說(shuō)明了解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.

詳情傳送門(mén):https:///3.1.0/api/_as_gen/matplotlib.pyplot.bar.html

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

2. 直方圖

直方圖由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。

直方圖可用以估測(cè)數(shù)據(jù)分布,頻率值被劃分到某一數(shù)值段。

若需想為某一直方賦值,使用numpyhistogram()方法,運(yùn)行如下命令。若需估測(cè)數(shù)值分布,可使用.hist()方法,繪制簡(jiǎn)單直方圖。

Matplotlib可通過(guò)NumPy’s histogram()方法視覺(jué)化呈現(xiàn)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)

說(shuō)明:

可通過(guò)matplotlib下pyplot.hist()命令繪制直方圖。須確定所需直方內(nèi)線條數(shù)量。X軸接觸線條邊緣,y軸為相應(yīng)頻率。在以上直方圖中,bins='auto'命令從兩個(gè)算法中選擇,以估算理想的線條數(shù)。更深層面,算法的目標(biāo)是選擇合適的線寬,以最忠實(shí)地表現(xiàn)數(shù)據(jù)。

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

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?
視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

3. 散點(diǎn)圖

散點(diǎn)圖是繪圖或數(shù)學(xué)圖形,使用笛卡爾坐標(biāo)表現(xiàn)一組數(shù)據(jù)中兩個(gè)變量的數(shù)值。如果對(duì)散點(diǎn)進(jìn)行編碼(顏色/形狀/規(guī)模),可額外表現(xiàn)一個(gè)變量。散點(diǎn)圖將數(shù)據(jù)顯示為一組點(diǎn),一變量值決定散點(diǎn)水平位置,另一變量值確定其垂直位置。

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

模型:

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

更多信息傳送門(mén):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上編碼,結(jié)果如下所示:

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?
視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

通過(guò)實(shí)際數(shù)據(jù)集理解數(shù)據(jù)視覺(jué)化

使用從kaggle下載的汽車(chē)數(shù)據(jù)集理解MatplotLib數(shù)據(jù)視覺(jué)化:https://www./toramky/automobile-dataset

切記:

1. 從上述網(wǎng)站下載Automobile.csv文件

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

3. 繪制直方圖:分類(lèi)使用群組數(shù)據(jù):

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

使用Automobile.csv數(shù)據(jù)集進(jìn)行理解:

讀取數(shù)據(jù)集:

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.

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

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

以下直方圖使用了給定數(shù)據(jù)集的數(shù)值

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

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

散點(diǎn)圖:

用散點(diǎn)圖表現(xiàn)數(shù)據(jù)分布?;谲?chē)型觀察價(jià)格分布。

將以下編碼復(fù)制/粘貼至jupyter notebook文件,并運(yùn)行命令。

# 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’)

輸出:

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

觀察:

數(shù)據(jù)點(diǎn)集中與轎車(chē)車(chē)型,價(jià)格通常在10,000至15,000美元之間。倉(cāng)門(mén)式汽車(chē)次之。貨車(chē)車(chē)型的價(jià)格最低。

更多繪圖類(lèi)型:

1. 小提琴圖

2. 堆積圖

3. 莖葉圖

4. 線條圖

5. 箱型圖

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

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

圖片來(lái)源:https://twitter.com/TonyDeJonker/status/1097191707916025856/photo/1

視覺(jué)化呈現(xiàn)數(shù)據(jù),MatPlotLib是怎么大顯身手的?

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多