作者|Jenny Dcruz
編譯|VK
來源|Towards Datas Science

Seaborn是一個功能強大的Python庫,用于增強資料可視化,它為Matplotlib提供了大量高級介面,Seaborn可以很好地處理資料幀,而Matplotlib則不行,它可以讓你以更簡單的方式繪制引人注目的圖表,
為了更好地理解本文,你需要了解pandas和matplotlib的基礎知識,如果沒有,可以參考以下文章:
-
用Pandas進行資料分析:https://towardsdatascience.com/pandas-for-data-analysis-142be71f63dc
-
使用Matplotlib進行可視化:https://towardsdatascience.com/visualizations-with-matplotlib-4809394ea223
確保系統中安裝了必要的庫:
使用conda:
conda install pandas
conda install matplotlib
conda install seaborn
使用pip:
pip install pandas
pip install matplotlib
pip install seaborn
讓我們首先匯入所需的Python庫和資料集,
你可以在這里找到本教程的CSV檔案:https://github.com/jendcruz22/Medium-articles/tree/master/Plotting charts with Seaborn
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
df = pd.read_csv('Pokemon.csv', index_col = 0, encoding='unicode-escape')
df.head()

在上面的代碼中,我們將index_col設定為0,這表示我們將第一列視為索引,
使用seaborn和Pokemon(口袋妖怪)資料集的屬性,我們將創建一些非常有趣的可視化效果,我們首先要看的是散點圖,
散點圖
散點圖使用點來表示不同數值變數的值,每個點在水平軸和垂直軸上的位置表示單個資料點的值,它們用于觀察變數之間的關系,
在seaborn中制作散點圖只需要使用“lmplot”函式,為此,我們將dataframe傳遞給data引數,然后傳入x和y軸的列名,
默認情況下,散點圖還顯示一潭訓歸線,它是一條最適合資料的直線,
sns.lmplot(x=’Attack’, y=’Defense’, data=https://www.cnblogs.com/panchuangai/archive/2020/10/21/df)
plt.show()

在這里你可以看到我們的散點圖,它顯示了進攻得分與防守得分的比較,
我們的回歸線基本上顯示了兩軸之間的相關性,在這種情況下,它是向上傾斜的,也就是說當進攻得分越來越高,防守得分也會越來越高,要洗掉回歸線,可以將“fitreg”引數設定為false,
此外,我們可以通過設定hue引數來在Pokemon的進化階段著色,這個色調的引數是非常有用的,因為它允許你用顏色來表達第三維度的資訊,
sns.lmplot(x=’Attack’, y=’Defense’, data=https://www.cnblogs.com/panchuangai/archive/2020/10/21/df, fit_reg=False, hue=’Stage’)
plt.show()

散點圖看起來和之前的一樣,除了中間沒有回歸線,而且每個點的顏色也不同,這些顏色只是顯示了每個小精靈的階段,Stage只是我們之前看到的資料中的另一個屬性,
通過這張圖,我們可以得出這樣的結論:在第一階段的pokemon(藍點)通常比在更高階段的pokemon得分更低,
箱線圖
箱線圖是常用于顯示資料分布的重要圖之一,在seaborn中只需要一行代碼就可以使用boxplot函式顯示箱線圖,在本例中,我們將使用除total、stage和legendary屬性之外的整個dataframe,
df_copy = df.drop([‘Total’, ‘Stage’, ‘Legendary’], axis=1)
sns.boxplot(data=https://www.cnblogs.com/panchuangai/archive/2020/10/21/df_copy)

在這里我們可以看到每個屬性都有其各自的箱線圖,
箱線圖基于5個數字摘要,每個摘要以不同的行顯示,中間的線是中值,是資料的中心點,箱線圖末端的最底部和最頂部的線是四分位數1和4的中位數,基本上顯示了分布的最小值和最大值,中間的另外兩條線是四分位數2和3的中位數,它們顯示了值與中位數之間的差異,超出此范圍的單點表示資料中的例外值,
小提琴圖
小提琴圖與箱線圖相似,小提琴圖是箱線圖非常有用的替代品,它們通過小提琴的厚度來顯示分布,而不只是簡要的統計,眾所周知,小提琴圖在分析和可視化資料集中不同屬性的分布時非常方便,
在本例中,我們將使用上一個示例中的相同資料幀副本,
sns.violinplot(data=https://www.cnblogs.com/panchuangai/archive/2020/10/21/df_copy)
plt.show()

我們可以觀察到口袋妖怪每個屬性的值分布,小提琴較厚的區域意味著值的密度更高,小提琴圖的中間部分通常比較厚,這意味著那里的值密度很高,我們比較了下一個口袋妖怪的攻擊型別,為此,讓我們使用相同的小提琴繪圖方法,
plt.figure(figsize=(10,6))\sns.violinplot(x='Type 1', y='Attack', data=https://www.cnblogs.com/panchuangai/archive/2020/10/21/df)
plt.show()

這個圖顯示了每個口袋妖怪的主要型別的攻擊分數分布,如你所見,“龍”型口袋妖怪的攻擊得分最高,但它們也有較高的方差,這意味著它們的攻擊分數也非常低,“Ghost”主型別的方差非常低,這意味著它們的大多數資料值都集中在中心,
熱圖
熱圖幫助你可視化矩陣型別的資料,例如,我們可以將口袋妖怪不同屬性之間的所有關聯可視化,
讓我們通過呼叫“corr”函式來計算資料幀的相關性,并使用“heatmap”函式繪制熱圖,
corr = df_copy.corr()
sns.heatmap(corr)

上面的熱圖顯示了我們資料幀的相關性,
長方體的顏色越淺,這兩個屬性之間的相關性就越高,例如,血量和口袋妖怪的整體速度之間的相關性非常低,因此,盒子的顏色是深色的,HP和防御速度之間的相關性非常高,因此我們可以在熱圖中看到一個紅色方塊,我們可以看到,當一個屬性變高時,其他屬性也會變高,比如防守速度,
直方圖
直方圖允許你繪制數值分布圖,如果我們要使用matplotlib來創建柱狀圖,那么與使用seaborn創建柱狀圖相比,這將需要更多的作業,對于seaborn,只需要一行代碼就可以創建,
例如,我們可以創建一個直方圖來繪制帶有攻擊屬性的分布,
sns.distplot(df.Attack, color=’blue’)

我們可以看到大多數口袋妖怪都在50-100之間,我們可以看到,攻擊值大于100或小于50的口袋妖怪要少得多,
Calplots公司
與條形圖類似,calplots允許你可視化每個類別變數的分布,我們可以使用calplot來查看每種主要型別中有多少口袋妖怪,
sns.countplot(x=’Type 1', data=https://www.cnblogs.com/panchuangai/archive/2020/10/21/df)
plt.xticks(rotation=-45)

我們可以看到,“水”類的口袋妖怪最多,而“仙女”和“冰”類的口袋妖怪最少,
密度圖
密度圖顯示兩個變數之間的分布,例如,我們可以使用密度圖來比較口袋妖怪的兩個屬性:攻擊值、防御值,我們將使用'jointplot'函式來完成此操作,
sns.jointplot(df.Attack, df.Defense, kind=’kde’, color=’lightblue’)

“kde”表示我們需要一個密度圖,
如你所見,繪圖區域在黑暗中的變化取決于區域中的值的數量,黑暗區域預示著一種非常牢固的關系,從這個圖中我們可以看出,當攻擊值在50到75之間時,防御值在50左右,
關于這篇文章,我希望你喜歡用seaborn可視化資料,
你可以在這里找到本文的代碼和資料集:https://github.com/jendcruz22/Medium-articles/tree/master/Plotting charts with Seaborn
感謝你的閱讀!
參考參考
[1] Seaborn檔案:https://seaborn.pydata.org/
原文鏈接:https://towardsdatascience.com/plotting-charts-with-seaborn-e843c7de2287
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184933.html
標籤:其他
上一篇:看看哪里錯了,快崩潰了
