使用Seaborn和Pandas進行相關性分析和可視化

2020-12-09 deephub

數據集可以講述很多故事。要想了解這些故事的展開,最好的方法就是從檢查變量之間的相關性開始。在研究數據集時,我首先執行的任務之一是查看哪些變量具有相關性。這讓我更好地理解我正在使用的數據。這也是培養對數據的興趣和建立一些初始問題來嘗試回答的好方法。簡單地說,相關性是非常重要的。

Python的最大好處就庫多,有很多庫已經為我們提供了快速有效地查看相關性所需的工具。讓我們簡要地看看什麼是相關性,以及如何使用熱圖在數據集中找到強相關性。

什麼是相關性?

相關性是一種確定數據集中的兩個變量是否以任何方式關聯的方法。 關聯具有許多實際應用。 我們可以查看使用某些搜索詞是否與youtube上的觀看次數相關。 或者查看廣告是否與銷售相關。 建立機器學習模型時,相關性是確定特徵的重要因素。 這不僅可以幫助我們查看哪些要素是線性相關的,而且如果要素之間的相關性很強,我們可以將其刪除以防止信息重複。

您如何衡量相關性?

在數據科學中,我們可以使用r值,也稱為Pearson的相關係數。 這可測量兩個數字序列(即列,列表,序列等)之間的相關程度。

r值是介於-1和1之間的數字。它告訴我們兩列是正相關,不相關還是負相關。 越接近1,則正相關越強。 接近-1時,負相關性越強(即,列越「相反」)。 越接近0,相關性越弱。

r值公式

讓我們通過一個簡單的數據集進行相關性的可視化

它具有以下列,重量,年齡(以月為單位),乳牙數量和眼睛顏色。眼睛顏色列已分類為1 =藍色,2 =綠色和3 = 棕色。

讓我們使用以上數據繪製3個散點圖。 我們將研究以下3種關係:年齡和體重,年齡和乳牙以及年齡和眼睛的顏色。

年齡和體重

當我們觀察年齡和體重之間的相關性時,圖上的點開始形成一個正斜率。當我們計算r值時,得到0.954491。隨著r值如此接近1,我們可以得出年齡和體重有很強的正相關關係的結論。一般情況下,這應該是正確的。在成長中的孩子中,隨著年齡的增長,他們的體重開始增加。

年齡和乳牙

相反,年齡和乳牙散點圖上的點開始形成一個負斜率。該相關性的r值為-0.958188。這表明了很強的負相關關係。直觀上,這也是有道理的。隨著孩子年齡的增長,他們乳牙會被替換掉。

年齡和眼睛顏色

在上一個散點圖中,我們看到一些點沒有明顯的斜率。該相關性的r值為-0.126163。年齡和眼睛顏色之間沒有顯著的相關性。這也應該說得通,因為眼睛的顏色不應該隨著孩子長大而改變。如果這種關係顯示出很強的相關性,我們會想要檢查數據來找出原因。

使用Python查找相關性

讓我們看看一個更大的數據集,並且使用Python的庫查找相關性。

我們將使用來自於一個Kaggle上關於流媒體平臺上的電影數據集。這個數據集包含哪些電影來自於哪個平臺,它還包括關於每部電影的一些不同的列,如名稱、IMDB分數等。

導入數據和簡單的清洗

我們將首先導入數據集,然後使用PANDAS將其轉換為DataFrame。

import pandas as pdmovies = pd.read_csv("MoviesOnStreamingPlatforms_updated.csv")

Rotten Tomatoes列(爛番茄,國外著名的電影評分網站)是一個字符串,讓我們將數據類型改為浮點數。

movies['Rotten Tomatoes'] = movies['Rotten Tomatoes'].str.replace("%" , "").astype(float)

Type列似乎沒有正確輸入,讓我們刪除它。

movies.drop("Type", inplace=True, axis=1)

好了,現在可以進行我們的工作了!

使用core()方法

使用Pandas correlation方法,我們可以看到DataFrame中所有數字列的相關性。因為這是一個方法,我們所要做的就是在DataFrame上調用它。返回值將是一個新的DataFrame,顯示每個相關性。

corr()方法有一個參數,允許您選擇查找相關係數的方法。默認方法是Pearson方法,但您也可以選擇Kendall或Spearman方法。

correlations = movies.corr()print(correlations)\\ID Year IMDb Rotten Tomatoes Netflix \ID 1.000000 -0.254391 -0.399953 -0.201452 -0.708680 Year -0.254391 1.000000 -0.021181 -0.057137 0.258533 IMDb -0.399953 -0.021181 1.000000 0.616320 0.135105 Rotten Tomatoes -0.201452 -0.057137 0.616320 1.000000 0.017842 Netflix -0.708680 0.258533 0.135105 0.017842 1.000000 Hulu -0.219737 0.098009 0.042191 0.020373 -0.107911 Prime Video 0.554120 -0.253377 -0.163447 -0.049916 -0.757215 Disney+ 0.287011 -0.046819 0.075895 -0.011805 -0.088927 Runtime -0.206003 0.081984 0.088987 0.003791 0.099526Hulu Prime Video Disney+ Runtime ID -0.219737 0.554120 0.287011 -0.206003 Year 0.098009 -0.253377 -0.046819 0.081984 IMDb 0.042191 -0.163447 0.075895 0.088987 Rotten Tomatoes 0.020373 -0.049916 -0.011805 0.003791 Netflix -0.107911 -0.757215 -0.088927 0.099526 Hulu 1.000000 -0.255641 -0.034317 0.033985 Prime Video -0.255641 1.000000 -0.298900 -0.067378 Disney+ -0.034317 -0.298900 1.000000 -0.019976 Runtime 0.033985 -0.067378 -0.019976 1.000000

輸出的列太多,使其難以讀取。這只是9個變量的相關性,結果是一個9x9的網格。你能想像看到20或30個嗎?這將是非常困難的。

輸出

如果我們不調用列印,只是讓Jupyter格式返回。

movies.corr()

我們還可以通過使用列名進行切片來單獨檢查每個變量。

print(correlations["Year"])//ID -0.254391Year 1.000000IMDb -0.021181Rotten Tomatoes -0.057137Netflix 0.258533Hulu 0.098009Prime Video -0.253377Disney+ -0.046819Runtime 0.081984

如果僅查看1個變量的相關性,則它較易讀且足夠。 但是,必須有一種更簡單的方法來查看整個數據集。

使用Seaborn進行可視化

我們可以通過seaborn快速生成熱圖。為什麼使用seaborn?因為seaborn是基於matplotlib開發的並且提供了更多的擴展功能,最主要是的,它比matplotlib漂亮。

#always remember your magic function if using Jupyter%matplotlib inlineimport seaborn as snsimport matplotlib.pyplot as pltsns.heatmap(correlations)plt.show()

我們的發現

現在我們可以快速看到一些相關性。

IMDb和爛番茄之間有很強的正相關性。 以及主要視頻和ID之間的強正相關性。Netflix與Year之間存在輕微的正相關。Netflix與ID,Netflix和Prime Video之間的強烈負相關Year和Prime Video,Disney Plus和Prime Video,Hulu和Prime Video以及Netflix和ID之間存在輕微的負相關。runtime 與任何流平臺之間都沒有關聯Netflix與年份之間沒有關聯有了這些信息,我們可以進行一些觀察。

由於ID與所顯示的兩個平臺之間的正相關和負相關性很強,因此先按順序添加數據,然後依次添加Netflix和Prime Video。 如果我們要用這些數據來構建模型,則最好在將其拆分為測試和訓練數據之前將其打亂。看起來Netflix有較新的電影。 這可能是要探索的假設。與其他流媒體平臺相比,Netflix和亞馬遜似乎擁有最多的獨特電影。 要探索的另一個假設。不同的平臺似乎不會根據評論者的得分來選擇電影。 我們可以探索另一個很酷的假設。在幾秒鐘內,我們就能看到如何輸入數據,並至少可以探索3個想法。

結論

通過使用seaborn的熱圖,我們可以輕鬆地看到最相關的位置。這對於了解一個新的數據集是非常有幫助的

作者:Jeremiah Lutes

deephub翻譯組

相關焦點

  • 使用Seaborn和Pandas進行相關性檢查
    相反,讓我們用一個簡單的數據集來可視化相關性:https://youtu.be/lVOzlHx_15s下面的數據集顯示了七個子數據。它有以下列,體重,年齡(以月為單位),乳牙的數量,和眼睛的顏色。眼睛顏色列已經分類,其中1=藍色,2=綠色,3=棕色。
  • 5個可以幫助pandas進行數據預處理的可視化圖表
    分析數據點的探索性數據分析(EDA)是在算法的數據建模之前制定假設的正確步驟。 在現實生活中,從多個來源收集到的大多數時間數據都有空白值、打字錯誤和其他異常。在進行任何數據分析之前,清除數據是至關重要的。 在本文中,我將討論五個強大的數據可視化選項,它們可以立即提供數據特徵的感覺。即使在正式建模或假設測試任務之前,執行EDA就可以傳達大量關於數據和特徵之間關係的信息。
  • 用 Python 對數據進行相關性分析
    在進行數據分析時,我們所用到的數據往往都不是一維的,而這些數據在分析時難度就增加了不少,因為我們需要考慮維度之間的關係。而這些維度關係的分析就需要用一些方法來進行衡量,相關性分析就是其中一種。本文就用python來解釋一下數據的相關性分析。
  • 基於 seaborn 的相關性熱力圖可視化分析
    本質上是對matplotlib模塊的高級封裝,所以要想使用seaborn的功能,首先需要安裝好matplotlib的基礎環境,現在的安裝方式已經極大地簡化了,只需要pip安裝即可,這裡就不再多說明了。今天主要是想對手裡的一個數據集進行簡單的分析,分析不同屬性特徵之間的相關程度,相關性的計算有很多種方法,比如我最常用的就是基於統計學習裡面的三大指數來進行計算,主要包括:皮爾森係數、肯德爾係數和斯皮爾曼係數。
  • 用數據可視化工具Seaborn繪製圖表
    為了更好地理解本文,你需要了解pandas和matplotlib的基礎知識。如果沒有,可以參考以下文章:用Pandas進行數據分析:https://towardsdatascience.com/pandas-for-data-analysis-142be71f63dc使用Matplotlib進行可視化:https://towardsdatascience.com/visualizations-with-matplotlib-4809394ea223
  • pandas與seaborn可視化對比小案例
    Python網絡爬蟲與文本數據分析
  • 如何用pandas更快地進行數據可視化?
    作者:劉早起來源:早起Python(公眾號)如果你經常使用Python進行數據分析,那麼對於pandas一定不會陌生,但是Pandas除了在數據處理上大放異彩,隨著版本的不斷更新,Pandas的繪圖功能在某些情況下甚至要比matplotlib更加適用,本文就將介紹如何用Pandas更快的進行數據可視化!
  • Python數據可視化—Seaborn
    好啦,話不多說,一起來看看這個強大的數據可視化庫有哪些常用且美觀的可視化操作吧(可視化操作和圖表較多喲,慢慢吸收)~01載入數據我們選擇了一個「預測投票數」的數據集命名為train.csv(小俠客們也可以根據自己的數據集來進行可視化),首先通過pandas讀取csv格式文件,然後查看數據的大致情況。
  • 數據科學 | 可視化神器Seaborn的超全介紹
    作者:Huangwei AI編者按:數據可視化對於數據分析和科研論文的結果分析十分重要。python近年來呈現了許多優秀的可視化庫,最經典的當屬matplotlib。與直接使用matplotlib不同,不需要將變量轉換為可視化的參數(例如,為每個類別使用的特定顏色或標記)。翻譯是由seaborn自動完成的。這讓用戶能夠專注於他們想要圖片回答的問題。replot函數和kind參數沒有通用的最佳數據可視化方法。不同的問題最好通過不同的可視化來回答。
  • Pandas自動進行探索性數據分析,節省可視化和理解數據的時間
    根據Wikipedia的說法,探索性數據分析(EDA)是一種分析數據集以總結其主要特徵的方法,通常使用視覺方法。因此,EDA是理解基礎數據,變量分布及其相關性的過程。這使得EDA成為構建任何統計模型之前任何數據科學過程中的第一步。
  • 輕鬆用 Seaborn 進行數據可視化
    from Unsplash by @rawpixel作者 | Mukul Singh Chauhan譯者 | Lemon出品 | Python數據之道 (ID:PyDataRoad)輕鬆用 Seaborn 進行數據可視化
  • 如何使用Python 和 Pandas讀寫JSON文件
    這樣我們就可以使用Pandas的內置方法來操作數據、進行匯總統計和數據可視化。注意,我們將在本文後面簡要討論這個問題。Pandas讀取 Json示例:在下一個示例中,我們將使用Pandas的 read_json方法來讀取我們前面寫入的JSON文件(即data.json)。這是相當簡單的,我們先將pandas導入為pd:
  • 高效使用 Python 可視化工具 Matplotlib
    基本前提如果你除了本文之外沒有任何基礎,建議用以下幾個步驟學習如何使用matplotlib:學習基本的matplotlib術語,尤其是什麼是圖和坐標軸始終使用面向對象的接口,從一開始就養成使用它的習慣用基礎的pandas繪圖開始你的可視化學習用seaborn進行更複雜的統計可視化用matplotlib來定製
  • Python Seaborn綜合指南,成為數據可視化專家
    你曾經在R中使用過ggplot2庫嗎?它是任何工具或語言中最好的可視化包之一。Seaborn給了我同樣的感覺。Seaborn是一個構建在matplotlib之上的一個非常完美的Python可視化庫。它使我們能夠創建放大的數據視覺效果。這有助於我們理解數據,通過在可視上下文中顯示數據來發現變量或趨勢之間的任何隱藏相關性,而這些相關性最初可能並不明顯。
  • 長文乾貨|數據可視化必備Python Seaborn綜合指南,一文搞定可視化!
    Seaborn是一個構建在matplotlib之上的一個非常完美的Python可視化庫。它使我們能夠創建放大的數據視覺效果。這有助於我們理解數據,通過在可視上下文中顯示數據來發現變量或趨勢之間的任何隱藏相關性,而這些相關性最初可能並不明顯。與Matplotlib的低級接口相比,Seaborn具有高級接口。為什麼應該使用Seaborn而不是matplotlib?
  • 十分鐘掌握Seaborn,進階Python數據可視化分析
    即便是沒有什麼基礎的人,也能通過極簡的代碼,做出具有分析價值而又十分美觀的圖形。Seaborn 可以實現 Python 環境下的絕大部分探索性分析的任務,圖形化的表達幫助你對數據進行分析,而且對 Python 的其他庫(比如 Numpy/Pandas/Scipy)有很好的支持。
  • 如何使用Pandas-Profiling進行探索性數據分析
    我們可以通過執行探索性數據分析(EDA)來實現這一點。這包括找出每個變量的數據類型、目標變量的分布、每個預測變量的不同值的數量、數據集中是否有重複值或缺失值等。進行EDA探索機器學習數據集的過程往往是非常耗時的。什麼是Pandas-Profiling?Pandas-profiling是一個開源Python庫,它只需一行代碼即可為任何機器學習數據集生成漂亮的交互式報告。
  • 使用Python和Jupyter Notebook進行數據分析
    一位友人說,「我用Python,Jupyter notebook和Python相應的庫(numpy, matplotlib,seaborn和pandas等)做數據分析工作,非常有效,也很便利」。在本教程中,您將在使用Python和pandas探索數據集時學習一些簡單的數據分析過程。在我們開始之前,請確保您已經為這個實踐設置了環境。請安裝Python 3.6、pandas和matplotlib。此外,我們將在本教程中使用一個Jupyter Notebook。
  • 【Python教程】用Python進行數據可視化
    在本文中,我將介紹如何開始使用Python和matplotlib、seaborn兩個庫對數據進行可視化。通過上面的例子,我們應該可以感受到利用可視化能多麼美麗的展示數據。而且和其它語言相比,使用 Python 進行可視化更容易簡便一些。
  • 百川歸海,四類圖統攬統計圖:Seaborn|可視化系列03
    seaborn可視化的寫法和matplotlib基本相同。seaborn可視化效果圖seaborn對pandas數據結構的支持非常好,能充分利用DataFrame的特點而不需要做格式轉換。別期待著只用seaborn繪製出各種常用圖表,它更專注於展示統計數據裡的信息,因此,我們換個角度,從數據本身的分布和數據列之間的關係來看可視化。seaborn[1]沒有直接枚舉各種圖的接口,而是抽象為了四種relplot、regplot、catplot及distplot,分別對應:數據關聯、回歸、分類變量和數據分布。