[Python從零到壹] 十七.可視化分析之Matplotlib、Pandas、Echarts入門萬字詳解

      網友投稿 1038 2025-04-04

      前一篇文章講述了數據預處理、Jieba分詞和文本聚類知識,這篇文章主要介紹Matplotlib和Pandas擴展包繪圖的基礎用法,同時引入Echarts技術,該技術主要應用于網站可視化展示中。本文內容以實例為主,給讀者最直觀的圖形感受。兩萬字基礎文章,希望對您有所幫助。


      文章目錄

      一.Matplotlib可視化分析

      1.繪制曲線圖

      2.繪制散點圖

      3.繪制柱狀圖

      4.繪制餅圖

      5.繪制3D圖形

      二.Pandas讀取文件可視化分析

      1.繪制折線對比圖

      2.繪制柱狀圖和直方圖

      3.繪制箱圖

      三.ECharts可視化技術初識

      1.ECharts

      2.簡單示例

      四.總結

      -:

      https://github.com/eastmountyxz/Python-zero2one

      前文賞析:

      第一部分 基礎語法

      [Python從零到壹] 一.為什么我們要學Python及基礎語法詳解

      [Python從零到壹] 二.語法基礎之條件語句、循環語句和函數

      [Python從零到壹] 三.語法基礎之文件操作、CSV文件讀寫及面向對象

      第二部分 網絡爬蟲

      [Python從零到壹] 四.網絡爬蟲之入門基礎及正則表達式抓取博客案例

      [Python從零到壹] 五.網絡爬蟲之BeautifulSoup基礎語法萬字詳解

      [Python從零到壹] 六.網絡爬蟲之BeautifulSoup爬取豆瓣TOP250電影詳解

      [Python從零到壹] 七.網絡爬蟲之Requests爬取豆瓣電影TOP250及CSV存儲

      [Python從零到壹] 八.數據庫之MySQL基礎知識及操作萬字詳解

      [Python從零到壹] 九.網絡爬蟲之Selenium基礎技術萬字詳解

      [Python從零到壹] 十.Selenium爬取在線百科知識萬字詳解(NLP語料構造必備技能)

      第三部分 數據分析+機器學習

      [Python從零到壹] 十一.數據分析之Numpy、Pandas、Matplotlib和Sklearn入門知識萬字詳解

      [Python從零到壹] 十二.機器學習之回歸分析萬字總結

      [Python從零到壹] 十三.機器學習之聚類分析萬字總結全網首發(K-Means、BIRCH、層次聚類、樹狀聚類)

      [Python從零到壹] 十四.機器學習之分類算法五萬字總結全網首發(決策樹、KNN、SVM、分類對比實驗)

      [Python從零到壹] 十五.文本挖掘之數據預處理、Jieba工具和文本聚類萬字詳解

      [Python從零到壹] 十六.文本挖掘之詞云熱點與LDA主題分布分析萬字詳解

      [Python從零到壹] 十七.可視化分析之Matplotlib、Pandas、Echarts入門萬字詳解

      可視化技術是將數據轉換成圖形或圖像呈現在屏幕上,再進行視覺交互。在數據分析中,可視化是非常重要的環節,它通過呈現圖形圖像直觀的體現數據或算法的好壞,給讀者最直觀的視覺信息。

      一.Matplotlib可視化分析

      基礎用法參考前文:

      [Python從零到壹] 十一.數據分析之Numpy、Pandas、Matplotlib和Sklearn入門知識萬字詳解(1)

      1.繪制曲線圖

      首先簡單地繪制三條直線,其斜率分別為0.5、1.5和3.0,完整代碼如下:

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt X = np.arange(0,4) print(X) plt.plot(X, X*0.5, label="y=x*0.5") plt.plot(X, X*1.5, label="y=x*1.5") plt.plot(X, X*3.0, label="y=x*3.0") plt.legend() plt.show()

      輸出如圖所示,其中X為數組[0,1,2,3],X×0.5表示數組元素都乘以0.5,其結果為:[0,0.5,1.0,1.5],同理X×1.5結果為:[0.0,1.5,3.0,4.5]。

      import matplotlib.pyplot as plt

      表示調用Matplotlib子類pyplot繪圖,并as重命名為plt,方便代碼調用。

      plt.plot(X, X0.5, label="y=x0.5")

      表示調用plot()繪圖,參數分別為X坐標、Y坐標和標簽label。

      plt.legend()

      顯示右上角的圖標,每條線對應label的含義。

      plt.show()

      最后調用該函數顯示繪制好的圖形。

      下面將上圖繪制成不同類型的線條。核心修改代碼如下:

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt X = np.arange(0,4) print(X) plt.plot(X, X*0.5, "r-", label="y=x*0.5") plt.plot(X, X*1.5, "y--", label="y=x*1.5") plt.plot(X, X*3.0, "g:", label="y=x*3.0") plt.legend() plt.show()

      其中,"r-"表示紅色直線,"y–"表示黃色虛線,"g:"表示綠色點線,輸出如圖所示。

      但是上圖繪制的圖形有點細,怎么解決呢?設置參數linewidth=2.0即可,參考下面的代碼,Matplotlib繪制sin函數和cos函數曲線。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt X = np.linspace(-np.pi,np.pi,256,endpoint=True) C = np.cos(X) S = np.sin(X) plt.plot(X, C, color="blue", linewidth=2.0, linestyle="-", label="$sin(x)$") plt.plot(X, S, color="red", linewidth=2.0, linestyle="--", label="$cos(x)$") plt.legend() plt.show()

      代碼 np.linspace(-np.pi,np.pi,256,endpoint=True) 表示輸出負π(-np.pi)到正π(np.pi)范圍,然后調用numpy庫的cos()函數和sin()函數計算C值和S值,最后調用plt.plot()繪制直線圖,plot()函數中的參數含義如下:

      X:橫坐標或X坐標值

      C\S:縱坐標或Y坐標值,設置為C值和S值

      color:直線的顏色,blue表示藍色、red報表時紅色,可以簡寫如"r"

      linewidth:繪制線條的粗細程度

      linestyle:設置線條的款式,-表示直線、–表示虛線、:表示點線、-.表示點劃線

      label:設置繪制曲線的標簽

      輸出如圖所示。

      最后,感興趣的同學可以繪制自己喜歡的曲線,下面代碼是繪制浪漫的心形函數(笛卡爾曲線)。Python可視化分析可以應用于更多的曲線繪制,比如在數據擬合、回歸分析、數學分析等領域繪制曲線。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt x = np.linspace(-8 , 8, 1024) y1 = 0.618*np.abs(x) - 0.8* np.sqrt(64-x**2) y2 = 0.618*np.abs(x) + 0.8* np.sqrt(64-x**2) plt.plot(x, y1, color = 'r') plt.plot(x, y2, color = 'r') plt.show()

      輸出如圖所示:

      2.繪制散點圖

      Python調用Matplotlib繪制散點圖有兩種方法,一種是調用scatter()函數實現,另一種方法是調用plot()函數實現,這里主要講述scatter()函數繪制散點圖的方法。從給出的一堆隨機點(包含x、y坐標)中調用scatter()繪制散點圖,代碼如下。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt #構造數據 x = np.random.randn(200) y = np.random.randn(200) print(x[:10]) print(y[:10]) #繪制散點圖 plt.scatter(x, y) plt.show()

      numpy中有一些用來產生隨機數的常用函數,randn()和rand()就屬于其中。

      numpy.random.randn(d0, d1, …, dn):從標準正態分布中返回一個或多個樣本值。

      numpy.random.rand(d0, d1, …, dn):產生隨機樣本,并且數字位于[0, 1]中。

      代碼中產生了200個服從標準正態分布的隨機樣本點,對應x數組和y數組,前10行輸出如下:

      [-0.94086693 -0.92910167 -0.83885859 -0.50927277 2.12230463 0.45695791 -0.59766636 -0.62862962 0.28245908 1.46415206] [ 0.43828148 0.76547797 1.18670217 0.31996158 0.00350372 1.02620566 3.04573837 -0.59712547 0.45061506 -1.63996253]

      產生的200個隨機散點圖如圖所示。

      為了區分點,scatter()提供了參數設置不同點的顏色及大小,其中s參數指定大小,c參數指定顏色,隨機為這200個點分配不同的大小及顏色,代碼如下。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt #構造數據 x = np.random.randn(200) y = np.random.randn(200) print(x[:10]) print(y[:10]) size = 50*np.random.randn(200) colors = np.random.rand(200) #繪制散點圖 plt.scatter(x, y, s=size, c=colors) plt.show()

      輸出如圖所示。

      在進行聚類、分類分析中,通常會將不同類型的數據標識成一組(類標),而對應的可視化操作也是將散點圖繪制成不同的顏色或形狀。下面代碼即是分成三種不同類型的點集。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt #隨機產生90個二維數組 x = np.random.rand(90,2) print(x) #numpy中ones()用來構造全一矩陣 label = list(np.ones(40))+list(2*np.ones(30))+list(3*np.ones(20)) #類標label為1、2、3 label = np.array(label) print(label) print(type(label)) idx1 = np.where(label == 1) idx2 = np.where(label == 2) idx3 = np.where(label == 3) #繪圖 參數:x值、y值、點樣式、顏色、類標、粗細 p1 = plt.scatter(x[idx1,0], x[idx1,1], marker = 'x', color = 'r', label='1', s = 40) p2 = plt.scatter(x[idx2,0], x[idx2,1], marker = '+', color = 'b', label='2', s = 30) p3 = plt.scatter(x[idx3,0], x[idx3,1], marker = 'o', color = 'c', label='3', s = 20) plt.legend(loc = 'upper right') plt.show()

      輸出如圖所示。

      代碼中調用np.random.rand(90,2)函數隨機成才90個二維數組,分別對應90個點,其中x[indx1,0]表示獲取第一維坐標作x軸,x[indx1,1]表示獲取第二維坐標作y軸。然后調用np.ones()函數構造全是1的矩陣,生成的變量label對應90個點的類標,前40個點類標為1、中間30個點類標為2、最后20個點類標為3。最后調用plt.scatter()函數繪制散點圖,即:

      plt.scatter(x[idx1,0], x[idx1,1], marker = ‘x’, color = ‘r’, label=‘1’, s = 40)

      代碼表示繪制類標(label)為1的散點,其他參數包括x值和y值,設置點樣式(marker= ‘x’)為叉形,設置顏色(color = ‘r’)為紅色,粗細為40。

      這部分主要講述了scatter()函數繪制散點圖,后面的聚類和分類分析中也會講解另一種方法plot()繪制散點圖。

      3.繪制柱狀圖

      柱狀圖主要用于直觀的對比統計數據,是常用的一種數學統計圖形。下列代碼是產生四個用戶的隨機月消費數據,然后調用bar()函數繪制圖形。代碼如下:

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import matplotlib.pyplot as plt #隨機產生4個整數(0到100之間) data = np.random.randint(0,100,4) print(data) ind = np.arange(4) #四個用戶 print(ind) width = 0.35 #設置寬度 x = ['UserA', 'UserB', 'UserC', 'UserD'] plt.bar(ind, data, width, color='green', label='Data') plt.xlabel("Username") plt.ylabel("Consumption") plt.title("Compare four user monthly consumption data") plt.legend() plt.xticks(ind+width/2, x, rotation=40) #旋轉40度 plt.show()

      核心代碼詳解如下:

      np.random.randint(0,100,4)

      隨機生成0到100之間的4個隨機數,輸出為[3 66 98 42]。

      plt.bar(ind, data, width, color=‘green’, label=‘Data’)

      調用bar()函數繪制柱狀圖,其中ind表示用戶的序號,0到3共四個用戶;data表示柱狀圖對應的高度或值;width設置柱狀圖之間的間隔寬度,即0.35;最后設置顏色類標。

      plt.xticks(ind+width/2, x, rotation=40)

      設置X軸坐標值的位置和旋轉度數,ind+width/2表示間隔中間的位置顯示標簽,顯示的值為四個用戶名[UserA, UserB, UserC, UserD],并且旋轉40度。

      其他設置標題、X軸、Y軸前面已經敘述,這里不再解釋。最后輸出如圖所示。

      下圖是柱狀圖的擴展版,它是對學習、旅游、看劇、聊天四個選項男女比例的對比。采用np.array()定義數組,然后根據男女比例進行繪圖。完整代碼如下:

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import matplotlib.pyplot as plt import numpy as np num = np.array([1342, 6092, 4237, 8219]) #數量 ratio = np.array([0.75, 0.76, 0.72, 0.75]) #男性占比 men = num * ratio women = num * (1-ratio) x = ['學習',u'旅游',u'看劇',u'聊天'] plt.rc('font', family='SimHei', size=13) #中文字體顯示 width = 0.5 idx = np.arange(4) plt.bar(idx, men, width, color='red', label='男性用戶') plt.bar(idx, women, width, bottom=men, color='yellow', label='女性用戶') plt.xticks(idx+width/2, x, rotation=40) plt.legend() plt.show()

      輸出如圖所示。

      4.繪制餅圖

      繪制餅圖主要調用plt.pie()函數實現,這里僅舉個簡單示例供大家學習,輸出下圖所示。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import matplotlib.pyplot as plt #每一塊占得比例,總和為100 mm = [45, 30, 25] n = mm[0]+mm[1]+mm[2] a = (mm[0]*1.0*100/n) b = (mm[1]*1.0*100/n) c = (mm[2]*1.0*100/n) fracs = [a, b, c] print(a, b, c, n) #離開整體的距離 explode=(0, 0, 0.08) labels = 'A', 'B', 'C' #繪制圖形 plt.pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90, colors = ("c", "r", "y")) plt.show()

      首先計算a、b、c所占mm的比例,輸出值為[45.0, 30.0, 25.0]。接下來:

      調用plt.pie()繪制餅狀圖,參數fracs表示占比;

      explode表示離開整體圓形的距離,比如C離開了0.08的距離;

      labels表示類標;autopct=’%1.1f%%'表示顯示的數據保留一位小數;

      shadow=True表示圖形存在陰影;

      startangle表示開始的角度,默認值為0。

      從此處開始按逆時針方向依次展開顯示A、B、C三個板塊,顏色依次為青色、紅色、黃色。

      5.繪制3D圖形

      Python調用Axes3D子類實現繪制3D圖形,繪制3D坐標代碼如下:

      import matplotlib.pyplot as plt #繪圖用的模塊 from mpl_toolkits.mplot3d import Axes3D #繪制3D坐標的函數 fig1=plt.figure() #創建一個繪圖對象 ax=Axes3D(fig1) #用這個繪圖對象創建一個Axes對象 plt.show() #顯示模塊中所有繪圖對象

      繪制的3D坐標如圖所示。

      更多的3D繪圖方法請讀者下來研究,因為本書主要以數據2D圖形可視化為主,下面的代碼是一個簡單繪制3D圖形的實例,包含詳細注釋。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D # 繪制3D坐標的函數 fig = plt.figure() #創建一個繪圖對象 ax = Axes3D(fig) #用這個繪圖對象創建一個Axes對象 X = np.arange(-2, 2, 0.25) #X軸-2到2之間 Y = np.arange(-2, 2, 0.25) #Y軸-2到2之間 print(Y) X, Y = np.meshgrid(X, Y) #用兩個坐標軸上的點在平面上畫格 R = np.sqrt(X**2 + Y**2) #X和Y的平方和開根號 Z = np.sin(R) #計算sin函數賦值為Z坐標 #具體函數方法可用 help(function) 查看,如:help(ax.plot_surface) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow') #給三個坐標軸注明 ax.set_xlabel('x label', color='r') ax.set_ylabel('y label', color='g') ax.set_zlabel('z label', color='b') plt.show()

      輸出如圖所示。

      二.Pandas讀取文件可視化分析

      year Beijing Shanghai Guiyang Wuhan Changsha 2002 4764 4134 1643 1928 1802 2003 4737 5118 1949 2072 2040 2004 5020.93 5855 1801.68 2516.32 2039.09 2005 6788.09 6842 2168.9 3061.77 2313.73 2006 8279.51 7196 2372.66 3689.64 2644.15 2007 11553.26 8361 2901.63 4664.03 3304.74 2008 12418 8195 3149 4781 3288 2009 13799 12840 3762 5329 3648 2010 17782 14464 4410 5746 4418 2011 16851.95 14603.24 5069.52 7192.9 5862.39 2012 17021.63 14061.37 4846.14 7344.05 6100.87 2013 18553 16420 5025 7717 6292 2014 18833 16787 5608 7951 6116

      1.繪制折線對比圖

      繪制折線對比圖代碼見源文件。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import pandas as pd import matplotlib.pyplot as plt #讀取文件并顯示前6行數據 index_col用作行索引的列名 data = pd.read_csv("data.csv",index_col='year') print(data.shape) print(data.head(6)) plt.rcParams['font.sans-serif'] = ['simHei'] #用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus'] = False #用來正常顯示負號 data.plot() plt.savefig(u'test.png', dpi=500) plt.show()

      輸出如圖所示,最上面藍線為“北京”的房價,接著綠線為“上海”的房價,接下來的三條線從上往下依次為青色線“武漢”房價、紫色線“長沙”房價、“紅色”線長沙房價。

      同時,輸出的前六行數據如下:

      >>> (13, 5) Beijing Shanghai Guiyang Wuhan Changsha year 2002 4764.00 4134.0 1643.00 1928.00 1802.00 2003 4737.00 5118.0 1949.00 2072.00 2040.00 2004 5020.93 5855.0 1801.68 2516.32 2039.09 2005 6788.09 6842.0 2168.90 3061.77 2313.73 2006 8279.51 7196.0 2372.66 3689.64 2644.15 2007 11553.26 8361.0 2901.63 4664.03 3304.74 >>>

      重點知識是:

      調用pandas擴展包的read_csv()函數讀取數據并繪制圖形,其中讀取數據時的index_col參數表示獲取了年份(year)索引,按照年份繪圖。

      plt.rcParams代碼用于設置中文字符和顯示負號。

      savefig(‘test16.png’, dpi=500)函數將在本地存儲一張“test.png”的圖片,像素為500。

      如果讀者想僅僅獲取某一個城市的房價,比如“貴陽”,再繪制成折線圖,如何實現呢?核心代碼如下:

      data = pd.read_csv(“test16.csv”,index_col=‘year’)

      讀取data.csv文件數據,并且獲取其索引為年份(year),即第一列數據,并將讀取的結果賦值給data變量。

      gy = data[‘Guiyang’]

      獲取data數組中“Guiyang”的一列數據,即貴陽的房價數據,并賦值給gy變量。獲取數據的兩種表示方法:data[‘Guiyang’]或data.Guiyang。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("data.csv",index_col='year') plt.rcParams['font.sans-serif'] = ['simHei'] plt.rcParams['axes.unicode_minus'] = False #獲取貴陽數據集并繪圖 gy = data['Guiyang'] print(gy, type(gy)) gy.plot() data['Beijing'].plot(color='r') plt.show()

      下圖為貴陽市商品房價的折線增長圖。

      2.繪制柱狀圖和直方圖

      下面針對貴陽的商品房房價數據集進行柱狀圖繪制,調用Pandas提供的plot()函數。plot()默認是生成曲線圖,可以通過kind參數生成其他類型的圖形,可選值為:line(折線圖)、bar(條圖)、barh(橫向柱狀圖)、kde(密度圖)、density(密度圖)、scatter(散點圖)。完整代碼如下:

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("data.csv", index_col='year') plt.rcParams['font.sans-serif'] = ['simHei'] plt.rcParams['axes.unicode_minus'] = False #在圖表中創建子圖 4個子圖 p1 = plt.subplot(221) data['Beijing'].plot(color='r', kind='bar') plt.sca(p1) p2 = plt.subplot(222) data['Guiyang'].plot(color='y', kind='barh') plt.sca(p2) p3 = plt.subplot(223) data.Shanghai.plot(kind='line') plt.sca(p3) p4 = plt.subplot(224) data['Changsha'].plot(kind='kde') plt.sca(p4) plt.show()

      輸出如下圖所示,需要注意采用plt.subplot(221)函數增加子圖,22表示共4(2*2)個子圖,1表示第一張圖;plt.subplot(223)函數表示繪制第三個子圖。代碼plt.sca(p3)用于增加子圖,最后調用plt.show()函數顯示。

      Pandas的DataFrame提供的plot()函數設置參數繪制不同類型圖形,第一張為北京市房價數據對應的柱狀圖(bar),第二張為貴陽市的橫向柱狀圖(barh),第三張顯示上海市房價數據對應的折線圖,第四張為長沙市的概率密度圖。

      如果想生成累積柱狀圖,則只需指定stacked=True即可,核心代碼:

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("data.csv", index_col='year') data.plot(kind='bar', stacked=True) plt.show()

      輸出如圖所示。從圖中可以對比五個城市2002年到2014年的商品房價信息,并采用不同顏色進行區分。

      如果想對比不同子圖,可以利用參數subplots繪制DataFrame中每個序列對應的子圖。核心代碼如下:

      data.plot(color='y', kind='barh', subplots=True) plt.show()

      輸出如圖所示,對比五個城市的房價信息。

      下面簡單講解繪制直方圖。你或許會疑惑直方圖和柱狀圖有什么區別呢?

      直方圖是用來描述等距數據或等比數據,直觀上,直方圖矩形之間是銜接在一起的,表示數據間的數學關系;柱形圖則留有空隙,表示僅作為兩個或多個不同的類,而不具有數學相關性質。直方圖的Y軸是頻率,柱形圖的Y軸可以是數值。

      直方圖是一種展示數據頻數或頻率的特殊柱狀圖,y 軸是頻數或頻率的度量,既可以是頻數(計數)也可以是頻率(占比)。下面這段代碼是繪制隨機產生的1000個點的直方圖。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import numpy as np import pandas as pd import matplotlib.pyplot as plt data = np.random.normal(5.0, 3.0, 1000) # mean=5.0 rms=3.0 pData = pd.DataFrame(data) print(pData) print(type(pData)) p1 = pData.hist(histtype='stepfilled',bins=30,normed=True) plt.show()

      這里調用pd.DataFrame(data)函數將numpy隨機產生的1000個點數組轉換為DataFrame類型,然后再調用hist()函數繪制直方圖。其中,參數histtype='stepfilled’表示連續顯示,柱狀圖之間沒有間隔線;bins=30表示將區間設置為30,即為直方圖的寬度,默認是10個區間;normed=True表示將直方圖標準化處理。生成圖形如圖所示。

      3.繪制箱圖

      箱圖是一種用于表示分布的圖形,展示數據的分布情況,由五個分位數組成,具體包括上四分位數、下四分位數、中位數以及上下5%的極值。下面是Python調用Pandas擴展包繪制箱圖的源碼。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("data.csv",index_col='year') gy = data['Guiyang'] gy.plot(kind='box') plt.show()

      下圖為繪制的貴陽房價箱圖,同樣可以調用DataFrame的boxplot()函數繪制箱圖。

      講到這里,Python調用Matplotlib和Pandas進行可視化分析的兩種最常用方法已經介紹完畢。Matplotlib作為眾多Python可視化包的鼻祖,其功能是非常強大和復雜的,其他很多工具都是基于Matplotlib的輕量級封裝,比如Pandas、Seaborn等。

      其中,Seaborn是一個基于Matplotlib的可視化庫,旨在使默認的數據可視化更加悅目,簡化復雜圖表的創建,可以與Pandas很好地集成。這里就不再敘述,僅舉一個調用Seaborn擴展包繪制熱點圖的簡單示例,代碼如下。

      # -*- coding: utf-8 -*- #By:Eastmount CSDN import pandas as pd import matplotlib.pyplot as plt import seaborn as sns data = pd.read_csv("data.csv",index_col='year') data = data.corr() sns.heatmap(data) plt.show()

      輸出如圖所示。

      三.ECharts可視化技術初識

      [Python從零到壹] 十七.可視化分析之Matplotlib、Pandas、Echarts入門萬字詳解

      數據可視化是指將結構或非結構數據轉換為可視化的圖表,可視化技術能將數據以更加直觀的形式呈現出來,從而增加數據的說服力及客觀性。本書主要結合Python講解數據分析的可視化技術,包括前面的Matplotlib和Pandas擴展包,而更多的開源圖表庫也能給大家提供美觀、簡潔的圖形,ECharts是經典的一款網站可視化圖標庫。

      1.ECharts

      ECharts是一個純 JavaScript 的圖表庫,能流暢的運行在電腦端和移動設備上,兼容當前絕大部分主流瀏覽器(包括IE8/9/10/11、Chrome、Firefox、Safari等),底層依賴輕量級的 Canvas 類庫 ZRender,提供直觀、生動、可交互和個性化定制的數據可視化圖表。

      ECharts 提供了常規的折線圖、柱狀圖、散點圖、餅圖、K線圖,用于統計的盒形圖,用于地理數據可視化的地圖、熱力圖、線圖,用于關系數據可視化的關系圖、Treemap、多維數據可視化的平行坐標,還有用于 BI 的漏斗圖、儀表盤等,并且支持圖與圖之間的混搭。

      下圖顯示ECharts官網示例,推薦大家從官網進行學習,它提供了詳細的實例及使用文檔。ECarts官網為:

      http://echarts.baidu.com/

      下面通過簡單示例介紹ECharts入門知識,它廣泛應用于網站及可視化項目中。

      2.簡單示例

      1.下載相關文件

      首先,下載最新的echarts.min.js文件,它提供了ECharts多種圖形的支撐庫。-為:http://echarts.baidu.com/download.html,打開網址顯示的下載頁面如圖所示。

      2.Script配置文件

      然后需要在中引入已經下載的echarts.min.js文件,它提供了ECharts多種圖形繪制的支撐庫文件,并調用ECharts圖標庫。核心代碼如下:

      輸出如圖所示,其中X軸分別對應貴州省的幾個城市,包括貴陽市、遵義市、凱里市、六盤水市、都勻市和畢節市,對應代碼為:

      xAxis: {data: [“貴陽市”,“遵義市”,“凱里市”,“六盤水市”,“都勻市”,“畢節市”]}

      Y軸對應這六個城市的某種數據統計值,當鼠標選中某個柱狀圖,則會提示該城市的統計數值,比如凱里市的為36,統計數值對應的代碼為:

      series: [{name: ‘數量’, type: ‘bar’, data: [5, 20, 36, 10, 10, 20] }]

      最后將繪制的圖形顯示在id為“main”的div布局中,如下所示。

      更多圖形繪制推薦大家從官網選擇學習,ECharts技術真的很實用又博大精深,被廣泛應用于網站開發,尤其是對全世界、全國、各省進行地圖數據統計分析時,比如統計全國各省份的GDP值、全省各市州的人口規模等。

      下一篇文章我將詳細介紹PyEcharts基礎知識。

      四.總結

      數據可視化旨在借助于圖形化手段,清晰有效地傳達與溝通信息,它與信息圖形、信息可視化、統計圖形密切相關。Python通過調用可視化分析庫實現圖形繪制,以直觀的形式反映數據的特點或結果的好壞,常用的擴展包包括Matplotlib、Pandas、Seaborn等,同時如果您使用Python開發網站,建議讀者可以結合ECharts技術進行可視化處理,這些可視化分析技術對您的科研結果呈現或項目數據展示都很有幫助。

      該系列所有代碼-:

      https://github.com/eastmountyxz/Python-zero2one

      感謝在求學路上的同行者,不負遇見,勿忘初心。這周的留言感慨~

      感恩能與大家在華為云遇見!祝大家1024程序員節快樂。

      希望能與大家一起在華為云社區共同成長,原文地址:https://blog.csdn.net/Eastmount/article/details/119888324

      (By:娜璋之家 Eastmount 2021-10-24 夜于武漢)

      參考文獻:

      [1] 楊秀璋. 專欄:知識圖譜、web數據挖掘及NLP - CSDN博客[EB/OL]. (2016-09-19)[2017-11-07]. http://blog.csdn.net/column/details/eastmount-kgdmnlp.html.

      [2] matplotlib. Matplotlib官網[EB/OL]. (2002-2017)[2017-11-10]. http://matplotlib.org.

      [3] scikit-learn. Scikit-Learn官網[EB/OL]. (2017)[2017-11-10].http://scikit-learn.org/

      stable/.

      [4] pandas. Pandas官網[EB/OL]. (2017)[2017-11-10]. http://pandas.pydata.org/.

      [5] 張良均,王路,譚立云,蘇劍林. Python數據分析與挖掘實戰[M]. 北京:機械工業出版社,2016.

      [6] (美)Wes McKinney著. 唐學韜等譯. 利用Python進行數據分析[M]. 北京:機械工業出版社,2013.

      [7] 楊秀璋.[Python數據挖掘課程] 六.Numpy、Pandas和Matplotlib包基礎知識[EB/OL] . (2016-11-17)[2017-11-15]. http://blog.csdn.net/eastmount/article/details/53144633.

      [8] 楊秀璋. [Python數據挖掘課程] 七.PCA降維操作及subplot子圖繪制[EB/OL]. (2016-11-26)[2017-11-18]. http://blog.csdn.net/eastmount/article/details/53285192.

      [9] 楊秀璋. [python數據挖掘課程] 十.Pandas、Matplotlib、PCA繪圖實用代碼補充[EB/OL]. (2017-03-07)[2017-11-18]. http://blog.csdn.net/eastmount/article/details/60675865

      [10] powerbaby. 用Pandas作圖[EB/OL]. (2016-02-23)[2017-11-18]. http://www.360doc.com/

      content/16/0223/21/7249274_536782559.shtml.

      [11] Seaborn. Seaborn:statistical data visualization[EB/OL]. (2017)[2017-11-18]. http://seaborn.pydata.org/.

      [12] echarts.Echarts中文官網[EB/OL].(2017)[2017-11-18].http://echarts.baidu.com/index.html.

      [13] 楊秀璋. [Echarts可視化] 二.php和ajax連接數據庫實現動態數據可視化[EB/OL]. (2017-06-02)[2017-11-18]. http://blog.csdn.net/eastmount/article/details/72847067.

      Python 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel2003打印時刪除空白頁的方法
      下一篇:實時立體匹配網絡StereoNet
      相關文章
      激情97综合亚洲色婷婷五| 亚洲国产AV无码一区二区三区| 亚洲日本VA中文字幕久久道具| 亚洲成在人线电影天堂色| 亚洲国产成人片在线观看 | 亚洲伊人色欲综合网| 国产在亚洲线视频观看| 麻豆亚洲AV成人无码久久精品 | 久久亚洲国产中v天仙www| 亚洲日韩aⅴ在线视频| 亚洲精品无码高潮喷水在线| 亚洲精品乱码久久久久久蜜桃不卡 | 国产成人精品日本亚洲18图| 亚洲AV无码乱码麻豆精品国产| 亚洲国产日韩女人aaaaaa毛片在线 | 亚洲精品色午夜无码专区日韩| 亚洲国产精彩中文乱码AV| 久久精品国产亚洲AV果冻传媒| 国产AV无码专区亚洲AV男同 | 亚洲a∨无码精品色午夜| vvvv99日韩精品亚洲| 亚洲国产日韩成人综合天堂| 久久久亚洲精品蜜桃臀| 国产精品亚洲片在线| 亚洲av永久无码精品秋霞电影影院| 久久亚洲免费视频| 亚洲狠狠ady亚洲精品大秀| 亚洲制服在线观看| 亚洲人av高清无码| 亚洲Av无码国产情品久久| 久久久久国产成人精品亚洲午夜| 亚洲欧洲日产国码av系列天堂 | 亚洲麻豆精品国偷自产在线91| 亚洲亚洲人成综合网络| 久久久久亚洲av无码专区蜜芽| 亚洲黄色在线播放| 一本色道久久综合亚洲精品蜜桃冫| 亚洲国产成人久久精品软件| 亚洲精品无码99在线观看| 亚洲AV午夜成人片| 亚洲综合激情另类小说区|