Python+Seaborn繪制分佈圖的示例詳解
前言
在本文中,我們將介紹10個示例,以掌握如何使用用於Python的Seaborn庫創建圖表。
任何數據產品的第一步都應該是理解原始數據。對於成功和高效的產品,這一步驟占據瞭整個工作流程的很大一部分。
有幾種方法用於理解和探索數據。其中之一是創建數據可視化。它們幫助我們探索和解釋數據。
通過創建適當和設計良好的可視化,我們可以發現數據中的底層結構和關系。
分佈區在數據分析中起著至關重要的作用。它們幫助我們檢測異常值和偏態,或獲得集中趨勢(平均值、中值和模態)度量的概述。
對於示例,我們將使用Kaggle上可用的墨爾本住房數據集中的一個小樣本。
我們從導入庫並將數據集讀入Pandas數據幀開始。
import pandas as pd import seaborn as sns sns.set(style="darkgrid", font_scale=1.2) df = pd.read_csv( "/content/melb_housing.csv", usecols=["Regionname", "Type", "Rooms", "Distance", "Price"] ) df.head()
該數據集包含瞭墨爾本房屋的一些特征及其價格。
Seaborn的離散函數允許創建3種不同類型的分佈區,分別是:
- 柱狀圖
- Kde(核密度估計)圖
- Ecdf圖
我們隻需要調整kind參數來選擇plot的類型。
示例 1
第一個例子是創建一個基本直方圖。它將連續變量的取值范圍劃分為離散的箱子,並顯示每個箱子中有多少個值。
sns.displot( data=df, x="Price", kind="hist", aspect=1.4 )
我們將df的名稱傳遞給數據參數。參數x接受要繪制的列名。aspect參數調整大小的寬高比。它也可以改變高度。
示例 2
在第一個例子中,我們可以清楚地看到價格欄中有一些異常值。柱狀圖在右邊有一條長尾,這表明價格非常高的房子很少。
減少這種異常值影響的一種方法是對值取對數。displot函數可以使用log_scale參數執行此操作。
sns.displot( data=df, x="Price", kind="hist", aspect=1.4, log_scale=10 )
價格以10的冪表示。現在我們對房價的分佈有瞭一個更好的概述。
示例 3
我們還可以調整直方圖中的箱數量。在某些情況下,最好使用較少的箱數量,這樣我們就可以得到一個更結構化的概述。
用於此調整的參數是box。
sns.displot( data=df, x="Price", kind="hist", aspect=1.4, log_scale=10, bins=20 )
示例 4
數據集還包含分類變量。例如,類型列有3個類別,分別是h(房屋)、t(聯排房屋)和u(單位)。我們可能需要分別檢查每款的分佈情況。
一種選擇是在相同的可視化中用不同的顏色顯示它們。我們隻需要將列的名稱傳遞給hue參數。
sns.displot( data=df, x="Price", hue="Type", kind="hist", aspect=1.4, log_scale=10, bins=20 )
這個圖為我們提供瞭2條信息:
- 每個類別的大小與房屋的數量有關。h類是最大的一類。
- 每類房屋的價格分佈。
示例 5
另一個檢查每個類別分佈的選項是創建單獨的子圖。我們可以對這個任務使用col或row參數。給定列中的每個類別都有一個子圖。
sns.displot( data=df, x="Price", col="Type", kind="hist", aspect=1.4, log_scale=10, bins=20 )
例子 6
displot函數還允許生成二維直方圖。因此,我們得到瞭關於兩列中值的觀察值(即行)分佈的概述。
我們使用價格和距離列創建一個。我們隻是將列名傳遞給x和y參數。
sns.displot( data=df, x="Price", y="Distance", col="Type", kind="hist", height=5, aspect=1.2, log_scale=(10,0), bins=20 )
較暗的區域密度更大,所以它們包含瞭更多的觀測數據。兩列看起來都是正態分佈,因為密集的區域在中心。
你可能已經註意到,我們使用瞭一個元組作為log_scale參數的參數。因此,我們可以為每個列傳遞不同的比例。
例子 7
Kde圖還可以用於可視化變量的分佈。它們和直方圖很相似。然而,kde圖使用連續的概率密度曲線來表示分佈,而不是使用離散的箱。
kind參數設置為“kde”,以生成kde圖。
sns.displot( data=df, x="Price", kind="kde", aspect=1.4, log_scale=10 )
示例 8
與直方圖類似,可以為不同的類別分別繪制kde圖。我們的數據集包含房屋的區域信息。我們看看不同地區的價格變化。
sns.displot( data=df, x="Price", hue="Regionname", kind="kde", height=6, aspect=1.4, log_scale=10 )
南方大都市區的平均房價似乎最高。
示例 9
另一種檢查變量分佈的方法是使用ecdf圖。它表示低於給定列中每個唯一值的觀察值的比例或計數。
這是一種可視化的累計和。因此,我們能夠看到更密集的值范圍。
sns.displot( data=df, x="Distance", kind="ecdf", height=6, aspect=1.4, stat="count" )
曲線斜率高的值范圍有更多的觀測值。例如,我們沒有很多房子的距離超過30。與此相反,在10到15的距離范圍內有很多房子。
示例10
ecdf圖也支持hue、col和row參數。因此,我們可以在一個列中區分不同類別之間的分佈。
sns.displot( data=df, x="Distance", kind="ecdf", hue="Type", height=6, aspect=1.4, stat="count" )
對於數據分析或機器學習任務,瞭解變量(即特征)的分佈是非常重要的。我們如何處理給定的任務可能取決於分佈。
在這篇文章中,我們看到瞭如何使用Seaborn的displot函數來分析價格和距離欄的分佈。
以上就是Python+Seaborn繪制分佈圖的示例詳解的詳細內容,更多關於Python Seaborn分佈圖的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- python使用seaborn繪圖直方圖displot,密度圖,散點圖
- python散點圖的繪制
- python可視化分析的實現(matplotlib、seaborn、ggplot2)
- Python sns.distplot()方法的使用方法
- Python利用 matplotlib 繪制直方圖