終于有人將Seaborn可視化講明白了
本文轉載自微信公眾號「數(shù)倉寶貝庫」,作者王愷 等。轉載本文請聯(lián)系數(shù)倉寶貝庫公眾號。
Seaborn是一種開源的數(shù)據(jù)可視化工具,它在Matplotlib的基礎上進行了更高級的API封裝,因此可以進行更復雜的圖形設計和輸出。Seaborn是Matplotlib的重要補充,可以自主設置在Matplotlib中被默認的各種參數(shù),而且它能高度兼容NumPy與Pandas數(shù)據(jù)結構以及Scipy與statsmodels等統(tǒng)計模式。Seaborn已集成在Anaconda中,無須再次安裝。
01關系圖
關系圖能夠直觀地展示數(shù)據(jù)變量之間的關系以及這些關系如何依賴于其他變量,Seaborn中常用的繪制數(shù)據(jù)關系圖的函數(shù)是relplot(),其語法格式如下:
- seaborn.relplot(*[, x, y, hue, size, style, data, kind, …])
參數(shù)說明如下:
- data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型可以是pandas.DataFrame對象、numpy.ndarray數(shù)組、映射或序列類型等。
- x和y是參數(shù)data中的鍵或向量,指定關系圖中x軸和y軸的變量。
- hue也是data中的鍵或向量,根據(jù)hue變量對數(shù)據(jù)進行分組,并在圖中使用不同顏色的元素加以區(qū)分。
- size也是data中的鍵或向量,根據(jù)size變量控制圖中點的大小或線條的粗細。
- style也是data中的鍵或向量,根據(jù)style變量對數(shù)據(jù)進行分組,并在圖中使用不同類型的元素加以區(qū)分,比如點線、虛線等。
- kind指定要繪制的關系圖類型,可選"scatter"(散點圖)和"line"(線形圖),默認值為"scatter"。
relplot函數(shù)提供了幾種可視化數(shù)據(jù)變量之間關系的方法,通過kind參數(shù)選擇要使用的方法,并通過hue、size和style等參數(shù)來顯示數(shù)據(jù)的不同子集。常見的關系圖有兩種,即散點圖和線形圖,因此Seaborn還提供了scatterplot和lineplot函數(shù),它們的語法格式如下:
- seaborn.scatterplot(*[, x, y, hue, style, size, …])
- seaborn.lineplot((*[, x, y, hue, style, size, …]))
scatterplot用于繪制散點圖,相當于seaborn.relplot(kind="scatter");lineplot用于繪制線形圖,相當于seaborn.relplot(kind="line");其他參數(shù)及含義與relplot函數(shù)相同。當其中一個變量是連續(xù)變量時,更適合使用線形圖表示變量之間的關系。
下面通過代碼清單1演示如何用Seaborn繪制關系圖。
- 代碼清單1 Seaborn繪制關系圖的示例
- 1 import matplotlib.pyplot as plt
- 2 import seaborn as sns
- 3 tips= sns.load_dataset("tips")
- 4 print(tips.head())
- 5 sns.relplot(x='total_bill', y='tip', data=tips, hue='smoker', style='sex', size='size')
- 6 plt.show()
程序執(zhí)行結束后,輸出的結果如下:
- total_bill tip sex smoker day time size
- 0 16.99 1.01 Female No Sun Dinner 2
- 1 10.34 1.66 Male No Sun Dinner 3
- 2 21.01 3.50 Male No Sun Dinner 3
- 3 23.68 3.31 Male No Sun Dinner 2
- 4 24.59 3.61 Female No Sun Dinner 4
- <seaborn.axisgrid.FacetGrid at 0x16dea2711f0>
程序繪制的關系圖如圖1所示。
圖1 Seaborn繪制散點關系圖示例
下面對代碼清單1中的代碼做簡要說明。
- 第2行代碼導入seaborn模塊并將其重命名為sns。
- 第3行代碼通過sns.load_dataset()函數(shù)連網(wǎng)加載Seaborn開發(fā)者提供的在線樣本數(shù)據(jù)集“tips.csv”,返回值tips是一個DataFrame對象。
- 第4行代碼打印tips數(shù)據(jù)的前5行,以觀察數(shù)據(jù)結構。
- 第5行代碼通過sns.relplot()函數(shù)繪制total_bill與tip變量的關系圖,如圖1所示。x坐標為'total_bill'變量,y坐標為'tip'變量;hue='smoker'指定以'smoker'變量對數(shù)據(jù)點進行分類并以不同顏色顯示,不吸煙者對應的數(shù)據(jù)點是藍色的,吸煙者對應的數(shù)據(jù)點為橙色;style='sex'指定以'sex'變量對數(shù)據(jù)點進行分類并以不同樣式顯示,女性對應的數(shù)據(jù)點形狀是圓點,而男性對應的數(shù)據(jù)點形狀則是“×”;size='size'指定以'size'變量對數(shù)據(jù)點進行分類并以不同大小顯示。從圖6-6中可以進一步分析出不同分類中total_bill與tip的關系。
Tips
sns.load_dataset()函數(shù)是連網(wǎng)加載在線數(shù)據(jù)集,還可以在https://github.com/mwaskom/ seaborn-data網(wǎng)站中將數(shù)據(jù)集下載到本地使用。
02分布圖
分布圖可以直觀地顯示一個或多個變量在某個維度上的分布情況。Seaborn提供了幾種常用的繪制分布圖的函數(shù),包括displot()、histplot()、rdeplot()、rugplot()、distplot()和jointplot()等。
1. displot()函數(shù)
displot()函數(shù)提供了幾種可視化數(shù)據(jù)單變量或雙變量分布的方法,語法格式如下:
- seaborn.displot([data, x, y, hue, row, col, …])
主要參數(shù)說明如下:
- data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型可以是pandas.DataFrame對象、numpy.ndarray數(shù)組、映射或序列類型等。
- x和y是參數(shù)data中的鍵或向量,指定分布圖中x軸和y軸的變量。
- hue是data中的鍵或向量,根據(jù)hue變量對數(shù)據(jù)進行分組,并在圖中使用不同顏色的元素加以區(qū)分。
- row和col是data中的鍵或向量,根據(jù)row或col變量提取數(shù)據(jù)子集,并將子集分布情況繪制在不同的面板上。
- kind指定要繪制的分布圖類型,可選"hist"(直方圖)、"kde"(核密度估計)、 "ecdf"(經(jīng)驗累積分布函數(shù)),默認值為"hist"。
displot函數(shù)通過kind參數(shù)選擇要使用的繪制數(shù)據(jù)分布情況的方法,并通過hue、row、col等參數(shù)來處理不同的數(shù)據(jù)子集。Seaborn還提供了三個更具體的繪制分布圖的函數(shù)histplot()、kdeplot()和ecdfplot(),語法格式如下:
- seaborn.histplot([data, x, y, hue, weights, stat, …])
- seaborn.kdeplot([x, y, shade, vertical, kernel, bw, …])
- seaborn.ecdfplot([data, x, y, hue, weights, stat, …])
- histplot()函數(shù)主要用于繪制單變量單特征數(shù)據(jù)的直方圖,相當于seaborn.displot (kind= "hist")。
- kdeplot()函數(shù)使用核密度估計繪制單變量或雙變量分布,相當于seaborn.displot (kind= "kde")。
- ecdfplot()函數(shù)使用經(jīng)驗累積分布函數(shù)繪制單變量的分布,相當于seaborn.displot (kind= "ecdf")。
2. rugplot()函數(shù)
rugplot()函數(shù)的功能是繪制軸須圖(毛毯分布圖),即通過邊緣軸須線的方式顯示單個觀測點的位置,以補充其他分布圖,其語法格式如下:
- seaborn.rugplot([x, height=0.025, axis, ax, data, y, hue, …])
主要參數(shù)說明如下:
x和y分別是x軸和y軸的觀測值向量。
- height設置每個觀測點對應的軸須細線的高度,默認值為0.025。
- axis指定軸須圖繪制的坐標軸,默認為x軸。
- ax指定將圖像繪制在已有的axes對象中。
- hue指定區(qū)分顏色的分類變量。
3. distplot()函數(shù)
distplot()函數(shù)整合了Matplotlib的hist()函數(shù)與Seaborn的kdeplot()函數(shù)的功能,并增加了rugplot()函數(shù)繪制軸須圖的功能,因此它是一個功能非常強大且靈活實用的繪制分布圖函數(shù),其語法格式如下:
- seaborn.distplot([a, bins, hist, kde, rug, fit, …])
主要參數(shù)說明如下:
- a是待觀察分析的單個變量,數(shù)據(jù)類型可以是Series對象、一維數(shù)組或列表。
- bins指定直方圖顯示矩形條的數(shù)量,默認值為None,此時會根據(jù)Freedman-Diaconis準則自動計算合適的條紋個數(shù)。
- hist指定是否繪制直方圖,布爾類型,默認值為True。
- kde指定是否繪制高斯核密度估計曲線,布爾類型,默認值為True。
- rug指定是否在支持的數(shù)據(jù)軸上繪制對應軸須圖,布爾類型,默認值為False。
- fit傳入scipy.stats中的分布類型,用于在觀察變量上抽取相關統(tǒng)計特征來強行擬合指定的分布,并繪制估計的概率密度函數(shù)(PDF),默認值為None,即不進行擬合。
下面通過代碼清單2演示如何通過Seaborn繪制分布圖。
- 代碼清單2 Seaborn繪制分布圖的示例
- 1 import seaborn as sns
- 2 import matplotlib.pyplot as plt
- 3 tips= sns.load_dataset("tips")
- 4 sns.set_theme(style="whitegrid")
- 5 sns.displot(data=tips, x="total_bill", col="time", row="sex", binwidth=3, height=3, facet_kws= dict(margin_titles=True))
- 6 plt.subplots()
- 7 sns.distplot(a=tips['total_bill'], rug=True, hist=False)
- 8 plt.show()
程序執(zhí)行結束后,輸出的圖像如圖2和圖3所示。
下面對代碼清單2中的代碼做簡要說明。
- 第4行代碼通過sns.set_theme()函數(shù)設置主題樣式為whitegrid,即白色背景和網(wǎng)格線。
- 第5行代碼通過sns.displot()函數(shù)繪制total_bills變量的分布圖,默認繪圖樣式為直方圖。col="time"指定以time變量對數(shù)據(jù)分組并繪制在不同列,如圖2所示,time為Dinner的數(shù)據(jù)分布繪制在第一列,而time為Lunch的數(shù)據(jù)分布繪制在第二列;row="sex"指定以sex變量對數(shù)據(jù)再次分組并繪制不同行,如圖2所示,sex為Female的數(shù)據(jù)分布繪制在第一行,而sex為Male的數(shù)據(jù)分布繪制在第二行。binwidth=3指定直方圖矩形條的寬度為3;height=3指定每個子圖面板的高度為3;facet_kws = dict(margin_titles=True)設置每行對應row變量標簽繪制在最后一列的右側。
- 第6行代碼通過plt.subplots()函數(shù)新建一個Figure對象,用于繪制第二個圖像。
- 第7行代碼通過sns.distplot()函數(shù)繪制total_bill變量的高斯核密度估計曲線,rug=True表示要繪制對應的軸須圖,hist=False表示不繪制直方圖,kde默認值為True,即繪制高斯核密度估計曲線,如圖3所示。
圖2 seaborn.displot函數(shù)繪制分布圖示例
圖3 seaborn.distplot函數(shù)繪制高斯核密度估計曲線示例
4. jointplot函數(shù)
seaborn.jointplot()函數(shù)提供了幾種繪制兩個變量的聯(lián)合分布圖的方法,其語法格式如下:
- seaborn.jointplot(*[,x,y,data,kind,color,...])
主要參數(shù)說明如下:
- data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型可以是pandas.DataFrame對象、numpy.ndarray數(shù)組、映射或序列類型等。
- x和y是參數(shù)data中的鍵或向量,指定分布圖中x軸和y軸的變量。聯(lián)合分布圖是雙向繪制的,即兩個變量分別以對方作為自變量繪制分布圖。
- kind指定繪制主分布圖的類型,可選擇值為"scatter"(散點圖)、"kde"(核密度估計曲線)、"hist"(直方圖)、"hex"(六邊形圖)、"reg"(回歸圖)或"resid"(線性回歸殘差圖),默認值為"scatter"。
- color指定圖像中元素的顏色。
下面通過代碼清單3演示如何通過jointplot函數(shù)繪制分布圖。
- 代碼清單3 jointplot函數(shù)繪制分布圖的示例
- 1import seaborn as sns
- 2import matplotlib.pyplot as plt
- 3tips = sns.load_dataset("tips")
- 4sns.set(style="white") #設置風格樣式
- 5sns.jointplot(x="total_bill", y="tip", data=tips)
- 6plt.show()
程序執(zhí)行結束后,輸出的圖像如圖4所示。
圖4 jointplot函數(shù)繪制聯(lián)合分布圖示例
下面對代碼清單3中的代碼做簡要說明。
- 第4行代碼通過sns.set()函數(shù)設置主題樣式為white,即白色背景無網(wǎng)格。
- 第5行代碼通過sns.jointplot()函數(shù)繪制total_bill和tip變量的聯(lián)合分布圖,如圖5所示。中間的主分布圖默認為散點圖,顯示total_bill和tip變量之間的關系。主圖上方對應繪制x軸變量total_bill的直方圖,主圖右側則對應繪制y軸變量tip的直方圖。
03分類圖
分類圖展示數(shù)據(jù)根據(jù)特定變量進行分類后的統(tǒng)計情況。常用的分類圖包括分類散點圖、箱形圖、條形圖等。Seaborn的catplot()函數(shù)提供了幾種不同的分類可視化方法,以便顯示數(shù)值變量與一個或多個分類變量之間的關系,常用語法格式如下:
- seaborn.catplot(*[,x,y,hue,data,row,col,kind,...])
參數(shù)說明如下:
- data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型只能是長格式的pandas.DataFrame對象,即每一列對應一個變量,每一行對應一個觀察值。
- x和y是data數(shù)據(jù)集中的變量名,指定分類圖中x軸和y軸的變量。
- hue也是data數(shù)據(jù)集中的變量名,根據(jù)hue變量對數(shù)據(jù)進行分組,并在圖中使用不同顏色的元素加以區(qū)分。
- row和col也是data數(shù)據(jù)集中的變量名,作為分類變量提取數(shù)據(jù)子集,并將子集分布情況繪制在不同的面板上。
- kind指定要繪制的分類圖類型,可選類型有"strip"(帶狀圖)、"swarm"(分簇散點圖)、"box"(箱形圖)、"violin"(小提琴圖)、"boxen"(增強箱形圖)、"point"(點估計)、"bar"(條形圖)或"count"(計數(shù)條形圖),默認值為"strip"。
catplot()函數(shù)通過kind參數(shù)選擇要使用的繪制數(shù)據(jù)分類的方法,并通過hue、row、col等參數(shù)來處理不同的數(shù)據(jù)子集。Seaborn還提供了三類更具體的繪制分類圖的函數(shù),包括分類散點圖、分類分布圖和分類預測圖。
1.分類散點圖函數(shù)
分類散點圖函數(shù)包括stripplot()和swarmplot(),常用的語法格式如下:
- seaborn.stripplot(*[, x, y, hue, data, order, …])
- seaborn.swarmplot(*[, x, y, hue, data, order, …])
seaborn.stripplot(*[,seaborn.swarmplot(*[,stripplot()相當于seaborn.catplot(kind= "strip"),可以顯示測量變量在每個類別的分布情況,繪制的散點呈帶狀,數(shù)據(jù)較多時會有重疊的部分。
swarmplot()相當于seaborn.catplot(kind= "swarm"),它與stripplot()類似,但繪制的數(shù)據(jù)點不會重疊。
2.分類分布圖函數(shù)
分類分布圖函數(shù)包括boxplot()、violinplot()和boxenplot(),常用的語法格式如下:
- seaborn.boxplot(*[, x, y, hue, data, order, …])
- seaborn.violinplot(*[, x, y, hue, data, order, …])
- seaborn.boxenplot(*[, x, y, hue, data, order, …])
- boxplot()相當于seaborn.catplot(kind= "box"),用于繪制箱形圖以顯示與類別相關的分布情況,可以顯示四分位數(shù)、中位數(shù)和極值。
- violinplot()相當于seaborn.catplot(kind= " violin "),結合了箱形圖和核密度估計圖。
- boxenplot()相當于seaborn.catplot(kind= "boxen"),用于為更大的數(shù)據(jù)集繪制增強箱形圖。
3.分類預測圖函數(shù)
分類預測圖函數(shù)包括pointplot()、barplot()和countplot(),常用的語法格式如下:
- seaborn.pointplot(*[, x, y, hue, data, order, …])
- seaborn.barplot(*[, x, y, hue, data, order, …])
- seaborn.countplot(*[, x, y, hue, data, order, …])
- pointplot()相當于seaborn.catplot(kind= "point"),使用散點圖符號顯示點估計和置信區(qū)間。
- barplot()相當于seaborn.catplot(kind= "bar"),使用條形圖顯示點估計和置信區(qū)間。
- countplot()相當于seaborn.catplot(kind= "count"),使用條形圖顯示每個分類中的觀察值計數(shù)。
下面通過代碼清單4演示如何通過Seaborn繪制分類圖。
- 代碼清單4 Seaborn繪制分類圖的示例
- 1 import seaborn as sns
- 2 import pandas as pd
- 3 import matplotlib.pyplot as plt
- 4 tips = sns.load_dataset("tips")
- 5 sns.set_theme(style="whitegrid")
- 6 f = sns.catplot(data=tips, kind="bar",x="day", y="total_bill", hue="smoker")
- 7 f.despine(left=True)
- 8 f.set_axis_labels("day", "total_bill")
- 9 f.legend.set_title("smoker")
- 10 plt.subplots()
- 11 sns.boxplot(x="day", y="total_bill", data=tips)
- 12 plt.show()
程序執(zhí)行結束后,輸出的圖像如圖5和圖6所示。
下面對代碼清單4中的代碼做簡要說明。
- 第6行代碼通過sns.catplot()函數(shù)針對數(shù)據(jù)集tips繪制分布圖,kind="bar"指定繪制條形圖;x="day"指定x坐標為day變量,即根據(jù)day變量對數(shù)據(jù)集進行分類;y="total_bill"指定y坐標為total_bill變量,即顯示total_bill變量的統(tǒng)計情況;hue="smoker"指定以smoker變量對數(shù)據(jù)點進行分類并以不同顏色顯示,如圖5所示,smoker值為No的對應數(shù)據(jù)條是藍色的,smoker值為Yes的對應數(shù)據(jù)條是棕色的。返回值f是FacetGrid對象。
圖5 seaborn.catplot()函數(shù)繪制分類圖示例
圖6 seaborn.boxplot()函數(shù)繪制箱形圖示例
- 第7行代碼通過f.despine(left=True)設置移除f左側的y軸軸線。
- 第8~9行代碼分別設置x軸標簽為day,y軸標簽為total_bill,圖例標題為smoker。
- 第10行代碼通過plt.subplots()函數(shù)新建一個Figure對象。
- 第11行代碼通過sns.boxplot()函數(shù)繪制箱形圖,同樣指定x坐標為day變量,指定y坐標為total_bill變量,結果如圖6所示。
04回歸圖
回歸圖是使用統(tǒng)計模型估計兩個變量間的關系。Seaborn提供了常用的繪制回歸圖的函數(shù)regplot()和lmplot()。regplot()函數(shù)的功能是繪制數(shù)據(jù)和線性回歸模型擬合的曲線,常用的語法格式如下:
- seaborn.regplot(*[, x, y, data, x_estimator, …])
主要參數(shù)說明如下:
data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型是DataFrame對象,即每一列對應一個變量,每一行對應一個觀察值。
x和y是輸入變量,數(shù)據(jù)類型可以是字符串、Series對象或者向量數(shù)組等。如果是字符串,則與data中的列名相對應。如果是Pandas對象,則坐標軸被標記為Series名稱。
lmplot()函數(shù)結合了regplot()和FacetGrid的功能,為繪制數(shù)據(jù)集的條件子集的回歸模型提供接口,語法格式如下:
- seaborn.lmplot(*[, x, y, data, hue, col, row, …])
主要參數(shù)說明如下:
- data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型是DataFrame對象,即每一列對應一個變量,每一行對應一個觀察值。
- x和y是輸入變量,數(shù)據(jù)類型是字符串,與data中的列名相對應。
- hue、col和row是劃分數(shù)據(jù)子集的變量,這些子集將繪制在網(wǎng)格中的不同面板上。
regplot()和lmplot()函數(shù)密切相關,兩者主要的區(qū)別是:regplot接受各種類型的x和y參數(shù),包括numpy arrays 、pandas.series 或者pandas.Dataframe對象;而lmplot()的x和y參數(shù)只接受字符串類型。
下面通過代碼清單5演示如何通過Seaborn繪制回歸圖。
- 代碼清單5 Seaborn繪制回歸圖的示例
- 1 import seaborn as sns
- 2 import matplotlib.pyplot as plt
- 3 tips = sns.load_dataset("tips")
- 4 sns.regplot(x="total_bill", y="tip", data=tips)
- 5 sns.lmplot(x="total_bill", y="tip", hue="smoker",col='sex', data=tips)
- 6 plt.show()
程序執(zhí)行結束后,輸出的圖像如圖7和圖8所示。
圖7 seaborn.regplot()函數(shù)繪制回歸圖示例
圖8 seaborn.lmplot()函數(shù)繪制回歸圖示例
下面對代碼清單5中的代碼做簡要說明。
- 第4行代碼通過sns.regplot()函數(shù)繪制回歸圖,指定x坐標為total_bill變量,指定y坐標為tip變量,其他設置采用默認值,結果如圖6-12所示,繪制出了total_bill和tip變量之間的線性擬合曲線,同時實際數(shù)據(jù)以散點的形式顯示。
- 第5行代碼通過sns.lmplot()函數(shù)在一個Facegrid對象中繪制total_bill和tip的回歸曲線;hue="smoker"指定以smoker變量對數(shù)據(jù)點進行分類并以不同的顏色顯示,如圖8所示,smoker值為No的數(shù)據(jù)點和擬合直線是藍色的,smoker值為Yes的數(shù)據(jù)點和擬合直線是橙色的;col='sex'指定以sex變量對數(shù)據(jù)再次分組并繪制在不同列,如圖8所示,sex為Female的數(shù)據(jù)分布繪制在第一列,sex為Male的數(shù)據(jù)分布繪制在第二列。
05熱力圖
熱力圖是將不同的數(shù)據(jù)值用不同的標志加以標注的一種可視化分析手段,標注的手段一般包括顏色的深淺、點的疏密以及呈現(xiàn)比重的形式。在數(shù)據(jù)分析中,如果離散數(shù)據(jù)波動變化比較大,那么可以使用熱力圖來觀察波動變化。
Seaborn提供的heatmap()函數(shù)可以為二維數(shù)據(jù)繪制由顏色編碼矩陣組成的熱力圖,語法格式如下:
- seaborn.heatmap(data, *[, vmin, vmax, cmap, center, …])
主要參數(shù)說明如下:
- data是輸入的二維矩形數(shù)據(jù)集,數(shù)據(jù)類型可以是DataFrame對象或二維ndarray數(shù)組等。
- vmin和vmax指定colormap的值,數(shù)據(jù)類型為float,默認值根據(jù)數(shù)據(jù)或其他關鍵參數(shù)來決定。
- cmap指定數(shù)據(jù)值到顏色空間的映射,數(shù)據(jù)類型可以是Matplotlib colormap名稱或對象、顏色列表等。
- center指定在繪制發(fā)散數(shù)據(jù)時顏色映射的居中值,數(shù)據(jù)類型為float。
下面通過代碼清單6演示如何通過Seaborn繪制熱力圖。
- 代碼清單6 Seaborn繪制熱力圖的示例
- 1 import numpy as np
- 2 import seaborn as sns
- 3 import matplotlib.pyplot as plt
- 4 np.random.seed(0)
- 5 uniform_data = np.random.rand(10, 12)
- 6 sns.heatmap(uniform_data)
- 7 plt.show()
程序執(zhí)行結束后,輸出的圖像如圖9所示。
圖9 seaborn.heatmap()函數(shù)繪制熱力圖示例
下面對代碼清單6中的代碼做簡要說明。
- 第4~5行代碼通過numpy.random.rand函數(shù)隨機生成了10×12的二維數(shù)組uniform_data。
- 第6行代碼通過sns.heatmap()函數(shù)以熱力圖的形式展示uniform_data的數(shù)值變化。
本文摘編于《Python數(shù)據(jù)分析與應用》,經(jīng)出版方授權發(fā)布。