[Python]pandas畫圖來了解資料結構(熱力、分佈、散佈、成對關係圖)

更新於 2024/09/01閱讀時間約 1 分鐘


接續上一篇文章,使用kaggle平台上的數據資料來實作說明。

[Python ]pandas基本操作,查看、新增、修改資料

pandas (pd) 來畫圖了解 MentalHealthSurvey 資料結構,圖表可以幫助你直觀地瞭解 MentalHealthSurvey 資料的結構和變數之間的關係。才有辦法進一步的在去做資料分析。


繪製分佈圖 (Histogram)

hist() 函式用來繪製數值型資料的直方圖,這有助於了解各變數的數值分佈情況。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('F:/python/crab/pandas/MentalHealthSurvey.csv')
df.hist(bins=30, figsize=(15, 10))
plt.show()
  • bins=30: 指定直方圖中分箱的數量,越多的分箱能夠顯示更細節的分佈。
  • figsize=(15, 10): 設定圖表的大小,以便更清晰地查看。
  • plt.show(): 顯示圖表。
資料分佈圖

資料分佈圖


繪製相關矩陣圖 (Correlation Matrix)

heatmap() 函式用於繪製數據的熱力圖,特別是相關矩陣,來顯示變數之間的相關性。

import seaborn as sns
plt.figure(figsize=(12, 8))
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', linewidths=0.5)
plt.show()
  • df.corr(): 計算數據框中各數值型變數之間的相關係數。
  • annot=True: 在每個單元格中顯示相關係數的數值。
  • cmap='coolwarm': 指定顏色地圖,用於更直觀地表示相關性強弱。
  • linewidths=0.5: 設置網格線的寬度。
  • plt.show(): 顯示圖表。

熱力圖(Heatmap)顯示的相關係數用來衡量兩個變數之間的線性關係,相關係數的範圍為 -1 到 1。

  • 相關性最弱是 0:當相關係數為 0 時,表示兩個變數之間沒有線性關係。
  • 負號表示負相關:相關係數為負數時,表示兩個變數之間存在負相關關係,當一個變數增加時,另一個變數傾向於減少。負相關係數越接近 -1,表示負相關性越強。

因此,相關性最弱的情況是相關係數為 0,此時兩個變數之間沒有線性關係。負號並不表示相關性最弱,而是表示相關性方向相反。

斜線切下來的數值1,因為自己跟自己比當然最相關,理所當然是1,可以明白的了解那些變數與那些變數相關性是特別強的,有助於後續的資料分析。

raw-image

繪製散佈圖 (Scatter Plot)

散佈圖用於分析兩個數值型變數之間的關係。

df.plot(kind='scatter', x='variable1', y='variable2', alpha=0.5)
plt.show()
kind='scatter': 指定圖表類型為散佈圖。
  • x='variable1', y='variable2': 指定橫軸和縱軸的變數。
  • alpha=0.5: 設置點的透明度,以避免過度疊加時看不清楚。
  • plt.show(): 顯示圖表。

根據上面的熱力圖,我們來挑選看起來相關性特別強特別弱的來比較看看。

看起來就depressionanxiety相關性最高0.84顏色最深。

df.plot(kind='scatter', x='depression', y='anxiety', alpha=0.5)
plt.show()

幾乎有部分資料都是重疊在一起了。點的分布呈現了一種往上的直線,代表他們有正相關

raw-image

最後挑選與depression相關性較弱的financial_concerns來比較一下。

# 創建顏色映射
colors = plt.cm.viridis(df['depression'] / df['depression'].max())
df.plot(kind='scatter', x='depression', y='financial_concerns', c=colors, alpha=0.5)
plt.show()

這個圖跟上面那張圖相比,就雜亂不堪,看的出來沒有什麼相關性。

raw-image


最後看負相關系數最高的兩個變數

isolationsocial_relationships 有-0.56的關係 ,就看比較深的點,來判斷是否有負關聯。

# 創建顏色映射
colors = plt.cm.viridis(df['isolation'] / df['isolation'].max())

df.plot(kind='scatter', x='isolation', y='social_relationships', c=colors, alpha=0.5)
plt.show()
raw-image


點的分佈模式

  • 如果點分佈呈現出某種模式(例如一條向上的直線),則說明 variable1variable2 之間存在正相關關係。
  • 如果點分佈呈現出一條向下的直線,則說明存在負相關關係。
  • 如果點分佈雜亂無章,沒有明顯的模式,則表示兩者之間可能沒有明顯的線性關係。

繪製成對關係圖 (Pairplot)

pairplot() 用於展示多個數值型變數之間的成對關係,生成一組散佈圖和對角線上的分佈圖。

sns.pairplot(df)
plt.show()
  • sns.pairplot(df): 自動繪製數據框中數值型變數之間的成對關係圖。
  • plt.show(): 顯示圖表。


raw-image

成對關係圖是一個強大的工具,用於視覺化多個變數之間的兩兩關係。它可以幫助你快速了解變數之間的有無關聯性分佈情況以及是否存在異常值或其他模式。這在數據探索和初步分析中非常有用






avatar-img
128會員
209內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
本文主要介紹如何使用pandas來查看、新增、修改資料。 [Python ]pandas讀取寫入CSV 與Excel文件 [Python ]資料分析工具pandas基礎介紹 本文將使用kaggle平台上的數據資料來實作說明。 基本操作 查看資料 df.head():顯示前5行數據。
在 Python 中,可以使用多種方法來去除字串中的空白字元,以下是幾種常見的方法: 固定位置型 使用 strip() 方法 strip() 方法會去除字串前後的空白字元(包括空格、換行、製表符號等)。
有別於正則表達式符號的難以理解,有其他簡單的方式也可以來處理字串的問題。 本文主要介紹其他方法用於處理字串,尋找字串中的關鍵字與其他操作。 [Python]Re正則表達式中常用符號的重點整理 字串方法(String Methods) Python 提供了多種內建的字串方法,可以替代某些簡單
紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。 檢查是否有中文字
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
本文主要介紹如何使用pandas來查看、新增、修改資料。 [Python ]pandas讀取寫入CSV 與Excel文件 [Python ]資料分析工具pandas基礎介紹 本文將使用kaggle平台上的數據資料來實作說明。 基本操作 查看資料 df.head():顯示前5行數據。
在 Python 中,可以使用多種方法來去除字串中的空白字元,以下是幾種常見的方法: 固定位置型 使用 strip() 方法 strip() 方法會去除字串前後的空白字元(包括空格、換行、製表符號等)。
有別於正則表達式符號的難以理解,有其他簡單的方式也可以來處理字串的問題。 本文主要介紹其他方法用於處理字串,尋找字串中的關鍵字與其他操作。 [Python]Re正則表達式中常用符號的重點整理 字串方法(String Methods) Python 提供了多種內建的字串方法,可以替代某些簡單
紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。 檢查是否有中文字
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳student_id為101的這筆資料,並且列出它的"name"和"age"欄位。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ |
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳資料表的前3個Row。 題目的原文敘述 測試範例 Example 1: Input: DataFrame employees +-------------+-----------+-------------
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳student_id為101的這筆資料,並且列出它的"name"和"age"欄位。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ |
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳資料表的前3個Row。 題目的原文敘述 測試範例 Example 1: Input: DataFrame employees +-------------+-----------+-------------