來自現金流量表的財務比率

使用 Python 分析財務報表

Rohan Chatterjee

Risk Modeler

讀取 JSON 資料

  • 現實世界的資料不一定都在試算表裡。
  • 有時會是 JSON(JavaScript 物件標記法)格式。
  • 公司會以 JSON 分享財務報表資訊。
  • 你可以用 pandas 在 Python 中讀取 JSON 檔。
cash_flow = pd.read_json("cash_flow_statement.json")
print(cash_flow.head())

此圖顯示載入的現金流量表資料前 5 列。

使用 Python 分析財務報表

現金流對淨利比

  • 營業活動現金流占淨利的比例

  • 營業活動是企業的核心活動

  • 比率高代表企業多數現金來自營業活動

公式:

$$\dfrac{\text{Cash flow from operating activities}}{\text{Net income}}$$

使用 Python 分析財務報表

營運現金流比率

  • 營業活動現金流占流動負債的比例
  • 衡量公司用核心業務產生的現金,支付短期負債的次數
  • 比率大於 1,表示可產生足夠現金以支付短期負債

公式:

$$\dfrac{\text{Cash flow from operating activities}}{\text{Current liabilities}}$$

使用 Python 分析財務報表

推補遺漏值

  • 「野外」資料常有遺漏值。
  • 有時比率的分子有資料,但分母缺失,或相反。
  • 解法:用其他公司的資料來推補遺漏值。
使用 Python 分析財務報表

推補遺漏值

  • 在名為 dataset 的 DataFrame 中,部分「Total Current Liabilities」缺失,以 NaN 標示。

此圖顯示現金流量表前幾列,其中總流動負債欄有遺漏值。

  • 可用該公司非缺失的數值推補其缺失的流動負債。
使用 Python 分析財務報表

推補遺漏值

  • 我們以各公司非缺失值的平均數來補:
imputation = dataset.groupby("company")["Total Current Liabilities"].transform("mean")

dataset["Imputed Total Current Liabilities"] = dataset["Total Current Liabilities"].fillna(imputation)
  • 推補後,dataset 如下:

此圖顯示現金流量表前幾列,新增「Imputed Total Current Liabilities」欄,已用推補值填入遺漏。

  • 取分位數以保守處理。
使用 Python 分析財務報表

用分位數推補遺漏值

  • 以第 70 百分位中較差的非缺失值來推補,會更保守。

  • 若比率將用於決策,採用較保守的推補計算比率,可能更審慎。

  • 以第 70 百分位推補,並依 company 分組:
imputation = dataset.groupby("company")["Total Current Liabilities"]\
    .transform(lambda x: np.nanquantile(x, 0.7))

dataset["Imputed Total Current Liabilities"] = dataset["Total Current Liabilities"]\
    .fillna(imputation)
使用 Python 分析財務報表

一起來練習吧!

使用 Python 分析財務報表

Preparing Video For Download...