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

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

thumbnail 6

今天的程式碼成果:

profile df

先取得要分析之資料

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

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()
head

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

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

df.describe()
describe 2

2. 酷炫的方法資料分析

首先我們可以安裝 pandas_profiling

pip install pandas_profiling

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

import pandas_profiling
df = crawler(datetime.date(2019,10,7))
df.profile_report()

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

找出資料的缺漏或問題

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

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

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

輕鬆檢視每一個 column 的資料

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

hist 1

檢視資料相關性

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

corr

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

FinLab - 韓承佑

嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會 學術顧問、台北商業大學 創新育成中心 創業技術顧問與上市科技公司 量化交易顧問。當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。我們成立 FinLab 量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。希望可以在量化投資的路上,當大家的「武器製造商」!