python數據分析中的多種圖形繪制示例(折線圖、柱狀圖、餅狀圖、散點圖、熱力圖)
前言
數據可視化是指利用圖形、表格、圖表等方式將數據展示出來,使得數據更加清晰、易于理解和分析。圖形繪制是數據可視化的基礎,通過繪制各種圖形呈現(xiàn)數據,可以更加直觀地了解數據之間的關系和趨勢。
如果畫圖過程中出現(xiàn)
FutureWaring問題
import warning
warnings.filterwarnings('ignore')
針對中文不顯示
plt.rcParams['font.family'] = ['sans-serif'] plt.rcParams['font.sans-serif'] = ['SimHei']
在當今數字化時代,數據分析已成為各行各業(yè)中不可或缺的一環(huán)。Python,作為數據分析領域的明星語言,憑借其強大的數據處理能力和豐富的庫資源,正逐漸受到越來越多數據分析師的青睞。而在數據分析的過程中,數據可視化作為直觀展示數據特征和規(guī)律的重要手段,更是不可或缺。
Python中,有許多專門用于數據可視化的庫,其中最為著名的莫過于Matplotlib和Seaborn。Matplotlib作為Python中最早的數據可視化庫,提供了豐富的繪圖函數和靈活的配置選項,可以滿足大部分基本的繪圖需求。而Seaborn則是在Matplotlib的基礎上,進一步封裝和優(yōu)化,提供了更加美觀和高級的繪圖接口。
在圖形繪制基礎方面,我們需要掌握幾個核心概念,包括坐標軸、圖例、標題、標簽等。坐標軸是圖表的基礎,用于展示數據的分布情況;圖例用于區(qū)分不同系列的數據;標題和標簽則用于說明圖表的主題和內容。
接下來,我們通過幾個簡單的例子來演示如何使用Matplotlib進行基本的圖形繪制。
我們使用Matplotlib來繪制一個簡單的折線圖。假設我們有一組關于某公司股票價格的數據,我們可以通過折線圖來展示股票價格的走勢。在Matplotlib中,我們可以使用plot()函數來繪制折線圖,通過設置x軸和y軸的數據,以及圖表的標題、坐標軸標簽等參數,就可以生成一個基本的折線圖。
當然,除了折線圖和箱線圖之外,還有許多其他類型的圖形可以用于數據可視化,如柱狀圖、散點圖、餅圖等。每種圖形都有其適用的場景和優(yōu)缺點,需要根據具體的數據特征和需求來選擇合適的圖形類型。
一、圖形繪制基礎
Matplotlib簡介
Matplotlib是目前應用最為廣泛的python擴展繪圖模塊庫,是Python中最受歡迎的數據可視化軟件包之一。Matplotlib支持跨平臺運行,能讓使用者很輕松地將數據轉化為高質量圖形,并且提供了多樣化的輸出格式,常用于繪制2D圖形,同時也提供了一部分3D繪圖接口。
Matplotlib提供了類似于MATLAB的繪圖函數,對于熟悉MATLAB的使用者來說,可以很容易的使用它。Matplotlib通常與NumPy和pandas擴展包一起使用,最常見的使用方式是根據NumPy庫的N維數組類型ndarray來繪制2D圖像,使用簡單、代碼清晰易懂,深受廣大技術愛好者的喜愛,是數據分析中不可或缺的重要工具之一。
使用過程
使用pylab或pyplot繪圖時一般過程為:首先讀入數據,然后根據實際需要繪制折線圖、散點圖、柱狀圖、餅狀圖、雷達圖或三維曲線和曲面,接下來設置軸和圖形屬性,最后顯示或保存繪圖結果。
sin函數示例
【例7.1】請利用python繪制正弦函數曲線。
關鍵技術:采用Matplotlib包Pyplot模塊的plot函數繪制曲線圖。
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import math
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
x = np.arange(0,math.pi*2,0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title("sine curve")
plt.show()


二、常用圖形繪制
折線圖的繪制
折線圖是最基本的圖表類型,是用點和點之間連線的上升或下降表示指標的連續(xù)變化趨勢。折線圖反映了一段時間內事物連續(xù)的動態(tài)變化規(guī)律,適用于描述一個變量隨另一個變量變化的趨勢,通常用于繪制連續(xù)數據,適合數據點較多的情況。
plot
matplotlib是一個用于繪制圖形的Python庫,其中的plot函數用于繪制線條圖。下面是matplotlib中plot函數的詳細解釋:
plot(x, y, label, linestyle, color, linewidth, marker)
參數說明:
x:表示x軸上的數據序列,可以是一個列表、數組或Series類型的數據,也可以是一個數字,此時表示生成從0到該數字的等間隔的數據序列。y:表示y軸上的數據序列,要求與x軸上的數據序列長度相同。label:給繪制的線條指定一個標簽,可以在繪制圖例時使用。linestyle:線條的樣式,可以是實線(‘solid’)、虛線(‘dashed’)、點線(‘dotted’)等,默認為實線。color:線條的顏色,可以是一個關鍵字字符串(如’red’、'blue’等),也可以是一個RGB元組表示的顏色(如(0.1, 0.2, 0.3)),默認為藍色。linewidth:線條的寬度,可以是一個數字,默認為1。marker:線條上的標記點的樣式,可以是一個關鍵字字符串(如’+'、‘o’等),也可以是一個標記字符(如’x’、's’等),默認為沒有標記點。
使用plot函數可以繪制不同樣式的線條圖,可以通過設置不同的參數來定制線條的樣式、顏色、寬度、標記點等。在繪制完所有的線條后,可以使用plt.legend()函數來添加圖例,使得不同線條對應的標簽在圖中顯示出來。
示例
【例7.4】請根據給定的兩組數據x和y,分別代表某城鎮(zhèn)居民消費水平增長率和對應的年份,利用Python繪制城鎮(zhèn)居民消費水平增長率折線圖。
關鍵技術:利用matplotlib包的plot方法進行折線圖的繪制。
y = [8.07,6.42,9.79,8.20,7.69,6.02,7.86,6.93,6.84,9.04,10.06]
x= [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020]
plt.plot(x,y,'g',lw = 4,label = '城鎮(zhèn)居民消費水平增長率')
plt.legend(loc = 5)
plt.grid(True)
plt.xlabel("年")
plt.ylabel('增長率')
plt.title("我國歷年城鎮(zhèn)消費水平增長率")


散點圖的繪制
散點圖是以直角坐標系中各點的密集程度和變化趨勢來表示兩種現(xiàn)象間的相關關系,常用于顯示和比較數值。當要在不考慮時間的情況下比較大量數據點時,使用散點圖比較數據方便直觀。散點圖將序列顯示為一組點,其中每個散點值都由該點在圖表中的坐標位置表示。對于不同類別的點,則由圖表中不同形狀或顏色的標記符表示。同時,也可以設置標記符的顏色或大小。
scatter()
scatter是matplotlib庫中用于繪制散點圖的函數。散點圖是一種用于展示兩個變量之間關系的圖形,其中每個點代表一個數據樣本。
scatter函數可以接受一系列的x和y坐標作為輸入,然后將這些坐標在圖中繪制成散點。
下面是scatter函數的基本用法:
import matplotlib.pyplot as plt # 準備散點的x和y坐標 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 繪制散點圖 plt.scatter(x, y) # 顯示圖形 plt.show()
這段代碼會生成一個簡單的散點圖,其中x坐標為1, 2, 3, 4, 5,y坐標為2, 4, 6, 8, 10。
scatter函數還可以接受一些常用的參數,用于調整散點圖的樣式和外觀,例如:
s:設置散點的大小。可以傳入一個常數,表示所有散點的大?。灰部梢詡魅胍粋€數組,表示每個散點的大小。c:設置散點的顏色??梢詡魅胍粋€常數,表示所有散點的顏色;也可以傳入一個數組,表示每個散點的顏色。marker:設置散點的形狀??梢詡魅胍粋€字符,表示所有散點的形狀;也可以傳入一個數組,表示每個散點的形狀。alpha:設置散點的透明度。
下面是一個示例代碼,展示了如何使用這些參數調整散點圖的樣式:
import matplotlib.pyplot as plt import numpy as np # 生成隨機數據 np.random.seed(0) x = np.random.randn(100) y = np.random.randn(100) # 繪制散點圖,設置散點的大小、顏色和形狀 plt.scatter(x, y, s=50, c='r', marker='o', alpha=0.5) # 顯示圖形 plt.show()
這段代碼會生成一個具有隨機數據的散點圖,散點的大小為50,顏色為紅色,形狀為圓形,透明度為0.5。
除了基本的用法和常用參數,scatter函數還有其他一些參數,用于進一步控制散點圖的樣式和外觀,例如:
edgecolors:設置散點邊緣的顏色。linewidths:設置散點邊緣的寬度。cmap:設置顏色映射,用于根據數值變化為散點著色。norm:設置歸一化器,用于歸一化數值。label:設置散點圖的標簽,用于圖例顯示。
可以參考Matplotlib官方文檔獲取更多關于scatter函數的詳細說明和示例代碼。
示例
【例7.5】對于給定的兩個市場收益率的波動情況數據x和y,請利用Python繪制散點圖來反映兩個市場的波動率情況。
關鍵技術:利用matplotlib包的plot函數進行散點圖的繪制,與繪制折線圖相比,繪制散點圖只用到一組數據,而繪制折線圖需要用到兩組對應的數據。
x = np.random.randint(0,5,10)
y = np.random.randint(0,5,10)
plt.figure(figsize = (10,10))
plt.subplot(121)
plt.ylim((-5,5))
plt.plot(x,'ro',label = '第一組')
plt.grid(True)
plt.title('第一組市場波動情況')
plt.subplot(122)
plt.ylim((-5,5))
plt.plot(y,'b*',label = '第二組')
plt.grid(True)
plt.title('第二組市場波動情況')
plt.savefig('test',dpi = 600)
plt.show()



柱狀圖的繪制
bar
matplotlib的bar函數用于繪制柱狀圖,它是一個非常常用的數據可視化工具。
下面是bar函數的詳細介紹:
語法:
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)
參數:
x:柱狀圖的x軸位置,可以是一個數值或者一個數組,表示每個柱狀圖的位置。height:柱狀圖的高度,可以是一個數值或者一個數組,表示每個柱狀圖的高度。width:柱狀圖的寬度,默認值為0.8。bottom:柱狀圖的底部位置,默認為None,表示從0開始繪制柱狀圖。align:柱狀圖的對齊方式,默認為’center’,表示柱狀圖的中心與給定位置對齊。data:傳入一個DataFrame或者一個類似結構的數據集,x和height參數可以直接從data中獲取。
其他常用參數:
color:柱狀圖的顏色,可以是一個字符串,表示柱狀圖顏色的名稱,也可以是一個列表,表示每個柱狀圖的顏色。edgecolor:柱狀圖的邊框顏色,默認為None,表示不顯示邊框。label:柱狀圖的標簽,可以在圖例中顯示。tick_label:柱狀圖的刻度標簽,可以在x軸上顯示。alpha:柱狀圖的透明度,取值范圍為0到1。
用例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = [1, 4, 3, 2, 5]
plt.bar(x, y, color='blue', align='center')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Bar Chart')
plt.show()
此代碼將繪制一個簡單的柱狀圖,x軸是0到4,y軸是給定的數組y的值。柱狀圖的顏色為藍色,對齊方式為居中。在圖像的x軸標簽、y軸標簽和標題上顯示對應的文字。最后調用plt.show()來顯示圖像。
以上提供了matplotlib的bar函數的詳細介紹和一個簡單的用例。通過使用不同的參數和組合,您可以根據自己的需求繪制出各種類型的柱狀圖。
示例
【例7.7】對于給定的2020年9月至2021年3月期間某基金產品發(fā)行數量的數據,該數據以字典形式存儲,形式如下所示。請利用Python將其以柱狀圖的形式繪制出來。
{'202009': 2324,'202010': 2814,'202011': 2525,'202012':2946,'202101': 3019,'202102': 2087,'202103': 3398}
關鍵技術:可以利用Python的matplotlib包的bar方法進行柱狀圖繪制。
dict = {'202009': 2324,'202010': 2814,'202011': 2525,'202012': 2946,'202101': 3019,'202102': 2087,'202103': 3398}
plt.figure (figsize= (9,5) )
plt.bar (dict.keys (),dict.values (),width=0.3, align='center' , label=' funds')
plt.grid (True)
plt.legend (loc=1)
plt.xlabel ('月')
plt.ylabel('發(fā)行數量')
plt.title('基金產品發(fā)行數量')
plt.savefig ( 'test', dpi=600)


箱型圖繪制
plot.box
plot.box是matplotlib庫中的一個函數,用于繪制箱線圖。箱線圖是一種統(tǒng)計圖表,用于展示一組數據的分布情況。它顯示了數據的中位數、上下四分位數、最小值和最大值,以及異常值。
箱線圖可以幫助我們了解數據的偏態(tài)、離散度和異常值情況。
plot.box的基本語法為:
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True, autorange=False, zorder=None)
參數說明:
x:要繪制箱線圖的數據,可以是一個一維數組或一個二維數組。notch:箱線圖的缺口,默認為None。sym:異常值的標記,默認為None。vert:箱線圖的方向,默認為True(垂直方向),設置為False可以繪制水平方向的箱線圖。whis:決定繪制箱線圖上下邊界的位置,默認為1.5。boxprops:箱線圖的屬性設置,包括顏色、線寬等,默認為None。flierprops:異常值的屬性設置,默認為None。medianprops:中位數的屬性設置,默認為None。meanprops:均值的屬性設置,默認為None。capprops:邊界線的屬性設置,默認為None。whiskerprops:whisker的屬性設置,默認為None。manage_xticks:是否自動管理x軸的刻度,默認為True。autorange:是否自動確定y軸的范圍,默認為False。zorder:圖層順序,默認為None。
除了以上參數,plot.box還可以接受一些其他參數,用于設置標題、坐標軸標簽、圖例等。詳細的參數說明可以參考matplotlib官方文檔。
下面是一個簡單的示例代碼,演示如何使用plot.box繪制箱線圖:
import matplotlib.pyplot as plt
import numpy as np
# 生成一組隨機數據
np.random.seed(123)
data = np.random.normal(0, 1, 100)
# 繪制箱線圖
plt.boxplot(data)
# 添加標題和坐標軸標簽
plt.title('Box Plot')
plt.xlabel('Data')
# 顯示圖形
plt.show()
運行以上代碼,會生成一個簡單的箱線圖,顯示了隨機數據的中位數、上下四分位數、最小值和最大值,以及異常值(如果有)。
除了上述的示例代碼,plot.box還可以接受一維或二維的數據作為參數,用于繪制多組數據的箱線圖??梢酝ㄟ^設置參數來修改箱線圖的樣式,如顏色、線寬等。此外,還可以使用matplotlib的其他函數和方法來進一步自定義繪圖。
示例
【例7.8】下面給定的數據是某公司產品在各個國家用戶的消費分布圖,請根據以下數據利用Python繪制箱型圖。
'Japan': [1200, 1300, 1500, 1400, 1600, 1600, 1800, 1800, 1900, 2400], 'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000], 'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800], "Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]
關鍵技術:可以利用Python的plot.box繪制箱型圖。
data = {'Japan': [1200,1300,1500,1400,1600,1600,1800,1800,1900,2400],
'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000],
'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800],
"Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]}
df = pd.DataFrame(data)
df.plot.box(title = "某公司產品各個國家用戶消費分布圖")
plt.grid(linestyle = '--',alpha = 0.3)
plt.savefig('test',dpi = 600)
plt.show()


餅狀圖的繪制
pie
在matplotlib中,可以使用pie函數繪制餅圖。餅圖用于展示各類別的占比關系,適用于數據的相對比較。下面是使用pie函數繪制餅圖的詳細步驟和參數說明。
導入庫:
import matplotlib.pyplot as plt
準備數據:
labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10]
繪制餅圖:
plt.pie(sizes, labels=labels) plt.show()
繪制餅圖時,主要使用了兩個參數:
sizes:代表各類別的占比值,要求是一個一維數組或列表。labels:代表各類別的標簽,要求是一個與sizes長度相同的一維數組或列表??蛇x參數,默認值為None。
除此之外,還可以使用其他一些參數進行餅圖的個性化設置,比如:
autopct:控制餅圖中百分比的顯示方式??蛇x參數,默認值為None??梢允褂米址袷娇刂骑@示,例如'%.1f%%'表示保留一位小數的百分比。explode:控制各類別之間的間隔。可選參數,默認值為None??梢允褂靡痪S數組或列表來指定各類別的偏移量,例如[0, 0.1, 0, 0]表示第二個類別偏移0.1。colors:控制各類別的顏色??蛇x參數,默認值為None??梢允褂靡痪S數組或列表來指定顏色,例如['red', 'blue', 'green', 'yellow']。startangle:控制餅圖的起始角度,逆時針方向。可選參數,默認值為0。shadow:控制是否顯示陰影??蛇x參數,默認值為False。
下面是一個綜合使用了上述參數的例子:
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
explode = [0, 0.1, 0, 0]
colors = ['red', 'blue', 'green', 'yellow']
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%.1f%%', startangle=90, shadow=True)
plt.axis('equal')
plt.show()
通過調整上述參數,可以根據具體需求繪制出個性化的餅圖。
示例
【例7.9】某公司有A、B、C、D、E五種商品,每種商品占有的市場份額分別為15%、30%、30%、10%和15%,請利用Python的餅狀圖繪制上述數據的分布圖。
關鍵技術:可以利用Python的matplotlib包中的pie函數繪制餅狀圖。
import pandas as pd
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D', 'E']
x = [15,30,30,10,15]
plt.pie(x, labels=labels)
plt.savefig('test',dpi=600)
plt.show ()


三、圖形繪制的組合情況
多個折線圖的組合繪制
示例
【例7.10】給定時間范圍在2009年至2017年間兩種商品的市場銷售價格增長率數據集data1, data2。請利用Python的折線圖將兩種商品價格的增長率信息進行繪制,反映到圖上。
關鍵技術:可以利用matplotlib包的plot函數進行多折線圖的繪制。
data1 = np.random.randint(0,20,9)
data2 = np.random.randint(0,20,9)
year=[2009,2010,2011,2012,2013,2014,2015,2016,2017]
plt.plot(year,data1,lw=3,label='sales price increase rate')
plt.plot(year,data2,'r--',lw=3,label='construction costs increase rate')
plt.legend(loc=0)
plt.grid(True)
plt.xlabel('Year')
plt.ylabel('Percentage')
plt.title('sales price/construction costs increase rates')


折線圖和散點圖的組合繪制
示例
【例7.11】給定某只股票從2021年12月31日到2022年1月11日的收盤價格,請利用Python的折線圖和散點圖組合圖形式進行數據的繪制。
關鍵技術:可以利用Python的plot函數進行繪制。
data = np.random.randint(10,20,7)
date = ['12/31/2021','04/01/2022','05/01/2022','06/01/2022','07/01/2022','10/01/2022','11/01/2022']
plt.figure(figsize=(7,4))
plt.plot(date,data,'b',label='stock xxxxxx')
plt.plot(date,data,'ro')
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('日期')
plt.ylabel('收盤價')
plt.title('close price of stock xxxxx')


柱狀圖與折線圖的組合繪制
示例
【例7.11】 【例7.12】已知給定的某股票在2021年12月14日至2021年12月28日的收盤價格和交易量,請利用Python繪制雙坐標軸圖,其中左坐標軸反映交易量,以柱狀圖表示;右坐標軸反映成交價格,以折線圖表示。
close=[22.23,22.59,22.36,22.47,22.85,22.79,22.76,23.82,23.97,
5.38,25.5]
date=['12/14/2021','12/15/2021','12/16/2021','12/17/2021','12/21/2021',
'12/22/2021','12/23/2021','12/24/2021','12/25/2021','12/26/2021','12/21/2021']
vol=[34711261,35634241,40123423,39043212,45983023,429012,37584231,30029832,4039221,5023281,5598231]
fig,ax1=plt.subplots()
plt.bar(date,vol,width=0.3,label='交易量')
plt.legend(loc=1)
plt.xlabel('日 期')
plt.ylabel('交易量')
plt.title('stock xxxxxx')
plt.xticks(rotation = 60)
ax2=ax1.twinx()
plt.plot(close,'r',lw=2,label='收盤價')
plt.grid(True)
plt.legend(loc=8)
plt.ylabel('收盤價')
plt.savefig('test', dpi=600 , pad_inches='tight')


四、拓展
熱力圖
熱力圖是一種可視化數據的圖表方式,通過不同顏色的區(qū)塊來表示數據的密度或強度。熱力圖通常用于顯示熱點、密度分布或者數據趨勢。
在熱力圖中,顏色的深淺表示數據的強度或頻率,通常深色表示高強度或高頻率,淺色表示低強度或低頻率。通過觀察熱力圖的顏色變化,可以直觀地發(fā)現(xiàn)數據的分布情況或趨勢。
熱力圖可以用于各種領域,例如地理信息系統(tǒng)(GIS)、流量分析、市場研究等。在地理信息系統(tǒng)中,熱力圖可以用來顯示人口密度、空氣質量、交通流量等信息。在流量分析中,熱力圖可以用來顯示用戶活躍度、點擊量等數據。在市場研究中,熱力圖可以用來顯示產品銷售熱點、用戶偏好等信息。
繪制熱力圖可以使用各種工具和編程語言,例如Python的matplotlib庫、R語言的ggplot2包等。這些工具提供了豐富的功能和選項,可以根據具體需求進行定制。
heatmap
seaborn是一個基于matplotlib的數據可視化庫,它提供了許多簡潔而美觀的繪圖函數。seaborn中的heatmap()函數用于繪制熱力圖,熱力圖可以用來可視化矩陣或數據表中數值的大小和分布。
下面是一個使用heatmap()函數繪制熱力圖的示例代碼:
import seaborn as sns
from matplotlib import pyplot as plt
# 創(chuàng)建矩陣或數據表
data = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
# 繪制熱力圖
sns.heatmap(data)
# 顯示圖表
plt.show()

運行代碼后,將會彈出一個窗口顯示繪制的熱力圖。默認情況下,heatmap()函數將根據數據的值自動選擇顏色漸變,并在圖表中顯示顏色條以表示值的大小。你還可以通過設置參數來自定義熱力圖的樣式和屬性,例如調整顏色映射、添加標簽、設置標題等。具體的參數設置可以參考seaborn的官方文檔。
改變數據采樣頻率
resample
在matplotlib中,resample是一個用于改變數據采樣頻率的函數。它可以用于將數據從高頻率采樣轉換為低頻率采樣,或者從低頻率采樣轉換為高頻率采樣。這個函數可以用于處理時間序列數據,通過平均、求和等方式來對數據進行采樣。
resample函數的基本語法如下:
resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, limit=None, kind=None, convention=None)
其中,rule參數用于指定新的采樣頻率,可以是字符串形式的時間間隔,比如’1D’代表每天采樣一次,'1H’代表每小時采樣一次,也可以是整數形式的數字,代表每個指定數量的樣本進行一次采樣。
how參數用于指定進行采樣時使用的聚合函數,比如’mean’代表計算均值,'sum’代表計算總和。axis參數用于指定進行采樣的軸,默認是0,表示對行進行采樣。fill_method參數用于指定進行采樣時缺失數據的填充方式。closed和label參數用于指定進行采樣時邊界的處理方式。limit參數用于指定進行采樣時最大允許的缺失樣本數量。kind參數用于指定進行采樣時的插值方式。convention參數用于指定進行采樣時的約定方式。
示例
下面是一個使用resample函數對時間序列數據進行重新采樣的例子:
import matplotlib.pyplot as plt
import pandas as pd
# 創(chuàng)建一個DataFrame對象,包含時間序列數據
data = pd.DataFrame({'value': [1, 2, 3, 4, 5]}, index=pd.date_range(start='2022-01-01', periods=5, freq='D'))
# 將數據從每天采樣一次轉換為每兩天采樣一次
resampled_data = data.resample('2D').mean()
# 打印結果
print(resampled_data)
執(zhí)行上述代碼,將會得到如下輸出:
value 2022-01-01 1.5 2022-01-03 4.5
這里使用了resample函數將每天采樣一次的數據轉換為每兩天采樣一次的數據,并使用均值方式進行采樣。所以結果中的第一個值為前兩天的數據的均值((1+2)/2=1.5),第二個值為后兩天的數據的均值((4+5)/2=4.5)。
創(chuàng)建多個子圖
subplots()
matplotlib.pyplot.subplots函數是用于創(chuàng)建多個子圖的工具。它返回一個包含所有子圖的Figure對象和一個包含所有子圖軸對象的Axes對象數組。
subplots函數的一般語法如下:
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=None, ...)
參數說明:
nrows:子圖的行數。ncols:子圖的列數。figsize:一個元組,指定圖形的寬度和高度。
例如,如果我們要創(chuàng)建一個包含兩行兩列的子圖,可以這樣做:
import matplotlib.pyplot as plt fig, axes = plt.subplots(nrows=2, ncols=2)
然后,我們可以使用axes數組中的元素來操作每個子圖軸對象。例如,可以使用axes[0, 0]表示第一個子圖的軸對象。
以下是一個完整的示例:
import numpy as np import matplotlib.pyplot as plt # 創(chuàng)建一個包含兩行兩列的子圖 fig, axes = plt.subplots(nrows=2, ncols=2) # 生成一些隨機數據 x = np.linspace(0, 2*np.pi, 100) y1 = np.sin(x) y2 = np.cos(x) y3 = np.tan(x) y4 = np.exp(x) # 在每個子圖中繪制不同的函數 axes[0, 0].plot(x, y1) axes[0, 1].plot(x, y2) axes[1, 0].plot(x, y3) axes[1, 1].plot(x, y4) plt.show()
上述代碼將創(chuàng)建一個2x2的子圖網格,并在每個子圖中繪制不同的函數。
調整子圖之間的間距
subplots_adjust
subplots_adjust是matplotlib中的一個函數,用于調整子圖之間的間距。它可以用于調整子圖布局,使得子圖之間的間距更合適。
函數的語法如下:
matplotlib.pyplot.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
參數說明如下:
left:左邊界的位置。默認為0.125。bottom:底邊界的位置。默認為0.1。right:右邊界的位置。默認為0.9。top:頂邊界的位置。默認為0.9。wspace:子圖之間的寬度間距。默認為0.2。hspace:子圖之間的高度間距。默認為0.2。
調用subplots_adjust函數后,可以通過調整上述參數的值來達到調整子圖布局的效果。
決策樹
plot_tree
plot_tree是scikit-learn庫中DecisionTreeClassifier和DecisionTreeRegressor類的一個方法,用于繪制決策樹模型的樹形圖。
使用plot_tree需要先對DecisionTreeClassifier或DecisionTreeRegressor類進行訓練,然后傳入已經訓練好的模型對象,以及需要繪制的樹形圖的配置參數。
下面是plot_tree的常用參數:
decision_tree:訓練好的決策樹模型對象。feature_names:特征的名稱列表。class_names:類別的名稱列表。filled:是否給節(jié)點填充顏色,默認為False。rounded:是否將節(jié)點的框圓角化,默認為False。special_characters:是否使用特殊字符,默認為False。
使用示例:
from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.tree import plot_tree # 加載數據集 iris = datasets.load_iris() X, y = iris.data, iris.target # 劃分訓練集和測試集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 創(chuàng)建決策樹分類器并訓練 clf = DecisionTreeClassifier() clf.fit(X_train, y_train) # 繪制決策樹模型的樹形圖 plot_tree(clf, filled=True, rounded=True, feature_names=iris.feature_names, class_names=iris.target_names)
上述代碼將會繪制出一個決策樹模型的樹形圖,其中每個節(jié)點代表一個判斷條件,通過樹形圖可以清晰地了解決策樹的結構和特征的重要性。
總結
本文介紹了數據可視化的基礎和Python中常用的Matplotlib和Seaborn庫,通過實例演示了如何使用Matplotlib繪制折線圖、散點圖、柱狀圖、箱線圖和餅狀圖,并展示了如何組合這些圖形。
到此這篇關于python數據分析中的多種圖形繪制示例(折線圖、柱狀圖、餅狀圖、散點圖、熱力圖)的文章就介紹到這了,更多相關python實現(xiàn)多種圖形繪制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python 爬蟲之selenium可視化爬蟲的實現(xiàn)
這篇文章主要介紹了python 爬蟲之selenium可視化爬蟲的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
Python?copy()與deepcopy()方法之間有什么區(qū)別
這篇文章主要介紹了Python中的copy()和deepcopy(),下面詳細介紹該內容并附上詳細代碼,需要的朋友可以參考一下文章的具體內容,希望對你有所幫助2022-10-10
Python使用Matplotlib模塊的pie()函數實現(xiàn)繪制餅形圖
這篇文章主要為大家詳細介紹了 Python 如何使用 Matplotlib 模塊的pie()函數繪制餅形圖,文中有詳細的代碼講解,對大家學習或工作有一定的幫助,感興趣的可以了解一下2023-11-11
Python使用單例模式創(chuàng)建類的實現(xiàn)示例
本文詳細介紹了Python中實現(xiàn)單例模式的多種方式,包括元類、threading.Lock、模塊、importlib、__new__方法和裝飾器等,感興趣的可以了解一下2024-12-12
python飛機大戰(zhàn) pygame游戲創(chuàng)建快速入門詳解
這篇文章主要介紹了python飛機大戰(zhàn) pygame游戲創(chuàng)建,結合實例形式詳細分析了Python使用pygame創(chuàng)建飛機大戰(zhàn)游戲的具體步驟與相關操作注意事項,需要的朋友可以參考下2019-12-12

