来自现金流量表的财务比率

用 Python 分析财务报表

Rohan Chatterjee

Risk Modeler

读取JSON数据

  • 真实世界的数据不一定来自电子表格
  • 有时是JSON(JavaScript Object Notation)格式
  • 公司可用JSON共享财务报表信息
  • 可用pandasJSON读入Python
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如下所示:

该图显示了现金流量表前几行,"总流动负债"有缺失值,旁有"填补的总流动负债"列,其中缺失值已被填补。

  • 为保守起见,可取分位数
用 Python 分析财务报表

用分位数填补缺失值

  • 用该变量非缺失值中的第70百分位较差值来填补,更为保守。

  • 若比率用于决策,采用更保守的填补计算比率更稳妥。

  • company分组,使用第70百分位填补:
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 分析财务报表

Passons à la pratique !

用 Python 分析财务报表

Preparing Video For Download...