【資料分析】資料分析起手式,理解數據並使用python找到資料間的關聯

閱讀時間約 13 分鐘
raw-image

在開始進行資料分析之前,我們可以透過一些方法來衡量各變數之間的線性或非線性關係,以此找出變數之間的關聯強度和方向。

這個過程可以幫助我們:

  • 資料探索:初步分析變數之間的關聯,篩選出重要特徵。
  • 預測建模:幫助選擇相關變數進行建模。
  • 變數篩選:根據相關性篩選出對目標變數有顯著影響的特徵。


# 可使用目錄功能快速確認要閱覽的主題


理解數據

首先,在進行資料專案前,需要對數據集有一個全面的了解,包括特徵的類型和數據分佈。

理解數據能幫助我們在尋找資料間的關聯時,有更多的線索可以參考,或是分辨判斷結果的合理性。

以鐵達尼號存活預測的數據為例:

import pandas as pd
import numpy as np
df = pd.read_csv('https://raw.githubusercontent.com/dsindy/kaggle-titanic/master/data/train.csv')

print(df.describe())
print(df.info())
print(df.isnull().sum())
raw-image
raw-image
raw-image

從上面的資訊,我們大概可以知道我們有哪些欄位,分別紀錄著哪些資料,包括特徵的類型和數據分佈,數據的摘要統計信息,以及它們的缺失值狀況。

針對缺失值的處理可以參考:

【資料分析】python資料處理-缺失值處理基礎操作語法彙整


df.describe() 的輸出

df.describe() 默認情況下只會計算數值型列的統計信息。輸出的描述性統計信息包括以下幾個指標:

  • count:非空值的數量
  • mean:均值
  • std:標準差
  • min:最小值
  • 25%:第一四分位數(25th percentile)
  • 50%:中位數(50th percentile)
  • 75%:第三四分位數(75th percentile)
  • max:最大值
raw-image

以鐵達尼號的摘要統計信息可以先對資料有初步的理解:

  1. Survived 的基本統計
  • 平均值為0.383838,表示大約 38.4% 的乘客生還。
  1. Pclass(票務等級)有三個不同的值(1、2、3),表示不同的艙等。
  • 平均值為 2.308642,表示大多數乘客在較低等級的艙等。
  1. Age 的範圍從 0.42 到 80。
  • 平均值為 29.699118,標準差為 14.526497,表示乘客年齡的分佈情況。
  1. SibSp(兄弟姐妹/配偶數量)的範圍從 0 到 8。
  • 平均值為 0.523008,標準差為 1.102743,表示大多數乘客沒有或只有少數兄弟姐妹/配偶同船。
  1. Parch(父母/子女人數)的範圍從 0 到 6。
  • 平均值為 0.381594,標準差為 0.806057,表示大多數乘客沒有或只有少數父母/子女同船。
  1. Fare(票價)的範圍從 0 到 512.329200。
  • 平均值為 32.204208,標準差為 49.693429,表示票價的分佈具有較大的變異性。
  1. AgeFare 有較大的標準差,這意味著這些特徵的值範圍較廣,可能需要進一步處理(如標準化或對數變換)。
  2. SibSpParch 具有較多的零值,這可能需要進一步分析它們對目標變數的影響。


利用相關矩陣來確認各變數間的關聯

相關矩陣(Correlation Matrix)是一種用於展示多個變數之間兩兩相關性的表格,相關矩陣有許多用途,以下是一些主要用途的詳細說明。


在資料科學中的用途

  • 1. 資料探索和理解
    • 識別變數之間的關係:相關矩陣可以幫助你快速識別資料集中變數之間的相關性。通過觀察相關矩陣中的值,你可以了解哪些變數之間存在強相關性,這對資料理解非常有幫助。
    • 發現潛在的問題:例如,多重共線性問題(當多個自變數之間存在高度相關性時),可能會影響迴歸模型的穩定性和解釋性。
  • 2. 特徵選擇
    • 篩選重要特徵:在機器學習和統計建模中,相關矩陣可以幫助你篩選出對目標變數影響較大的特徵。你可以選擇與目標變數高度相關的特徵來進行建模。
    • 移除冗餘特徵:當兩個或多個特徵之間存在高度相關性時,可以考慮移除一些冗餘特徵,以減少模型的複雜度。
  • 3. 資料可視化
    • 熱圖(Heatmap):相關矩陣經常與熱圖結合使用,以視覺化展示變數之間的相關性。這樣可以幫助你更直觀地觀察變數之間的關係。
  • 4. 模型評估和診斷
    • 檢查多重共線性:在迴歸分析中,檢查自變數之間的相關性,以發現多重共線性問題。高共線性可能導致回歸係數的不穩定,影響模型的解釋性和預測性能。
    • 選擇適當的變數:根據相關矩陣中的信息,選擇適當的變數來構建更穩定和有效的模型。
  • 5. 時間序列分析
    • 多變量時間序列分析:相關矩陣可以用於多變量時間序列資料的分析,幫助理解不同時間序列之間的相互關係。


使用範例

import seaborn as sns
import matplotlib.pyplot as plt

# 使用皮爾森相關係數來計算相關矩陣
correlation_matrix = df.corr()

# 繪製熱力圖
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.show()
raw-image

correlation_matrix = df.corr() 這段程式碼計算的是數據集中各特徵之間的相關矩陣(correlation matrix),不指定方法時,默認方法為皮爾森相關係數


皮爾森相關係數(Pearson Correlation Coefficient)是一種衡量兩個變數之間線性相關程度的統計指標。它的取值範圍在-1到1之間,其中:

  • 1 表示完全正相關,即一個變數增加,另一個變數也增加。
  • -1 表示完全負相關,即一個變數增加,另一個變數減少。
  • 0 表示沒有線性相關。

由上述例子可以看到,與特徵 'Survived' 最有正相關的特徵是 'Fare'

意即票價越高的乘客,他生存的機率越高,

'Survived' 最有負相關的特徵是 'Sex'

意即女性的生存機率高於男性。


皮爾森相關係數的運作原理可以參考:

皮爾森積動差相關係數


使用範例二

#​ 針對目標變數使用皮爾森相關係數確認所有變數與目標變數的關聯
features = pd.Series(df_analysis.columns)
print(df[features].corrwith(df.Survived).sort_values(ascending=False))

"""
Survived 1.000000
Fare 0.257307
Embarked_C 0.168240
Parch 0.081629
Embarked_Q 0.003650
SibSp -0.035322
Age -0.080453
Embarked_S -0.149683
Pclass -0.338481
Sex -0.543351
dtype: float64
"""


更多相關矩陣方法

import pandas as pd


# 使用皮爾森相關係數(默認)
pearson_corr = df.corr(method='pearson')
print(pearson_corr)

# 使用肯德爾相關係數
kendall_corr = df.corr(method='kendall')
print(kendall_corr)

# 使用斯皮爾曼相關係數
spearman_corr = df.corr(method='spearman')
print(spearman_corr)


  • Pearson(皮爾森)相關係數
    • 計算線性相關性。
    • 取值範圍在 -1 和 1 之間。
    • 默認方法。
  • Kendall(肯德爾)相關係數
    • 計算排序相關性。
    • 取值範圍在 -1 和 1 之間。
    • 適用於非線性但單調的數據。
  • Spearman(斯皮爾曼)相關係數
    • 計算排名相關性。
    • 取值範圍在 -1 和 1 之間。
    • 適用於非線性但單調的數據。


各方法的是用情境

  • 皮爾森相關係數:適用於測量兩個連續變量之間的線性關係。假設數據是正態分佈的。
  • 肯德爾相關係數:適用於測量兩個變量之間的排序一致性,對於樣本量較小且包含許多相同值的數據集效果更好。
  • 斯皮爾曼相關係數:適用於測量兩個變量之間的單調關係,對於數據分佈非正態或存在離群點的數據集更為穩健。


利用相互資訊(MI)來衡量變數之間的依賴程度

互資訊(Mutual Information, MI)是一種用於衡量兩個變數之間的依賴程度的統計量。它來自於資訊理論,用於判斷一個變數對於另一個變數的資訊量,即了解一個變數後可以減少多少不確定性。互資訊在特徵選擇、特徵工程和建模中有廣泛應用。

MI 的值是非負值的,且沒有上限。MI 為 0 表示兩個變數完全獨立,值越大表示依賴性越強。


相互資訊的運作原理可以參考:

相互資訊


在資料科學中的用途

  1. 特徵選擇:相互資訊可以用來選擇與目標變數最相關的特徵,篩選出有助於預測的變數。
    • 在特徵選擇中,將計算得到的互資訊值排序,選擇前幾個最相關的特徵。
  2. 特徵工程:相互資訊可以幫助識別和創建新特徵。
    • 例如,根據互資訊結果,我們可以嘗試創建一些組合特徵來提高模型的表現。
  3. 建模:在構建機器學習模型時,可以使用相互資訊來評估特徵的重要性。
    • 這有助於理解特徵對模型預測的影響,並進一步調整特徵工程和模型參數。


使用範例

import pandas as pd
from sklearn.feature_selection import mutual_info_classif

# 以鐵達尼號資料集為例,取出特徵變數 X 和目標變數 y
X = df.drop('Survived', axis=1)
y = df['Survived']

# 計算互資訊
mi = mutual_info_classif(X, y)

# 將結果轉為 DataFrame 以便查看
mi_df = pd.DataFrame(mi, index=X.columns, columns=['Mutual Information'])
print(mi_df.sort_values(by='Mutual Information', ascending=False))


"""
Mutual Information
Sex 0.136510
Fare 0.125579
Pclass 0.055062
Age 0.044215
Parch 0.021041
Embarked_Q 0.017950
SibSp 0.013410
Embarked_C 0.000000
Embarked_S 0.000000
"""


回歸問題與分類問題

當目標變數是分類變數時,使用mutual_info_classif

當目標變數是連續變數時,使用mutual_info_regression

# 分類問題示例

import pandas as pd
from sklearn.feature_selection import mutual_info_classif

# 假設我們有一個 DataFrame df,包含特徵變數 X 和目標變數 y
X = df.drop('target', axis=1)
y = df['target']

# 計算互資訊
mi = mutual_info_classif(X, y)

# 將結果轉為 DataFrame 以便查看
mi_df = pd.DataFrame(mi, index=X.columns, columns=['Mutual Information'])

print(mi_df.sort_values(by='Mutual Information', ascending=False))
# 回歸問題示例

from sklearn.feature_selection import mutual_info_regression

# 假設我們有一個 DataFrame df,包含特徵變數 X 和連續目標變數 y
X = df.drop('target', axis=1)
y = df['target']

# 計算互資訊
mi = mutual_info_regression(X, y)

# 將結果轉為 DataFrame 以便查看
mi_df = pd.DataFrame(mi, index=X.columns, columns=['Mutual Information'])

print(mi_df.sort_values(by='Mutual Information', ascending=False))


  • 使用 mutual_info_classif
    • 當你的目標變數是分類變數時,使用這個函數。
    • 例如,當你要預測的目標變數是類別標籤(例如"是/否","紅色/藍色/綠色"等),這時候你的目標變數是離散的。
  • 使用 mutual_info_regression
    • 當你的目標變數是連續變數時,使用這個函數。
    • 例如,當你要預測的目標變數是某個數值(例如房價、溫度等),這時候你的目標變數是連續的。
2會員
15內容數
留言0
查看全部
發表第一個留言支持創作者!
JayRay 的沙龍 的其他內容
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
數據分析與解讀 隨著數據的爆炸式增長,能夠分析、解讀和應用數據的能力變得至關重要。這包括熟悉數據分析工具和技術,如統計學、數據挖掘、機器學習等。然而,僅靠短時間的數據分析並不足以提供深入見解。 要熟悉數據分析工具和技術,如統計學、數據挖掘和機器學習,可以從以下幾個方面入手: 基礎知識的學習
2-1 取得統計資料 統計學,指的就是搜集、整理、表現及分析資料的方法。 一般來說,當我們想要知道對於某件事,大眾的普遍想法時,我們可能會透過調查的方式,得到想要的答案。也就是說,我們可能透過問卷或者是電訪的方式,直接收集所要的母體資料。舉個例子來說,在總統選舉時,當侯選人舉辦政見發表會後,為了
Thumbnail
透過簡單的舉例,分享從原始資料到洞察發現的完整過程,包括資料清洗、特徵工程、探索性資料分析,以及如何根據分析結果提出具體建議。
Thumbnail
本文討論如何利用數據來判斷金融盤勢。重點關注非農就業指數(NFP)、採購經理人指數(PMI)、失業率、消費者物價指數(CPI)等相關重要數據,並提供相關數據公佈時間,以及例子操作模式。文章還著重於數據對交易者決策和交易策略的影響。
Thumbnail
數據分析是現代社會的核心技能,適用於各行各業。無論是在市場營銷、財務管理,還是產品開發中,數據分析都扮演著至關重要的角色。提升數據敏感度有助於提高分析的準確性和效率,使我們能夠迅速找到關鍵信息,進而做出明智的決策。本文將探討數據分析訓練方法,提供實用案例,幫助初學者快速掌握數據分析技術。
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
數據分析與解讀 隨著數據的爆炸式增長,能夠分析、解讀和應用數據的能力變得至關重要。這包括熟悉數據分析工具和技術,如統計學、數據挖掘、機器學習等。然而,僅靠短時間的數據分析並不足以提供深入見解。 要熟悉數據分析工具和技術,如統計學、數據挖掘和機器學習,可以從以下幾個方面入手: 基礎知識的學習
2-1 取得統計資料 統計學,指的就是搜集、整理、表現及分析資料的方法。 一般來說,當我們想要知道對於某件事,大眾的普遍想法時,我們可能會透過調查的方式,得到想要的答案。也就是說,我們可能透過問卷或者是電訪的方式,直接收集所要的母體資料。舉個例子來說,在總統選舉時,當侯選人舉辦政見發表會後,為了
Thumbnail
透過簡單的舉例,分享從原始資料到洞察發現的完整過程,包括資料清洗、特徵工程、探索性資料分析,以及如何根據分析結果提出具體建議。
Thumbnail
本文討論如何利用數據來判斷金融盤勢。重點關注非農就業指數(NFP)、採購經理人指數(PMI)、失業率、消費者物價指數(CPI)等相關重要數據,並提供相關數據公佈時間,以及例子操作模式。文章還著重於數據對交易者決策和交易策略的影響。
Thumbnail
數據分析是現代社會的核心技能,適用於各行各業。無論是在市場營銷、財務管理,還是產品開發中,數據分析都扮演著至關重要的角色。提升數據敏感度有助於提高分析的準確性和效率,使我們能夠迅速找到關鍵信息,進而做出明智的決策。本文將探討數據分析訓練方法,提供實用案例,幫助初學者快速掌握數據分析技術。