99.19 金融难点通俗解释:营业总收入vs归母净利润vs扣非净利润
目录
- 0. 承前
- 1. 简述:三大收入指标对比
- 2. 比喻:三大指标对比
- 2.1 简单对比
- 2.2 生动比喻
- 2.3 区别要点
- 3. 实际应用
- 3.1 选择建议
- 4. 总结
- 5. 有趣的对比
- 6. 实现代码
0. 承前
如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考:
0. 金融资产组合模型进化全图鉴
1. 简述:三大收入指标对比
- 描述营业总收入含义:小卖部收到的所有钱,一分钱都不能少。
- 描述归母净利润含义:小卖部付完所有支出后能带回家的钱。
- 描述扣非净利润含义:小卖部正常卖货赚到的钱,不算意外之财。
2. 比喻:三大指标对比
2.1 简单对比
- 营业总收入关注"收到多少钱"
小明的小卖部一天:
卖零食:100元
卖饮料:80元
卖文具:70元
营业总收入 = 250元
含义:今天店里总共收到250元
- 归母净利润关注"能带回家多少"
小明的小卖部一天:
收到的钱:250元
减去支出:
- 进货成本:100元
- 店铺租金:30元
- 水电费:20元
归母净利润 = 100元
含义:今天能带回家100元
- 扣非净利润关注"正常赚多少"
小明的小卖部一天:
正常收入:
- 卖货净赚:100元
特殊收入(不算在内):
- 捡到钱:20元
- 红包:50元
扣非净利润 = 100元
含义:今天正常经营赚到100元
2.2 生动比喻
- 营业总收入就像问:
"今天收到多少钱?"
- 所有收到的钱都算
- 像数储蓄罐里的钱
- 还没减任何支出
- 归母净利润就像问:
"今天能带回家多少?"
- 减去所有该付的钱
- 像数完账后的余额
- 这才是真正赚到的
- 扣非净利润就像问:
"今天正常卖货赚多少?"
- 只算卖货的钱
- 不算意外之财
- 反映真实经营能力
2.3 区别要点
- 主要区别
营业总收入:
- 收到的所有钱
- 还没减任何支出
- 像数钱罐里的钱
归母净利润:
- 减去所有支出
- 能带回家的钱
- 像数口袋里的钱
扣非净利润:
- 只算正常卖货
- 不算意外收入
- 像数柜台里的钱
3. 实际应用
3.1 选择建议
看规模用营业总收入:
- 像看店铺有多热闹
- 关注生意大小
- 适合比较店铺规模
看赚钱用归母净利润:
- 像看最后能存多少
- 关注实际收益
- 适合了解赚钱情况
看经营用扣非净利润:
- 像看做生意的本事
- 关注经营能力
- 适合评价经营水平
4. 总结
关注点:
- 营业总收入看"收到多少钱"
- 归母净利润看"能带回多少"
- 扣非净利润看"正常赚多少"
就像小卖部:
- 营业总收入是收银机的数字
- 归母净利润是储蓄罐的数字
- 扣非净利润是账本的数字
5. 有趣的对比
小明的小卖部一天:
营业总收入:300元
- 正常卖货:250元
- 捡到钱:50元
归母净利润:120元
- 减去支出:180元
扣非净利润:70元
- 不算捡到的钱
- 只算正常经营
这就说明:
- 虽然收到300元
- 但真正能带回家120元
- 而正常经营只赚到70元
6. 实现代码
def get_total_revenue(ts_code: str, start_date: str = None, end_date: str = None):
"""
获取上市公司营业总收入数据
参数:
ts_code (str): 股票代码,如 '000001.SZ'
start_date (str): 开始日期,如 '20200101'
end_date (str): 结束日期,如 '20231231'
返回:
DataFrame: 包含营业总收入数据的DataFrame
字段包括:
- ts_code: 股票代码
- ann_date: 公告日期
- end_date: 报告期
- total_revenue_ps: 每股营业总收入
- tr_yoy: 营业总收入同比增长率(%)
"""
try:
# 调用tushare接口获取数据
df = pro.fina_indicator(
ts_code=ts_code,
start_date=start_date,
end_date=end_date,
fields='ts_code,ann_date,end_date,total_revenue_ps,tr_yoy'
)
return df
except Exception as e:
print(f"获取营业总收入数据失败: {str(e)}")
return None
def get_parent_netprofit(ts_code: str, start_date: str = None, end_date: str = None):
"""
获取上市公司归母净利润数据
参数:
ts_code (str): 股票代码,如 '000001.SZ'
start_date (str): 开始日期,如 '20200101'
end_date (str): 结束日期,如 '20231231'
返回:
DataFrame: 包含归母净利润数据的DataFrame
字段包括:
- ts_code: 股票代码
- ann_date: 公告日期
- end_date: 报告期
- netprofit_yoy: 归属母公司股东的净利润同比增长率(%)
"""
try:
# 调用tushare接口获取数据
df = pro.fina_indicator(
ts_code=ts_code,
start_date=start_date,
end_date=end_date,
fields='ts_code,ann_date,end_date,netprofit_yoy'
)
return df
except Exception as e:
print(f"获取归母净利润数据失败: {str(e)}")
return None
def get_deducted_netprofit(ts_code: str, start_date: str = None, end_date: str = None):
"""
获取上市公司扣非净利润数据
参数:
ts_code (str): 股票代码,如 '000001.SZ'
start_date (str): 开始日期,如 '20200101'
end_date (str): 结束日期,如 '20231231'
返回:
DataFrame: 包含扣非净利润数据的DataFrame
字段包括:
- ts_code: 股票代码
- ann_date: 公告日期
- end_date: 报告期
- profit_dedt: 扣除非经常性损益后的净利润
- dt_netprofit_yoy: 归属母公司股东的净利润-扣除非经常损益同比增长率(%)
"""
try:
# 调用tushare接口获取数据
df = pro.fina_indicator(
ts_code=ts_code,
start_date=start_date,
end_date=end_date,
fields='ts_code,ann_date,end_date,profit_dedt,dt_netprofit_yoy'
)
return df
except Exception as e:
print(f"获取扣非净利润数据失败: {str(e)}")
return None