跳至主要內容
FinLab

只用一行程式碼分析數據!?實用的 Python Package pandas_profiling

這篇文章介紹一個好用的 package,只要一行,就可以做出精美、詳細的圖表分析 還可以幫你查看資料是否有缺漏和錯誤的情況!

pandas_profiling 一行程式碼分析數據封面圖

今天的程式碼成果:

pandas_profiling profile_report 產生互動式資料分析報告動畫示範

先取得要分析之資料

今天我們來分析一下股票的本益比、股價淨值比和殖利率, 先提供給大家一個爬蟲,讓大家可以直接把資料爬下來:

顯示程式碼
import datetime
import pandas as pd
import warnings
import requests
from io import StringIO
import pandas_profiling
 
def crawler(date):
    datestr = date.strftime('%Y%m%d')
    url = 'https://www.twse.com.tw/exchangeReport/BWIBBU_d?response=csv&date='+datestr+'&selectType=ALL'
    res = requests.get(url)
    df = pd.read_csv(StringIO(res.text), header=1)
    df['本益比'] = pd.to_numeric(df['本益比'], errors='coerce')
    
    return df.dropna(thresh=3).dropna(thresh=0.8, axis=1)

接下來我們就呼叫 crawler 這個函式,就可以將財務數據資料都爬取下來囉!

顯示程式碼
df = crawler(datetime.date(2019,10,7))
df.head()

爬取台股本益比殖利率股價淨值比資料 df.head() 結果表格

1. 用舊的方法來分析資料

最簡單的方式,假如有用過 pandas 的大家應該都知道, 可以使用 df.describe() 來大致上觀察數據的樣貌 假如你對 pandas 不太熟悉,它有點像是拿來處理表格的資料, 就像是 python 界的 excel 一樣,雖然它非常好用,但是有點太古老(無聊)了!

顯示程式碼
df.describe()

使用 pandas df.describe() 觀察股票數據統計樣貌

2. 酷炫的方法資料分析

首先我們可以安裝 pandas_profiling

顯示程式碼
pip install pandas_profiling

接下來就可以直接來使用:

顯示程式碼
import pandas_profiling
df = crawler(datetime.date(2019,10,7))
df.profile_report()

然後我們就會看到超精美的圖表!

找出資料的缺漏或問題

我覺得 pandas_profiling 很棒的地方在於, 可以將資料一口氣全部統整給我們,方便我們去做資料前處理, 例如下圖中的左下角,就可以看到每一個column有哪些警告,

pandas_profiling 資料總覽報告顯示每個欄位的警告與缺漏

  • 本益比有 20.4 % 是缺漏的:這是正常情況,因為本益比小於零不顯示
  • 殖利率有 20.0 % 是 0:這也是正常情況,因為公司不一定有發股利股息
  • 財報都是用第 2 季的財報:這也是正常的!

有了這種檢驗,更能夠讓我們知道資料的可靠程度,真的非常非常棒! 除了上述的檢驗外,我們還可以

輕鬆檢視每一個 column 的資料

這邊可以看到每一種資料的分佈,可以讓我們更好的掌握數據分佈型態

pandas_profiling 顯示每個欄位資料分佈的直方圖

檢視資料相關性

這邊還可以檢視資料的相關性,這邊有些複雜的名詞,哪天再來跟各位介紹

pandas_profiling 檢視資料欄位之間相關性的熱力圖

pandas_profiling 真的是很不錯的 package, 可以幫我們進一步的認識資料, 假如你也覺得這個 package 很實用, 也歡迎你分享給大家喔!

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始