7 企业财务健康诊断:趋势分析法
7.1 引言:从静态到动态的财务洞察
各位同学,欢迎来到《商业大数据分析与应用》的财务分析模块。在之前的学习中,我们可能已经接触过如何计算单个时间点的财务比率,例如一家公司在去年年末的流动比率是多少。这种分析方法我们称之为静态分析(Static Analysis)。它就像是为企业拍摄了一张“财务快照”,能够告诉我们企业在特定时点的状况。
然而,商业世界是动态变化的,正如一部电影由无数张连续的胶片组成,企业的经营也是一个连续的过程。仅仅依赖一张“快照”来判断企业的整体健康状况和未来潜力,往往会以偏概全,甚至得出错误的结论。例如,一家公司年末的净利润率很高,这固然是好事,但如果这个数字相比前几年是持续下滑的,那么这张漂亮的“快照”背后可能隐藏着巨大的危机。
因此,本章我们将学习一种更强大、更具洞察力的分析方法——趋势分析(Trend Analysis)。趋势分析的核心思想是将一系列连续的“财务快照”连接起来,形成一部“财务电影”。通过观察各项关键财务指标在过去数年(通常是3-5年)的连续变化,我们可以:
- 识别发展方向:公司的盈利能力是在增强还是减弱?运营效率是在提升还是下降?
- 评估稳定性:公司的业绩是稳定增长,还是大起大落?
- 预测未来表现:基于过去的发展轨迹,对公司未来的表现做出更合理的预期。
在本章中,我们将以中国最具代表性的几家白酒上市公司(如贵州茅台、五粮液、泸州老窖)为案例,运用Python的Matplotlib
库将枯燥的财务数据转化为直观的可视化图表,深入剖析企业在盈利能力、运营能力、偿债能力和成长能力这四个核心维度的动态变化。最后,我们还会学习如何构建一个简单的综合评分模型,对企业的整体财务趋势进行量化评估。
让我们一起从数据出发,学习如何像一位资深的投资分析师那样,洞察数字背后的商业故事。
7.2 盈利能力趋势分析
盈利能力是企业生存和发展的基石,直接关系到股东的投资回报。静态分析告诉我们某一年的盈利水平,但趋势分析则揭示了企业盈利能力的质量和可持续性。一家企业的盈利能力是昙花一现,还是具有持续增长的动力?这正是我们本节要探讨的核心问题。
我们将沿用之前学过的几个关键盈利指标,但这一次,我们的重点不再是计算单个数值,而是通过可视化图表,观察它们在2015年至2019年间的变化轨迹。我们将以白酒行业的领军企业——贵州茅台作为分析范例。
7.2.1 核心盈利指标的可视化
7.2.1.1 毛利率趋势
毛利率(Gross Profit Margin)反映的是企业产品或服务的初始获利空间,其计算公式为: \[ \text{毛利率} = \frac{\text{营业收入} - \text{营业成本}}{\text{营业收入}} \tag{7.1}\]
一个高且稳定的毛利率通常意味着企业拥有强大的品牌议价能力、成本控制能力或核心技术优势。下面我们来看一下贵州茅台的毛利率趋势。
#假设 years 和 data 变量已在环境中定义
= ['2015','2016','2017','2018','2019']
years # data 是一个包含'毛利率'列的DataFrame
'毛利率'],label='毛利率')
plt.plot(years,data[= 'upper right') # 设置图例位置为右上角
plt.legend(loc plt.show()
为了让大家聚焦核心理论,本章前四个“知识点讲解”模块将直接展示从原始PPT材料中提取的核心代码片段和最终输出的图表示例。这些代码片段本身并非一个完整的、可独立运行的程序,它们需要依赖一个预先加载并处理好的数据环境(例如,名为data
的DataFrame)。我们将在每个小节末尾的“实战案例”环节提供包含数据加载、处理和可视化的完整、可运行代码。
下图展示了贵州茅台2015-2019年毛利率的趋势变化:
从 图 fig-moutai-gross-margin 中我们可以观察到,茅台的毛利率维持在极高的水平,但在2017年出现了小幅下降。根据 式 eq-gross-margin,毛利率的下降可能源于营业成本的上升速度超过了营业收入的增长速度,或者是营业收入本身有所下降。这提示我们需要进一步探究成本端或收入端的变化。
7.2.1.2 营业利润率趋势
营业利润率(Operating Profit Margin)在毛利的基础上,进一步扣除了销售费用、管理费用和研发费用(即“三费”),更全面地反映了企业主营业务的盈利能力。
'营业利润率'],label='营业利润率')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc plt.show()
有趣的是,尽管2017年毛利率有所下降,但 图 fig-moutai-op-margin 显示当年的营业利润率反而实现了增长。这背后可能的原因是公司在2017年有效地控制了“三费”的支出,其节约的金额超过了毛利率下降带来的影响。这个发现恰恰说明了单一指标的局限性,以及综合分析多个指标的重要性。
7.2.1.3 净利润率趋势
净利润率(Net Profit Margin)是衡量企业最终盈利能力的终极指标,它在营业利润的基础上考虑了营业外收支、所得税等因素。
'净利润率'],label='净利润率')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc plt.show()
从 图 fig-moutai-net-margin 中可以看出,2017年贵州茅台净利润率的增幅甚至大于营业利润率,这表明所得税等因素对最终利润产生了积极影响。这再次提醒我们,评估企业盈利能力必须进行全面、多层次的考察。
7.2.1.4 净资产收益率 (ROE) 趋势
净资产收益率(Return on Equity, ROE)是杜邦分析的核心,它衡量的是公司利用自有资本(股东权益)为股东创造利润的效率。
'ROE'],label='净资产收益率(ROE)')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc plt.show()
图 fig-moutai-roe 显示,贵州茅台的ROE在2016-2017年间出现了显著的大幅上升,但在2018年略有回调。作为投资者,我们会特别关注ROE的变化,因为它直接关系到我们的投资回报效率。
7.2.2 实战案例:五粮液盈利能力趋势分析
案例背景
五粮液集团有限公司,作为中国另一家享有盛誉的白酒巨头,其品牌历史悠久,产品广受国内外消费者欢迎。对五粮液的盈利能力进行趋势分析,有助于我们深入了解其经营状况和发展潜力,并能与行业标杆贵州茅台进行横向对比,为投资者和企业决策者提供有价值的参考。
本次分析我们将利用五粮液2014-2019.xlsx
财务报表数据,通过编写Python脚本,绘制并分析其2015-2019年间毛利率、营业利润率、净利润率和净资产收益率(ROE)的趋势图。
完整分析代码
以下是生成五粮液盈利能力系列趋势图的完整Python代码。请同学们仔细阅读,理解每一步操作的含义。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
'font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams[#sns.set_style("white")
= pd.read_excel("五粮液2014-2019.xlsx",index_col = 0,sheet_name="财务比率表")
data= data.T
data =True)
data.sort_index(inplace= 0
data[np.isinf(data)]
= ['2015','2016','2017','2018','2019']
years '毛利率'],label='毛利率')
plt.plot(years,data[= 'upper right') # 设置图例位置为右上角
plt.legend(loc "1.png")
plt.savefig(
plt.close()
'营业利润率'],label='营业利润率')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc "2.png")
plt.savefig(
plt.close()
'净利润率'],label='净利润率')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc "3.png")
plt.savefig(
plt.close()
'ROE'],label='净资产收益率(ROE)')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc "4.png")
plt.savefig( plt.close()
- 运行 列表 lst-wly-profitability 代码,观察生成的四张图片(图片将保存在您的代码运行目录下)。
- 对比五粮液与贵州茅台在各项盈利能力指标上的趋势有何异同?
- 尝试解读五粮液各项盈利指标在2015-2019年间发生显著变化的原因可能是什么?(提示:可以结合当年的宏观经济、行业政策、公司重大事件等信息进行分析)
7.3 运营能力趋势分析
运营能力,或称资产管理效率,衡量的是企业利用其拥有的资产来创造销售收入的效率。高效的运营能力意味着企业可以用更少的资产投入带来更多的销售额,是企业核心竞争力的重要体现。随着市场竞争日趋激烈,精细化运营已成为企业提升利润、建立竞争优势的关键。
本节我们将聚焦于三个关键的运营效率指标:存货周转率、总资产周转率和应收账款周转率,并继续以贵州茅台为例,分析其在2015-2019年间的运营效率变化趋势。
7.3.1 核心运营指标的可visua
7.3.1.1 存货周转率趋势
存货周转率(Inventory Turnover)衡量的是企业在一定时期内存货的周转速度,是反映企业存货管理水平和产品销售能力的重要指标。周转率越高,表明存货占用资金的时间越短,存货转化为现金或应收账款的速度越快。
从 图 fig-moutai-inventory-turnover 中,我们可以观察到贵州茅台存货周转率的逐年变化情况。对于高端白酒行业,存货(基酒)具有“越陈越香”的特殊属性,因此其存货周转率的解读需要结合行业特性,不能简单地认为越高越好。
7.3.1.2 总资产周转率趋势
总资产周转率(Total Asset Turnover)综合反映了企业全部资产的经营效率。它表明企业每单位资产能够产生的销售收入。该比率越高,说明企业利用其全部资产进行经营的效率越高。
通过 图 fig-moutai-asset-turnover ,我们可以分析贵州茅台整体资产运用效率的变化。例如,若周转率持续上升,可能意味着公司加大了市场开拓力度,销售额增长速度超过了资产的增长速度。
7.3.1.3 应收账款周转率趋势
应收账款周转率(Accounts Receivable Turnover)衡量企业在一定时期内收回应收账款的速度。较高的周转率通常意味着企业拥有较强的信用管理能力和较短的客户付款周期,资金回笼速度快。其计算公式为: \[ \text{应收账款周转率} = \frac{\text{营业收入}}{\text{平均应收账款}} \tag{7.2}\]
观察 图 fig-moutai-ar-turnover 时,我们可能会发现一个奇特的现象:贵州茅台在2017-2019年的应收账款周转率接近于0。这是一个错误吗?恰恰相反,这是一个非常有价值的商业洞察。
根据公式 式 eq-ar-turnover ,周转率的分母是“平均应收账款”。贵州茅台作为中国高端白酒市场的绝对领导者,其产品供不应求,拥有极强的渠道议价能力。经销商通常需要预付大量现金才能拿到配额,因此茅台几乎不存在“赊账”销售,其资产负债表上的“应收账款”科目金额极小,接近于0。当分母趋近于0时,计算出的周转率理论上是无穷大。在数据处理和可视化时,这种无穷大的值往往因为无法在图表上有效展示而被处理为0。因此,这个“0”值恰恰是茅台强大市场地位和“硬通货”产品属性的财务体现。
7.3.2 实战案例:泸州老窖运营能力趋势分析
案例背景
泸州老窖,作为另一家中国知名的白酒品牌,同样在中国市场占据重要地位并积极拓展海外市场。面对日益激烈的市场竞争,持续提升运营效率是泸州老窖保持竞争优势的关键。通过对其运营能力的趋势分析,我们可以识别其资产管理的成效、潜在问题以及改进方向。
实验要求
我们将使用泸州老窖2014-2019.xlsx
的数据,分析其2015-2019年间的存货周转率、总资产周转率和应收账款周转率。请根据项目背景知识,补全代码并运行分析。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams[
= pd.read_excel("泸州老窖2014-2019.xlsx",index_col = 0,sheet_name="财务比率表")
data
= data.T
data
=True)
data.sort_index(inplace= 0
data[np.isinf(data)]
= ['2015','2016','2017','2018','2019']
years
'存货周转率'],label='存货周转率')
plt.plot(years,data[= 'upper right') # 设置图例位置为右上角
plt.legend(loc "1.png")
plt.savefig(
plt.close()
'总资产周转率'],label='总资产周转率')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc "2.png")
plt.savefig(
plt.close()
'应收账款周转率'],label='应收账款周转率')
plt.plot(years,data[= 'best') # 设置图例位置在最合适的地方
plt.legend(loc "3.png")
plt.savefig( plt.close()
- 运行 列表 lst-lzlj-operational 代码,观察生成的运营能力趋势图。
- 泸州老窖的应收账款周转率与贵州茅台有何显著不同?这可能反映了两者在渠道策略或品牌议价能力上的哪些差异?
- 分析泸州老窖存货周转率和总资产周转率的变化趋势,并尝试解读其背后的商业逻辑。
7.4 偿债能力趋势分析
偿债能力是衡量企业财务安全性的关键维度,它反映了企业偿还到期债务(包括短期和长期债务)的能力。对于投资者、债权人(如银行)以及供应商而言,企业的偿债能力是评估其财务风险的核心指标。一个偿债能力稳健且持续改善的企业,其经营更为安全,也更容易获得外部融资支持。
本节我们将通过趋势分析,考察贵州茅台在2015-2019年间偿债能力的变化情况,重点关注流动比率、速动比率和利息保障倍数这三个关键指标。
7.4.1 核心偿债指标的可视化
7.4.1.1 流动比率趋势
流动比率(Current Ratio)是衡量企业短期偿债能力最常用的指标,它表示企业的流动资产对其流动负债的覆盖程度。一般认为,该比率在2以上较为安全。
通过 图 fig-moutai-current-ratio ,我们可以看到贵州茅台的流动比率远高于2的经验安全线,且呈现出波动上升的趋势,显示其短期偿债风险极低。
7.4.1.2 速动比率趋势
速动比率(Quick Ratio),又称酸性测试比率,是比流动比率更为严格的短期偿债能力指标。它从流动资产中剔除了变现能力较差的存货,更能反映企业立即偿还流动负债的能力。
图 fig-moutai-quick-ratio 同样显示出贵州茅台强大的短期偿债能力。速动比率的趋势与流动比率类似,进一步印证了公司财务状况的稳健性。
7.4.1.3 关于速动比率的精确定义
原始教材中提到速动比率扣除了“预收款项”。这是一个不准确的说法。标准的财务定义中,速动资产 = 流动资产 - 存货。在更严格的定义下,还会扣除“预付账款”和“其他流动资产”中流动性较差的部分。“预收款项”(现在会计准则下称为“合同负债”)属于流动负债,不会在计算速动资产时被扣除。
7.4.1.4 正确理解
速动比率的核心思想是衡量企业在不动用存货的情况下偿还短期债务的能力。对于茅台这类存货(基酒)价值高但变现周期长的企业,速动比率是一个比流动比率更谨慎的衡量指标。
7.4.1.5 利息保障倍数趋势
利息保障倍数(Interest Coverage Ratio)是衡量企业长期偿债能力的指标,它反映了企业息税前利润(EBIT)对债务利息的覆盖程度。倍数越高,说明企业偿付利息的能力越强,长期偿债风险越小。
从 图 fig-moutai-interest-coverage 可见,贵州茅台的利息保障倍数处于极高的水平,表明其盈利能力足以轻松覆盖其利息支出,几乎没有长期偿债风险。
综合解读
综合以上三个指标的趋势分析,我们可以得出结论:贵州茅台的偿债能力在过去五年中一直非常强劲,并且仍在不断增强。这与其卓越的盈利能力、强大的品牌护城河以及稳健的财务政策密切相关。对于投资者而言,这是一个极其正面的信号,意味着投资茅台的财务风险极低。这种从动态趋势中获得的深刻理解,是静态分析无法给予的。
7.4.2 实战案例:五粮液偿债能力趋势分析
案例背景
五粮液作为中国白酒行业的另一巨头,其偿债能力同样是市场关注的焦点。五粮液成立于1949年,总部位于四川宜宾,旗下拥有多个知名白酒品牌。本案例旨在通过趋势分析,深入考察五粮液公司的财务健康状况和风险水平。
实验要求
我们将使用五粮液2014-2019.xlsx
的数据,分析其2015-2019年间的流动比率和速动比率。请根据项目背景知识,补全代码并运行分析。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams[
= pd.read_excel("五粮液2014-2019.xlsx",index_col = 0,sheet_name="财务比率表")
data= data.T
data =True)
data.sort_index(inplace= 0
data[np.isinf(data)]
= ['2015','2016','2017','2018','2019']
years
'流动比率'],label='流动比率')
plt.plot(years,data[= 'upper right') # 设置图例位置为右上角
plt.legend(loc "1.png")
plt.savefig(
plt.close()
'速动比率'],label='速动比率')
plt.plot(years,data[= 'upper left') # 设置图例位置为左上角
plt.legend(loc '2.png') # 保存图片到本地
plt.savefig( plt.close()
- 运行 列表 lst-wly-solvency 代码,观察生成的五粮液偿债能力趋势图。
- 对比分析五粮液与贵州茅台在流动比率和速动比率上的水平及趋势差异。
- 如果一家公司的流动比率很高,但速动比率很低,这通常意味着什么?(提示:思考这两个比率计算上的差异)
7.5 成长能力趋势分析
成长能力是评估企业未来发展潜力的核心维度,它反映了企业在未来一段时间内扩大经营规模、实现盈利增长的能力。高成长性的公司通常能为投资者带来超额回报,因此是投资者和分析师最为关注的方面之一。随着国内消费升级和市场竞争的加剧,企业能否保持持续的成长能力,是其能否在未来立于不败之地的关键。
本节我们将通过分析营业收入增长率、营业利润增长率和净利润增长率这三个核心指标,来评估贵州茅台在2015-2019年间的成长性。
7.5.1 核心成长指标的可视化
7.5.1.1 营业收入增长率趋势
营业收入增长率(Revenue Growth Rate)直接反映了企业市场扩张和产品销售的成果,是衡量企业成长性的首要指标。
通过 图 fig-moutai-rev-growth ,我们可以清晰地看到贵州茅台收入规模的扩张速度变化。例如,2017年出现的大幅增长可能与公司提价或销量显著提升有关,而后续增速放缓则可能预示着市场进入平稳增长阶段或基数效应。
7.5.1.2 营业利润增长率趋势
营业利润增长率(Operating Profit Growth Rate)在收入增长的基础上,反映了企业盈利能力的成长性。一个健康的成长模式应该是利润增长与收入增长同步甚至更快。
观察 图 fig-moutai-op-profit-growth,并与 图 fig-moutai-rev-growth 对比,我们可以分析茅台增长的“含金量”。如果利润增速持续高于收入增速,说明公司的盈利能力在不断增强。
7.5.1.3 净利润增长率趋势
净利润增长率(Net Profit Growth Rate)是衡量企业最终经营成果成长性的指标,直接关系到股东价值的增长。
从 图 fig-moutai-net-profit-growth 中可以看出,贵州茅台的三个核心成长性指标的变化趋势表现出高度的一致性,共同描绘了公司在该时期内强劲的成长轨迹。
7.5.2 实战案例:泸州老窖成长能力趋势分析
案例背景
在白酒市场消费升级和竞争加剧的大背景下,泸州老窖若想在未来保持快速发展的势头,就必须具备持续的成长能力。为了更好地规划未来,公司需要对自己近几年的业绩增长趋势、市场份额变化等信息进行深入分析。这不仅有助于公司了解过去的成长轨迹,更能为其预测未来发展方向、制定相应战略规划提供数据支持。
实验要求
我们将使用泸州老窖2014-2019.xlsx
的数据,分析其2015-2019年间的三个核心成长指标。请根据项目背景知识,补全代码并运行分析。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams[
= pd.read_excel("泸州老窖2014-2019.xlsx",index_col = 0,sheet_name="财务比率表")
data
= data.T
data =True)
data.sort_index(inplace= 0
data[np.isinf(data)]
= ['2015','2016','2017','2018','2019']
years
'营业收入增长率'],label='营业收入增长率')
plt.plot(years,data[= 'upper right') # 设置图例位置为右上角
plt.legend(loc "1.png")
plt.savefig(
plt.close()
'营业利润增长率'],label='营业利润增长率')
plt.plot(years,data[= 'best') # 设置图例位置为最佳位置
plt.legend(loc "2.png")
plt.savefig(
plt.close()
'净利润增长率'],label='净利润增长率')
plt.plot(years,data[= 'best') # 设置图例位置为左上角
plt.legend(loc "3.png")
plt.savefig( plt.close()
- 运行 列表 lst-lzlj-growth 代码,观察并解读泸州老窖的成长能力趋势图。
- 对比泸州老窖的收入增长率和利润增长率,分析其成长的质量如何?
- 结合之前对盈利、运营和偿债能力的分析,你认为泸州老窖在2015-2019年间整体的财务表现如何?
7.6 趋势分析综合评分
经过前面四个小节的学习,我们已经掌握了如何对企业在盈利、运营、偿债和成长四个维度的关键财务指标进行逐一的可视化趋势分析。这种“分项诊断”对于深入理解企业的具体表现至关重要。
然而,在实际的商业决策中,我们常常需要一个更宏观、更综合的结论。例如,在多家公司中筛选投资标的时,我们需要快速判断哪家公司的整体财务趋势最为健康。为了解决这个问题,我们可以尝试构建一个趋势分析综合评分模型。
本节我们将学习一种简单而有效的评分方法,将所有财务指标的变化趋势量化为一个综合得分。实现该方法后,我们不仅可以对单个企业进行打分,还可以将其推广至多家企业,进行批量评分和排序,从而筛选出在财务趋势上表现最优秀的企业。
7.6.1 评分方法论构建
在评估企业财务健康度或成长潜力时,评分标准的设定往往带有一定的主观性。为了帮助大家理解和应用,我们在此探讨一种基于时间序列数据变化趋势的、相对客观的评分策略。
7.6.1.1 核心原则:趋势向好则加分
我们的评分体系基于一个简单的假设:对于绝大多数财务指标,我们都期望其趋势是“越高越好”。例如,更高的毛利率、更快的存货周转率、更强的偿债比率等,通常被视为积极的信号。
需要注意的是,对于流动比率、速动比率这类指标,过高的数值有时并非正面信号,可能暗示着资金利用效率低下。但在我们这个简化的初级模型中,我们暂时忽略这一复杂性,统一假设所有指标均遵循“越高越好”的原则。在更高级的分析中,可以为这类指标设定一个最优区间。
7.6.1.2 评分规则
我们关注的是指标在连续年份的增长情况,以此作为企业健康发展的信号。具体的评分规则如下:
- 比较周期:我们考察过去五年的数据,这意味着有四个年度间的比较期(例如,2022 vs 2021, 2021 vs 2020, …)。因此,每个指标的原始满分为 4 分。
- 计分方法:
- 如果某一年的指标值 高于 前一年,则记 1 分。
- 若持平或下降,则记 0 分。
以贵州茅台的毛利率为例,若数据显示其仅在2021年和2022年实现了同比增长,那么该指标的原始得分就是 1 + 1 = 2 分。
7.6.1.3 分数标准化
为了便于比较和直观理解,在完成所有指标的原始评分后,我们将分数统一转换到100分制。转换公式为: \[ \text{标准化得分} = \frac{\text{原始得分}}{\text{满分(4分)}} \times 100 \]
例如,一个原始评分为2分的指标,其标准化得分就是 (2 / 4) * 100 = 50 分。
最终,我们可以计算所有指标的平均分,得到该企业财务趋势的综合评分。
7.6.2 实战案例:贵州茅台财务趋势综合评分
案例背景
现在,我们将运用上述评分方法论,以贵州茅台2018-2023年的财务数据为例,对其进行一次完整的趋势分析综合评分。
实验任务
你需要补全以下Python代码,以实现对贵州茅台的财务趋势评分。具体要求如下:
- 数据清洗1 (重命名): 使用
rename()
函数,将读取的df_ratio
数据框中名为Unnamed: 0
的列重命名为报告期
。 - 数据清洗2 (设置索引): 使用
set_index()
方法,将报告期
列设置为df_ratio
数据框的行索引。 - 核心评分逻辑: 在嵌套循环的
elif
部分,补充判断逻辑:当前单元格的值 > 下一个单元格的值
。 - 计算总分: 使用Pandas的
mean()
函数计算所有指标“评分”的平均值,并使用round()
函数将结果四舍五入至小数点后两位。
完整分析代码
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
'font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams[
# 读取财务比率表数据
= pd.read_excel('贵州茅台2018-2023.xlsx',sheet_name = '财务比率表')
df_ratio # 要求1: 将'Unnamed: 0'列重命名为'报告期'
= df_ratio.rename(columns={'Unnamed: 0': '报告期'})
df_ratio # 要求2: 将'报告期'列设为索引
= df_ratio.set_index('报告期')
df_ratio # 转置报表,使年份为行,指标为列
= df_ratio.T
data
# 进行评分
= []
scores # 遍历每一个指标(即data的每一列)
for i in range(len(data.T)):
= 0
n # 遍历每一行,与下一行比较(不含最后一行)
for j in range(len(data)-1):
# 处理无穷大值的情况,视为趋势向好
if np.isinf(data.iloc[j,i]) == True:
= n+1
n # 要求3: 核心评分逻辑,如果当年指标大于下一年(在转置前是后一年),则加分
elif data.iloc[j,i]>data.iloc[j+1,i]:
= n+1
n # 分数标准化为100分
= n/4 * 100
n
scores.append(n)
# 创建评分结果表
= data.T
score_sheet '评分'] = scores
score_sheet[
# 保存评分结果到Excel
'贵州茅台_趋势评分表.xlsx')
score_sheet.to_excel(# 要求4: 计算并打印综合平均分
= round(score_sheet['评分'].mean(),2)
trend_score print(trend_score)
请注意,在elif data.iloc[j,i] > data.iloc[j+1,i]
这一行中,我们比较的是j
行和j+1
行。因为我们的data
DataFrame 是转置过的,年份是索引(2023
, 2022
, …, 2018
)。所以j
行是比j+1
行更新的年份。例如,当j=0
时,比较的是2023年和2022年的数据。因此 data.iloc[j,i] > data.iloc[j+1,i]
的逻辑是正确的,代表了指标的同比增长。
运行 列表 lst-moutai-scoring 代码后,你将得到贵州茅台的财务趋势综合评分,并生成一个名为贵州茅台_趋势评分表.xlsx
的文件,其中包含了每个具体指标的得分情况,供你进一步详细分析。这个综合分数,就是我们对该公司整体财务趋势的一个量化、浓缩的评价。