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

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

更新於 發佈於 閱讀時間約 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
螃蟹_crab的沙龍
138會員
248內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言
avatar-img
留言分享你的想法!
螃蟹_crab的沙龍 的其他內容
生成器表達式是 Python 中一種更簡潔的語法,專門用來創建生成器。它的語法與列表生成式類似,但將列表生成式中的方括號 [] 替換為小括號 ()。生成器表達式與生成器函數類似,具有「惰性評估」的特性,因此它只在需要時才生成元素,從而節省記憶體。 生成器的「惰性評估」(也叫延遲求值)指的是生成器不
包含著日期型資料在許多不同領域的分析中都非常重要,特別是當數據涉及隨時間變化的趨勢、模式或週期時,例如房價,股票價格分析等等。 如何將一個日期欄位改為 DataFrame 的索引,你可以使用 set_index() 方法。 實作範例數據來源 處理步驟 確保日期欄位是 datetime
為了讓資料更適合進行後續的分析、建立模型,模型的決策準確性,資料探索與清理是資料分析過程中非常重要的步驟,主要目的在於確保資料的品質和可靠性。 因為前幾篇的例子中的資料,並沒有缺失值與重複值的部分,我另外找了一份有包含的資料來做案例分析,由於找到的資料沒有重複值的部分,故本文主要解釋處理缺失值的部
生成器表達式是 Python 中一種更簡潔的語法,專門用來創建生成器。它的語法與列表生成式類似,但將列表生成式中的方括號 [] 替換為小括號 ()。生成器表達式與生成器函數類似,具有「惰性評估」的特性,因此它只在需要時才生成元素,從而節省記憶體。 生成器的「惰性評估」(也叫延遲求值)指的是生成器不
包含著日期型資料在許多不同領域的分析中都非常重要,特別是當數據涉及隨時間變化的趨勢、模式或週期時,例如房價,股票價格分析等等。 如何將一個日期欄位改為 DataFrame 的索引,你可以使用 set_index() 方法。 實作範例數據來源 處理步驟 確保日期欄位是 datetime
為了讓資料更適合進行後續的分析、建立模型,模型的決策準確性,資料探索與清理是資料分析過程中非常重要的步驟,主要目的在於確保資料的品質和可靠性。 因為前幾篇的例子中的資料,並沒有缺失值與重複值的部分,我另外找了一份有包含的資料來做案例分析,由於找到的資料沒有重複值的部分,故本文主要解釋處理缺失值的部