如何在Pandas DataFrame中计算公司的平均资产回报率(ROAA)
计算平均资产回报率(ROAA)的解决方案
ROAA的核心计算公式为:ROAA = 当期净利润 / 当期与上期总资产的平均值
针对给定的Pandas DataFrame,可通过以下步骤实现计算:
1. 提取核心数据
先分别取出净利润和总资产的序列:
net_income = df.loc['Net Income'] total_asset = df.loc['Total Asset']
2. 计算总资产平均值
利用shift()方法获取上一年的总资产数据,再计算当期与上期的均值:
avg_asset = (total_asset + total_asset.shift(1)) / 2
3. 计算各年度ROAA
用当期净利润除以对应平均总资产,同时剔除2012年的无效值(无上年总资产数据):
roaa = net_income / avg_asset roaa = roaa.dropna()
完整代码示例
import pandas as pd data = {2012: {'Total Asset': 1000000, 'Net Income': 100000}, 2013: {'Total Asset': 2000000, 'Net Income': 300000}, 2014: {'Total Asset': 3000000, 'Net Income': 350000}, 2015: {'Total Asset': 4000000, 'Net Income': 260000}, 2016: {'Total Asset': 3000000, 'Net Income': 300000}} df = pd.DataFrame(data) # 执行ROAA计算 net_income = df.loc['Net Income'] total_asset = df.loc['Total Asset'] avg_asset = (total_asset + total_asset.shift(1)) / 2 roaa = net_income / avg_asset roaa = roaa.dropna() print("各年度ROAA结果:") print(roaa)
运行结果
2013 0.200000 2014 0.140000 2015 0.074286 2016 0.085714 Name: Net Income, dtype: float64
结果对应说明
- 2013年:300000 / [(1000000+2000000)/2] = 20%
- 2014年:350000 / [(2000000+3000000)/2] = 14%
- 后续年度计算逻辑一致,结果完全匹配需求。
内容的提问来源于stack exchange,提问作者Ibashorun Ogunmola
相关产品推荐
相关产品推荐

