Python大数据财务分析 课件 张敏 3.财务可视化基础 - Matplotlib库;4.财务静态分析_第1页
Python大数据财务分析 课件 张敏 3.财务可视化基础 - Matplotlib库;4.财务静态分析_第2页
Python大数据财务分析 课件 张敏 3.财务可视化基础 - Matplotlib库;4.财务静态分析_第3页
Python大数据财务分析 课件 张敏 3.财务可视化基础 - Matplotlib库;4.财务静态分析_第4页
Python大数据财务分析 课件 张敏 3.财务可视化基础 - Matplotlib库;4.财务静态分析_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章财务可视化基础-Matplotlib库2024/9/13《Python大数据财务分析》配套课件目录013.1Matplotlib基本图形绘制0203第三章财务可视化基础-Matplotlib库3.2Matplotlib可视化小技巧3.3Matplotlib财务可视化案例实战目录013.1.1折线图02033.1Matplotlib基本图形绘制3.1.2柱状图/条形图3.1.3散点图043.1.4直方图3.1Matplotlib基本图形绘制在画图之前首先导入matplotlib库,其导入方式通常写作“importmatplotlib.pyplotasplt”。as是对导入库的重命名以方便之后的使用,下面画图只需要调用plt的相应函数即可。如plt.plot()为折线图,plt.bar()为柱状图,plt.scatter()为散点图,plt.pie()为饼状图,plt.hist()为直方图等。接下来以折线图、柱状图(条形图)、散点图和直方图为例讲解图形的基本绘制方法。注意最后记得加上plt.show()来展示图形,运行结果如下图所示:3.1.1折线图通过plt.plot()可以绘制折线图,代码如下:如果想让x和y之间有些数学关系,列表是不太容易进行数学运算的,这时候就可以通过Numpy库引入一维数组进行数学运算,代码如下:3.1.1折线图这里通过Numpy生成一个一维数组x1,并根据数组的可运算性生成了y1和y2,将两条线都画在一张图上,最终运行结果如下图4-2所示:一般在表示趋势的时候折线图最为直观。3.1.1折线图3.1.2柱状图/条形图通过plt.bar()可以绘制柱状图,代码如下:运行结果如图所示:柱状图一般在进行同行业或者其他横截面比较的时候更加直观。3.1.3散点图通过plt.scatter()可以绘制散点图,代码如下:这里通过np.random.rand(10)生成10个0-1之间的随机数,运行结果如下图4-4所示:3.1.4直方图通过plt.hist()可以绘制频数或频率直方图,所谓直方图其实就是频数图或者频率图,横轴标为相关数据,纵坐标则为该数据出现的频数或者频率,演示代码如下:这里通过np.random.randn(10000)生成10000个服从均值为0,标准差为1的正态分布数据,运行结果如下图3-5所示,其中横轴表示随机生成的数据,纵轴则表示该数据出现的次数,也即频数。此外如果想显示为频率直方图的话,只需要设置参数density为1即可。3.1.4直方图补充知识点:在pandas库中的快捷绘图技巧以上是Matplotlib库经典图形的绘制技巧,其实对于pandas库中的数据表格,有更加方便的代码写法,不过其本质还是通过pandas库调用的Matplotlib库,演示代码如下:通过df.hist()的方式便可以快速地绘制和之前一样的直方图了,这里因为df是只有一列数,所以可以直接写df,如果df有多列数,那么绘制的时候就需要指明是哪一列需要绘制成直方图,写成df['列名'].hist()。补充知识点:在pandas库中的快捷绘图技巧此外,除了写df.hist()外,还可以通过下面这种pandas库里的通用绘图代码绘图:这里是通过设置kind参数为hist来绘制直方图,通过这种通用绘图代码,pandas库除了可以便捷的绘制直方图外,它还可以通过设置kind参数快捷地绘制其他图形,演示代码如下,首先创建一个二维DataFrame表格df。人均收入人均支出北京80006000上海70005000广州65004000演示二维表格df:补充知识点:在pandas库中的快捷绘图技巧此时可以通过pandas同时绘制折线图或者柱状图,代码如下:因为df有多列,所以先要通过df['列名']的方式先选取需要绘图的列数据,最终效果如图3-6,可以看到它将折线图和柱状图都快捷地绘制在图上了。此外如果直接写plot()函数,里面不传入kind参数的话,即写成df['人均收入'].plot()则默认绘制折线图。补充知识点:在pandas库中的快捷绘图技巧此外设置kind参数为pie则可以绘制饼图,设置为box则可以绘制箱体图,效果如图:补充知识点:在pandas库中的快捷绘图技巧总结下pandas快捷绘图的技巧。其他设置kind参数技巧如下表3-2所示。感兴趣的读者可以自己尝试将kind参数换成如下内容看下效果。kind参数图形类型line折线图bar柱状图hist直方图pie饼图box箱体图area面积图如果上面绘图过程中出现中文乱码,则可以在代码最前面加上如下三行代码解决中文乱码的问题,这三行代码是解决中文乱码的固定写法,这个之后也会讲解。目录3.2.1添加文字说明02033.2Matplotlib可视化小技巧3.2.2添加图例3.2.3设置双坐标轴043.2.4设置图片大小010506073.2.5

设置X轴角度3.2.6中文显示问题3.2.7绘制多图3.2Matplotlib可视化小技巧下面主要讲解数据可视化过程中常用的一些小技巧,如添加文字说明、添加图例、设置双坐标轴、设置图片大小、设置中文以及如何绘制多图。3.2.1添加文字说明通过plt.title(name)给图画添加标题;通过plt.xlable(),plt.ylable()用于添加x轴和y轴标签。运行结果如下图所示:3.2.1添加文字说明3.2.2添加图例通过plt.legend()来添加图例,添加前需要设置好lable(标签)参数,代码如下:如下图所示,已经绘制出两条直线,并在左上角添加了图例,如果想修改图例的位置,比如设置成右上角,可以将参数loc(位置location的缩写)修改成“upperright”,右下角则设置成“lowerright”即可。3.2.2添加图例3.2.3设置双坐标轴上面的例子可以在一张图里画出两条线,但如果两条线的取值范围相差比较大,那么画出来的图效果便不太好,那么此时如何来画出两条y坐标轴呢?可以在画完第一个图之后,写如下一行代码即可设置双坐标轴。需要注意的是,如果设置了双坐标轴,那么添加图例的时候,每画一次图就得添加一次,而不能在最后统一添加。这里以y=x和y=x^2为例,演示下如何设置双坐标轴,代码如下:运行结果如下图所示。可以看到左右的y坐标轴数值相差很大。如果不设置双坐标轴,会导致y=x这条线被压缩的很平,影响图像显示效果。3.2.3设置双坐标轴3.2.4设置图片大小如果对默认图片大小不满意,可以通过如下代码可以设置图片大小:第一个元素代表长,第二个元素代表宽,这里的数字8和6代表的是800和600像素。3.2.5设置X轴角度有的时候X轴可能因为内容较多,导致数据都挤在一块,这时候我们就可以设置x轴的角度来进行调节,代码如下,其中45表示45度,可以根据自己的需要来调整角度。3.2.6中文显示问题在使用matplotlib画图时,默认情况下是不支持中文显示的,通过如下代码可解决该问题。其中由于更改了字体导致显示不出负号,得将配署文件中axes.unicodeminus设为False。这里的SimHei是黑体的英文翻译,如果想采用其他字体,可参考下表的字体英文对照表:黑体SimHei微软雅黑Microsoft

YaHei新宋体NSimSun新细明体PMingLiU细明体MingLiU仿宋FangSong楷体KaiTi4.2.7绘制多图如下图4-11所示,有时我们需要在一张画布上输出多个图形,在Matplotlib库中有当前的图形(figure)以及当前轴(axes)概念,其对应的就是当前画布以及当前子图,在一张画布(figure)上可以绘制多个子图(axes)。绘制多图通常采用subplot()函数或subplots()函数。(1)subplot()函数Subplot()通常含有三个参数,子图的行数、列数以及第几个子图,例如subplot(221)表示的就是绘制2行2列的子图(共4个子图),并在第1个子图上进行绘图。4.2.7绘制多图(1)subplot()函数演示代码如下:4.2.7绘制多图绘制结果如下图所示:(1)subplot()函数为了加强大家对画布(figure)和子图(axes)的理解,我们通过下面的代码来做一个简单演示:4.2.7绘制多图(1)subplot()函数绘制结果如下图所示,两张画布其实就是绘制了两张图,其中第一张画布中有有两个子图,第二张画布中只有一个子图。4.2.7绘制多图(1)subplot()函数在使用subplot()函数的时候,每次在新的子图上画图时,都得调用subplot()函数。想要一次性就生成多个子图,可以用到subplots()函数,代码如下:4.2.7绘制多图其中第1行代码subplots()函数中主要有2个参数,nrows表示行数,ncols表示列数,这里就是绘制2行2列的子图(共4个子图),它会返回两个内容:fig(画布)和axes(子图集合,以数组形式存储各个子图),也可以简写为:fig,axes=plt.subplots(2,2);第2行代码通过flatten()函数将子图集合展开,从而获得各个子图,这里因为是已知是4个子图,所以写成“ax1,ax2,ax3,ax4”分别代表4个子图,之后就可以在这四个子图中画图了,演示代码如下,这里采用subplots函数的简写方式,并设置图片尺寸figsize为1000*800像素。(1)subplot()函数最终绘制结果如下图所示:4.2.7绘制多图(1)subplot()函数此外,如果要在subplot()函数或者subplots()函数生成的子图中设置子图标题、X轴标签或Y轴标签,得通过set_title()函数、set_xlabel()函数、set_ylabel()函数进行设置,演示代码如下:4.2.7绘制多图这里第一行设置中文字体为黑体(SimeHei)并使得中文不出现乱码(1)subplot()函数最终绘制结果如下图所示,可以看到第一张子图已经添加了标题和X轴坐标以及Y轴坐标等内容了。4.2.7绘制多图总结来说,subplot()在画布中绘图时,每次都要调用subplot()指定位置,而subplots()函数可以一次生成多个子图

,在调用时只需要调用生成子图的ax即可。目录013.3.1股票K线图绘制023.3

Matplotlib财务可视化案例实战3.3.2财务数据可视化绘制3.3Matplotlib财务可视化案例实战下面我们就结合两组例子来更好地理解一下Matplotlib在实际中的应用。一个是股票K线图的绘制,另一个是财务数据可视化的基本思路。3.3.1股票K线图绘制一个实际中的股票K线图如下图所示(这个是“贵州茅台”股票的日线级别的K线图):1.股票K线图基本知识这些柱状图通常称之为“K线图”,是由股票的四个价格来绘制的:开盘价(当天上午9点半开始交易时的价格)、收盘价(当天下午3点结束交易时的价格)、最高价(当天股价波动中的最高价)、最低价(当天股价波动中的最低价),简称“高、开、低、收”四个价格。

根据这四个价格便可以绘制出红色和绿色的K线图,因为形似蜡烛,因此也常被称之为蜡烛图。K线图分为两种,如果当天的收盘价高于开盘价,也就是说当天的价格上涨,则称之为阳线,通常绘制成红色;反之如果当天的收盘价低于开盘价,也就是说当天的价格下跌,则称之为阴线,通常绘制成绿色。(在美国,反而是红色代表跌,绿色代表涨)3.3.1股票K线图绘制1.股票K线图基本知识均线分为5日均线(通常称之为MA5)、10日均线(通常称之为MA10)、20日均线(通常称之为MA20)等,其原理就是将股价的收盘价求均值,例如5日均线就是最近连续5个交易日收盘价之和的平均值,具体的计算公式如下,其中Close1为当天的收盘价,Close2为前一天的收盘价,其余依次类推。把每个5日均线的值连成一条平滑的曲线就是5日均线图了,同理10日均线图和20日均线图也是类似的原理,这些均线图也就是我们在这一小节最开始看到图中的那些折线图。了解了股票K线图的基本知识后,下面我们就来进行K线图的绘制工作。3.3.1股票K线图绘制1.股票K线图基本知识2.绘制股票K线图(1)安装绘制K线图的相关库:mpl_finance库首先需要安装绘制K线图的相关库:mpl_finance库,其安装办法稍微麻烦一点,推荐通过PIP安装法安装,以Windows系统为例,具体方法是:通过Win+R组合键调出运行框,输入cmd后回车,然后在弹出框中输入如下内容,按一下Enter回车键进行安装:如果是在JupyterNotebook中安装,则在pip前面加一个英文的感叹号“!”然后运行该代码块即可。安装完mpl_finance库便可以调用其中的candlestick_ochl()函数来绘制K线图或者说蜡烛图了,在正式绘制之前,我们还需要做一些前期的数据准备工作。3.3.1股票K线图绘制

(2)引入绘图相关库

首先引入一些绘图需要用到的库,代码如下:引入pandas库;引入刚刚安装的mpl_finance库。3.3.1股票K线图绘制2.绘制股票K线图

(3)筛选数据使用的数据示例如下图所示:3.3.1股票K线图绘制2.绘制股票K线图可以看到读取到的数据有很多列,其中一些列是我们不需要的。接下来对列进行一个简单的筛选,并更改一下列名:这里更改列名的方法是直接更改,当然还有另外一种更一般的更改方法,如下所示,这两种方法选择其一就可以了:

(3)筛选数据3.3.1股票K线图绘制2.绘制股票K线图(4)日期格式调整及表格转换因为绘制K线图的plot函数只能接收特定格式的日期格式,以及数组格式的内容,所以我们需要将原来文本类型的日期格式调整一下,代码如下:第一行是将是用日期列代替原来的数字行索引作为表格的行索引,因为这是后续可视化接收数据的格式,这里将某列设置为行索引还有另一种写法,就是不进行inplace参数设定,直接进行变量替换,这两种方法选择其一即可:3.3.1股票K线图绘制2.绘制股票K线图第二行是将日期(现在的行索引)改为日期格式,用到的是pandas一个内置的方法,叫做pd.DatetimeIndex。当然这也有另一种写法,那就是在第一行之前先加一句:如果加了这一句就不用再写第二行(data.index=pd.DatetimeIndex)了。最后,我们需要对表格按照日期进行一个升序处理(4)日期格式调整及表格转换3.3.1股票K线图绘制2.绘制股票K线图这是因为如果不做这一步处理的话,data现在是以由近及远的顺序排列的,最后得到的图将是反过来的。(5)绘制K线图转换好数据格式后,K线图的绘制就比较简单了,通过plot函数便能够轻松的绘制K线图了,代码如下:3.3.1股票K线图绘制2.绘制股票K线图得到的结果如下图所示:(5)绘制K线图3.3.1股票K线图绘制2.绘制股票K线图我们可以和新浪财经网上的实际图像对比一下,发现通过Python绘制的K线图相关图片和网上的图片基本一致。代码汇总:importmplfinanceasmpfimportpandasaspddf=pd.read_excel('k线图原始数据.xlsx')#选取需要的列和更换列名data=df[['trade_date','open','close','high','low','vol']]#选取需要的列data.columns=['Date','Open','Close','High','Low','Volume']#更换列名,为后面函数变量做准备

#设置date列为索引,覆盖原来索引,这个时候索引还是object类型,就是字符串类型。data.set_index('Date',inplace=True)#将object类型转化成DateIndex类型,pd.DatetimeIndex是把某一列进行转换,同时把该列的数据设置为索引index。data.index=pd.DatetimeIndex(data.index)#将时间顺序升序,符合时间序列data=data.sort_index(ascending=True)my_color=mpf.make_marketcolors(up='red',down='green')#设置上涨为红色,下跌为绿色my_style=mpf.make_mpf_style(marketcolors=my_color)#添加到图片样式中#传入数据data;type为蜡烛图;mav为显示5日,10日,20日均线;volume=True显示成交量;show_nontrading=False不显示无交易日信息;style设置图片格式mpf.plot(data,type='candle',mav=(5,10,20),volume=True,show_nontrading=False,style=my_style)3.3.1股票K线图绘制2.绘制股票K线图3.3.2财务数据可视化绘制在基础的财务数据可视化中,主要就是涉及时间维度和行业维度上的统计图,分别对应着折线图和折线图。由于本章的重点在于Matplotlib的使用,所以在数据上我们做简化处理,用之前介绍过的创建pandas表格的方法新建数据表。3.3.2财务数据可视化绘制1.时间序列可视化对于描述财务信息趋势的可视化任务,一般采用折线图,我们首先创建一个表格,作为作图的数据源:得到了这样一个表:

roe00.236210.302120.322230.3099然后调用Matplotlib库来进行可视化表示:3.3.2财务数据可视化绘制1.时间序列可视化于是得到了这张图:关于可视化需要注意的是,这里用到的是折线图,即plot方法,同时可以通过loc参数设置图例位置。3.3.2财务数据可视化绘制1.时间序列可视化2.同业统计可视化另一方面的财务数据比较方式就是同业比较,一般采用条形图,首先也是创建一个数据源并进行排序:3.3.2财务数据可视化绘制

nameroe13水井坊0.342414山西汾酒0.309610贵州茅台0.29530泸州老窖0.25705皇台酒业0.25033五粮液0.23836洋河股份0.194616今世缘0.189515迎驾贡酒0.18541古井贡酒0.176917口子窖0.17622酒鬼酒0.172112舍得酒业0.160618金徽酒0.11938伊力特0.094611老白干酒0.09024顺鑫农业0.05499金种子酒0.02437青青稞酒-0.0560看一下这个数据表:2.同业统计可视化3.3.2财务数据可视化绘制然后调用Matplotlib库来进行可视化表示:于是得到了这张图:2.同业统计可视化3.3.2财务数据可视化绘制谢谢!2024/9/13《Python大数据财务分析》配套课件56第四章财务静态分析2024/9/13《Python大数据财务分析》配套课件目录014.1英里能力指标020403第四章财务静态分析4.2运营能力指标4.3偿债能力指标4.4成长能力指标054.5综合案例4.1盈利能力指标在本章,我们首先介绍利用Python实现财务静态分析。在传统财务报表分析中,比率分析具有举足轻重的地位。其核心思想是认为财务报表之间、财务报表的项目之间是关联的,分析财务报表仅仅依靠解读单个项目是不够的,还需要考虑财务报表项目之间的关系,才能揭示出企业完整的经济业务状况。传统的比率分析主要包括三个方面:盈利能力、偿债能力(财务风险)和运营能力。因为它们都是基于企业一期的财务数据得出的数据,因此我们又称之为静态分析。我们在这里还包括成长能力,之所以把它划分为静态,是因为相对于多年的趋势来看,某一年的变动情况也是“静态”的。为更紧密地联系实际,本章数据主要以一个实际的公司——贵州茅台为例。反映企业盈利能力的指标主要包括毛利率、净利润率、营业利润率和净资产收益率。读取文件:注意,三张报表分别在excel文件中的三张sheet里面,因此要传入对应的参数sheet_name,否则默认为读取第一张sheet。为了方便后续指标的计算,我们把资产负债表、利润表、现金流量表横向拼起来:4.1盈利能力指标通过merge函数我们就成功地把三张表合并为一张名为data的表了,如下图:需要注意的是,这样合并得到的表中有些列索引会多了一个后缀"_x,这是因为三张表中有些列索引是重复的,例如“TS股票代码”、“公告日期”等,因此仅按“报告期”为关键词合并的话另外那些重复的列索引就会用后缀"_x","_y","_z"依此类推地进行标记4.1盈利能力指标为了使表格更美观,在合并时我们可以把会重复的列索引也放入参数中:4.1盈利能力指标得到如下较美观的表格:用pd.concat方法可不可以呢?原则上也是可以的,但是concat方法是简单粗暴地直接连接,所以诸如股票代码、日期、报告类型的信息就会重复出现,造成不必要的空间浪费和数据冗余。

毛利率=毛利/营业收入=(营业收入-营业成本)/营业收入

毛利率反映的是一个商品经过生产转换内部系统以后增值的那一部分。也就是说,增值的越多毛利自然就越多。其计算过程如下:4.1.1毛利率其中round函数用来让计算结果保留到小数点后多少位,在此我们让其保留到小数点后4位。通过pandas的筛选操作,仅查看股票代码、报告期、毛利率:得到表格如下表所示:TS股票代码报告期毛利率600519.SH201912310.9130600519.SH201812310.9114600519.SH201712310.8980600519.SH201612310.9123600519.SH201512310.9223可以看到茅台的毛利十分吓人,毛成本只有10%左右,说明一瓶1499元的飞天茅台,生产成本只有不到150元。4.1.1毛利率4.1.1毛利率“贵州茅台”的合并利润表,表中有“营业总收入”、“营业收入”两种不同口径的收入,以及“营业总成本”、“营业成本”两种不同口径的成本,容易让人混淆。“营业总收入”和“营业收入”都只在合并利润表中出现,差别在于前者包括“营业收入”、“利息收入”、“已赚保费”、“手续费及佣金收入”。(其中“利息收入”、“已赚保费”和“手续费及佣金收入”这三个科目通常在银行、保险公司等金融机构中出现。对一般的只生产销售产品的企业来说,“营业总收入”和“营业收入”是相等的)“营业总成本”和“营业成本”是必然不相等的,“营业总成本”等于“营业成本”,以及“管理费用”、“销售费用”等各项期间费用,还有“资产减值损失”等各项损益之和。因此在计算产品毛利率时,记得要使用“营业成本”而非“营业总成本”。因为财务子公司的业务其实和茅台的主业相关性不大,所以计算毛利率时一般使用“营业收入”而非“营业总收入”,即不把茅台子公司的金融业务收入和成本纳入计算。茅台由于有一家财务子公司,该财务子公司负责给茅台集团内各关联公司进行借贷,类似集团内部的“银行”,因此茅台的合并利润表中出现了金融机构才会出现的那几项科目,造成茅台的“营业总收入”大于“营业收入”。营业利润率是指经营所得的营业利润占销货净额的百分比,或占投入资本额的百分比。其计算公式为:营业利润率=营业利润/营业收入其中:营业利润=营业收入-营业成本-税金及附加-销售费用-管理费用-研发费用-财务费用+其他收益+投资收益+公允价值变动收益-信用减值损失-资产减值损失+资产处置收益4.1.2营业利润率结果如表所示:TS股票代码报告期营业利润率600519.SH201912310.6911600519.SH201812310.6972600519.SH201712310.6689600519.SH201612310.6244600519.SH201512310.67854.1.2营业利润率上述计算方式直接采用了利润表中的“营业利润”,这样计算出来的“营业利润率”和真实的还是存在一定差异,因为如前所述,由于茅台财务子公司的存在,营业利润中还包含了金融业务的利润。因此更准确的计算茅台的营业利润率可以用“营业收入-营业成本-税金及附加-销售费用-管理费用-研发费用-财务费用+其他收益+投资收益+公允价值变动收益-信用减值损失-资产减值损失+资产处置收益”的具体科目进行计算。净利润率是指企业实现净利润与销售收入的对比关系,用以衡量企业在一定时期的销售收入获取的能力,该指标反映能够取得多少营业利润。其计算公式为:净利润率=净利润/营业收入反映每一元销售收入带来的净利润的多少,表示销售收入的收益水平。采用的利润口径比营业利润率多考虑了营业外收支,以及扣除了所得税。其计算过程如下:结果见表:TS股票代码报告期净利润率600519.SH201912310.5147600519.SH201812310.5137600519.SH201712310.4982600519.SH201612310.4614600519.SH201512310.50384.1.3净利润率4.1.4净资产收益率(ROE)净资产收益率(ReturnonEquity,简称ROE),又称股东权益报酬率、净值报酬率、权益报酬率、权益利润率、净资产利润率,是净利润与平均股东权益的百分比,这一指标是衡量企业纳税之后的净利润相对于所有者权益的比例,即用股东的钱获利的能力,其计算公式为:

净资产收益率=归母净利润/平均归母净资产=归母净利润/平均股东权益(不含少数股东)合并利润表中的净利润包含归母净利润和少数股东权益,在应用中我们一般使用的是归母净利润,因为我们关注的是该公司对它的股东创造的利润,少数股东对该公司是不存在所有权(股份)的。另外,净资产(股东权益)是存量值,对存量值我们一般用它的平均余额,即:平均归母净资产=(期初归母净资产+期末归母净资产)/2。4.1.4净资产收益率(ROE)另外需要说明的是,在某些地方我们还会见到这样的计算方法:

净资产收益率=归母净利润/期末归母净资产=归母净利润/期末股东权益(不含少数股东)这种计算方法对应的净资产收益率,称为摊薄ROE,而我们首先提到的算法对应的是加权平均ROE,二者的区别主要在于分母选取的差异:摊薄ROE是用归母净利润除以期末的归母净资产,体现的是静态的盈利能力,说明期末单位净资产对经营净利润的分享;而加权平均ROE是用归母净利润除以期间平均的归母净资产,是一个动态的指标,说明经营者在经营期间利用单位净资产为公司新创造利润的多少。在这里我们计算比较复杂的加权平均ROE,后续再遇到的时候我们为了简化处理,有可能直接用摊薄ROE代替。4.1.4净资产收益率(ROE)那么用Python如何实现呢?首先该指标涉及到计算平均归母净资产,因此5年的报表数据只能计算出后4年的ROE,想要计算2015年的ROE还需要获取2014年的数据。我们可以把获得的2014年的数据和2015年~2018年的数据拼为一个列表,然后传入表格data中:接下来计算ROE:4.1.4净资产收益率(ROE)计算结果如表:TS股票代码报告期ROE600519.SH201912310.3312600519.SH201812310.3446600519.SH201712310.3295600519.SH201612310.2444600519.SH201512310.2642除了上述介绍的指标,盈利能力指标还包括总资产回报率(ROA)、EBIT利润率等。目录014.2.1存货周转率02034.2

运营能力指标4.2.2总资产周转率4.2.3应收账款周转率4.2.1存货周转率存货周转率又名库存周转率,是企业一定时期营业成本(销货成本)与平均存货余额的比率。其计算公式为:存货周转率=营业成本/((期初存货+期末存货)/2)用于反映存货的周转速度,即存货的流动性及存货资金占用量是否合理,促使企业在保证生产经营连续性的同时,提高资金的使用效率,增强企业的短期偿债能力。计算过程为:#读取2014年的存货数据df_2014=pd.read_excel('df_2014.xlsx')inv_2014=df_2014['inventories'][0]#把2014年~2018年的存货作为新列表,并把列表加入表格inv0=data['存货'][1:].to_list()inv0.append(inv_2014)data['存货(上期余额)']=inv0#计算存货周转率data['存货周转率']=round(data['减:营业成本']/((data['存货']+data['存货(上期余额)'])/2),4)data[['TS股票代码','报告期','存货周转率']]需要注意的是,其中获取2014-2018年的存货数据的目的是为了计算每年的平均值结果如表TS股票代码报告期存货周转率600519.SH201912310.3046600519.SH201812310.2863600519.SH201712310.2784600519.SH201612310.1765600519.SH201512310.15394.2.1存货周转率贵州茅台的存货周转率并不高,大部分时候都在0.3以下,也就是生产的茅台酒一年最多卖出30%的存货。这和白酒行业的特点有关,存放时间越长口感越好,年份越老价值越高。尤其是茅台,新酒出厂前至少要在酒库存放3年,这和它不超过0.3的存货周转率一致。总资产周转率是企业一定时期的销售收入净额与平均资产总额之比,其计算公式为:

总资产周转率=营业收入/平均总资产=营业收入/((期初总资产+期末总资产)/2)

它是衡量资产投资规模与销售水平之间配比情况的指标。计算过程如下:4.2.2总资产周转率结果为表:TS股票代码报告期总资产周转率600519.SH201912310.4983600519.SH201812310.5002600519.SH201712310.4704600519.SH201612310.3901600519.SH201512310.42924.2.2总资产周转率茅台的总资产周转率也不高,一年只能周转不到半次,和一般的消费行业有较大差别。应收账款周转率是企业在一定时期内赊销净收入与平均应收账款余额之比。它是衡量企业应收账款周转速度及管理效率的指标。

应收账款周转率=营业收入/平均应收账款公司的应收账款在流动资产中具有举足轻重的地位。公司的应收账款如能及时收回,公司的资金使用效率便能大幅提高。应收账款周转率就是反映公司应收账款周转速度的比率。它说明一定期间内公司应收账款转为现金的平均次数。根据贵州茅台的资产负债表数据,可知贵州茅台除了2015年,在2016~2019年都没有应收账款。这说明贵州茅台的销售只收现金,不接收赊账,足以说明茅台品牌力的强势。4.2.3应收账款周转率由于贵州茅台基本不存在应收账款,因此这里拿五粮液做例子计算应收账款周转率。首先读取数据:4.2.3应收账款周转率接下来计算对应指标:4.2.3应收账款周转率计算结果如表:TS股票代码报告期应收账款周转率000858.SZ20191231382.9010000858.SZ20181231337.9489000858.SZ20171231277.8705000858.SZ20161231228.6804000858.SZ20151231389.3483从结果可以看到五粮液的应收账款周转率非常高,这说明五粮液很少赊销,资金很少被下游客户占用,因此它和茅台一样具有很强的话语权。除了上述介绍的指标,运营能力指标还包括固定资产周转率、应付款项周转率等等。4.2.3应收账款周转率目录014.3.1流动比率02034.3

偿债能力指标4.3.2速动比率4.3.3利息保障倍数4.3偿债能力指标接下来是反映企业财务风险水平或者说偿债能力的指标,主要包括流动比率、速动比率和利息保障倍数。其计算逻辑没有太大改变。4.3.1流动比率流动比率是流动资产对流动负债的比率,其计算公式为:

流动比率=流动资产总额/流动负债总额

用来衡量企业流动资产在短期债务到期以前,可以变为现金用于偿还负债的能力。计算过程如下:4.3.1流动比率结果如表:TS股票代码报告期流动比率600519.SH201912313.8698600519.SH201812313.2485600519.SH201712312.9099600519.SH201612312.4360600519.SH201512313.2418速动比率是指企业速动资产与流动负债的比率,速动资产是企业的流动资产减去存货和预付费用后的余额,主要包括现金、短期投资、应收票据、应收账款等项目。其计算公式为:

速动比率=(流动资产总额-存货-预付款项)/流动负债总额

是指速动资产对流动负债的比率。它是衡量企业流动资产中可以立即变现用于偿还流动负债的能力。其计算过程为:4.3.2速动比率结果为表:TS股票代码报告期速动比率600519.SH201912313.2168600519.SH201812312.6668600519.SH201712312.3176600519.SH201612311.8507600519.SH201512312.2698从结果可以看到贵州茅台的可快速变现的资产对短期内需要偿付的负债的覆盖大概是2倍以上,说明茅台的实际短期偿债能力很强。4.3.2速动比率利息保障倍数(interestcoverageratio),又称已获利息倍数,是企业生产经营所获得的

息税前利润与利息费用之比。其计算公式为:

利息保障倍数=息税前利润(EBIT)/利息费用计算过程如下:4.3.3利息保障倍数4.3.3利息保障倍数在实际案例场景中,公式中的分母“利息费用”是指本期发生的全部应付利息,不仅包括财务费用中的利息费用,还应包括计入固定资产成本的资本化利息。资本化利息虽然不在利润表中扣除,但仍然是要偿还的。利息保障倍数的重点是衡量企业支付利息的能力,没有足够大的息税前利润,利息的支付就会发生困难。这里简化为财务费用中的“利息支出“。另外注意这里的分母不要拿”财务费用“科目来代替,因为”财务费用“包括”利息收入“和”利息支出“,但是这里的”利息费用“是指需要支付的利息,拿”财务费用“来代替的话就可能会有失偏颇。利息保障倍数=息税前利润(EBIT)/利息费用结果如表TS股票代码报告期利息保障倍数600519.SH20191231405.2636600519.SH20181231376.6166600519.SH20171231287.5524600519.SH20161231197.1641600519.SH20151231297.8382注意企业的利润表中是不会直接披露息税前利润的,;我们也可以自己对息税前利润进行计算,通常使用的公式为:息税前利润=净利润+所得税+财务费用。除此之外还有另外的计算息税前利润的方式,我们将在9.3节对此进行深入探讨。另外,读取的利润表中没有披露利息费用,因此暂时用财务费用代替。除了上述介绍的指标,偿债能力指标还包括现金比率、资产负债率、债务权益比率等。4.3.3利息保障倍数目录014.4.1营收增长率02034.4

成长能力指标4.4.2营业利润增长率4.4.3净利润增长率5.4成长能力指标在资本市场上,我们常常能见到一些公司,它的盈利能力不强(主要指净利润不高),甚至亏损(例如早期的亚马逊和京东),它的偿债能力也堪忧,甚至杠杆很高,但仍然不影响它的股价很高,这往往是因为投资者对它未来的发展能力十分看好。同样的,成长能力指标也需要用到上一年度的数据,例如2016年的营收增长率就需要用到2015年的数据。5.4.1营收增长率营业收入增长率(Increaserateofmainbusinessrevenue)是指企业本年营业收入增加额对上年营业收入总额的比率。其计算公式为:

营收增长率=(本期营业收入-上期营业收入)/上期营业收入

该指标值越高,表明企业营业收入的增长速度越快,企业市场前景越好。4.4.1营收增长率读取2014年的营业收入:结果如表:TS股票代码报告期营业收入增长率600519.SH201912310.1601600519.SH201812310.2649600519.SH201712310.4981600519.SH201612310.1899600519.SH201512310.0344可以看到茅台的营收增长率波动幅度还是有点大的。5.4.1营收增长率营业利润增长率又称销售利润增长率,其是企业本年营业利润增长额与上年营业利润总额的比率。其计算公式为:

营业利润增长率=(本年营业利润总额-上年营业利润总额)/上年营业利润总额

与营收增长率不同,营业利润增长率从利润增长的角度来刻画企业的发展能力,其计算过程如下:4.4.2营业利润增长率结果如表:TS股票代码报告期营业利润增长率600519.SH201912310.1499600519.SH201812310.3185600519.SH201712310.6047600519.SH201612310.0951600519.SH201512310.00254.4.2营业利润增长率净利润增长率是指企业本期净利润增加额与上期净利润总额的比率。其计算公式为:

净利润增长率=(期末净利润-期初净利润)/期初净利润

净利润增长率反映了企业获利能力的增长速度,是衡量企业总量规模变动和成长状况的重要指标。其计算过程为:4.4.3净利润增长率#读取2014年的净利润数据df_2014=pd.read_excel('df_2014.xlsx')profit_14=df_2014['n_income'].iloc[0]#把2014年~2018年的净利润作为新列表,并把列表加入表格profit0=data['净利润'][1:].to_list()profit0.append(profit_14)data['净利润(上期余额)']=profit0#计算净利润增长率data['净利润增长率']=round((data['净利润']-data['净利润(上期余额)'])/data['净利润(上期余额)'],4)data[['TS股票代码','报告期','净利润增长率']]结果如表:TS股票代码报告期净利润增长率600519.SH201912310.1623600519.SH201812310.3042600519.SH201712310.6177600519.SH201612310.0897600519.SH201512310.0114除了上述介绍的指标,成长能力指标还包括净资本增长率、固定资产增长率、总资产增长率等。以上就是从盈利能力、运营能力、偿债能力和成长能力四个方面反映企业发展状况的一些指标以及它们如何通过Python进行计算。需要指出的是,这里列出的指标并不是最全面的,解释也不是最深入的,只是希望通过一些简单的计算和举例来展示大数据时代如何通过Python和原始的财务数据实现静态的财务分析。4.4.3净利润增长率目录014.5.1单家公司024.5

综合案例4.5.2多家公司4.5综合案例上面介绍了分析企业常用的一些财务指标,在本节我们学习如何批量生成所有的财务指标,集合在一张财务比率表中。首先以获取单家企业的“财务比率表”为例,这里我们同样采用“贵州茅台”为例,获取其2016~2019年5年的财务比率。4.5.1单家公司首先需要读取企业的三张报表数据,为了便于读者操作,可以从配套附件中读取如下数据,并进行拼接处理:#读取报表数据comp='贵州茅台'df_balancesheet=pd.read_excel(comp+'.xlsx',sheet_name='资产负债表')df_income=pd.read_excel(comp+'.xlsx',sheet_name='利润表')df_cashflow=pd.read_excel(comp+'.xlsx',sheet_name='现金流量表')#报表拼接data=pd.merge(df_income,df_balancesheet,on=['报告期','TS股票代码','公告日期','实际公告日期','报表类型','公司类型'])data=pd.merge(data,df_cashflow,on=['报告期','TS股票代码','公告日期','实际公告日期','报表类型','公司类型'])此时三张报表已经拼接为一张大表data,注意为了防止后面报错(主要是计算中出现分母为0的情况),我们需要把表格中为空值的地方用0填充:4.5.1单家公司因为一些比率的计算需要用到上期数据,因此需要把相关数据的上期值加入表中。在这里有个简便的方法,就是让目前表格中的数据直接滞后一期,作为新列添加到原表中。比如:滞后一期变为然后将滞后的列加入原表变为pandas中的shift函数就可以实现此功能,利用shift(-1)就可以把上面左表变为右表,即滞后一期,shift(1)则相反,是提前一期。因此对贵州茅台的“存货”一项,可以用如下代码添加它的上期余额:4.5.1单家公司由于要处理的项目较多,我们可以批量处理如下:完成此步操作后,表中2014年那行的数据我们就用不上了,可以去掉:接下来计算各项财务比率指标:#盈利能力data['毛利率']=round((data['营业收入']-data['减:营业成本'])/data['营业收入'],4)data['营业利润率']=round((data['营业利润'])/data['营业收入'],4)data['净利润率']=round(data['净利润(含少数股东损益)']/data['营业收入'],4)data['ROE']=round(data['净利润(不含少数股东损益)']/((data['股东权益合计(不含少数股东权益)']+data['股东权益合计(不含少数股东权益)'])/2),4)#营运能力data['存货周转率']=round(data['减:营业成本']/((data['存货']+data['存货(上期)'])/2),4)data['总资产周转率']=round(data['营业收入']/((data['资产总计']+data['资产总计(上期)'])/2),4)data['应收账款周转率']=ro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论