用PowerBI分析上市公司财务数据(一)
本文章演示如何使用 Power BI 搭建简单的财务分析模型,主要涉及数据获取、数据清洗、数据建模,数据可视化等四个步骤。
爱学习的你快来围观吧~
一、数据获取
数据获取方式:网站数据接口或主流财经网站获取。
1)网站数据接口:使用网站数据接口的好处就是数据规范,不需要额外的清洗、加工,可以拿来就用,不过大部分数据接口可能需要付费才能使用,极少有免费。
大家有兴趣的话可以自行百度TuShare,此处不详细阐述。
2)主流财经网站:本文主要讲述如何在主流财经网站上使用Power BI获取上市公司财务数据的具体流程。
下面以网易财经为例:
分析目标网站,打开https://money.163.com/stock/,在页面找到投资工具,可以看到有个财报查询入口。如下图所示
进入“财报查询”页面后,出现财报简要信息,如下:
点击详细,则可看到标准报表格式的财务数据,通过多次切换页面元素,不难发现数据呈现与网址呈如下规律:
即网址的参数有三个:一是报表类型,决定显示是资产负责表还是利润表;二是股票代码,决定显示哪家公司的数据;三是报告类别,决定呈现年报,还是季报。
2、用 Power BI 对单个页面数据进行清洗加工
打开 Power BI Desktop,点击获取数据=>选择Web=>输入网址:http://quotes.money.163.com/f10/zcfzb_603489.html
点击确定,Power BI会自动对页面进行分析,通过预览,发现table1和table2 即为我们所需要的数据。
勾选Table1和Table2,点击转换数据,然后将Table1和Table2合并,这是一般思路,不过细心的朋友可以发现,实际上有更好的方式。如下图所示:
将鼠标移到“下载数据”超链接上面,浏览器左下角显示出了访问地址
可以发现该地址与原来的地址基本相同,只需将http://quotes.money.163.com/f10/zcfzb_603489.html中的f10换成service即可。
我们并不用真正下载下来,只用将http://quotes.money.163.com/service/zcfzb_603489.html 复制到web数据源,如下:
在左上角,选择打开为CSV文档,可能有人问为什么是CSV文档,这个可以直接用下载工具下来查看,便知是什么文档。
选择CSV打开后,PQ直接对数据进行了分列,如下:
二、数据清洗
通过第一步网站的导入,完成了数据的初步获取,但为了后续分析,还需要对数据进行清洗加工。
PQ有时会自动会做一些步骤,如步骤一,选择CSV文档打开后,实际进行了两个步骤,一是打开,二是数据类型自动转换,但这个数据类型自动转换并不是我们想要的,具体为什么后面再做说明,现在我们需要后退一步:很简单,只用用鼠标单击步骤“更改的类型”前面的“X”即可删除:
移去空行:
由于中文有时会有多余空格,选择第一列,选择格式=>修整
然后选择转换=>转置
变成如下样式
我们观察一下,应该将第一行用作表头,然后第8行为多余的空行,需要删除,还有一些项目为0,用的字符—填充,也不符合数据规范。
接下来,做如下清选操作,点击将第一行用作标题:
再次移去空行:
Ctrl+A 全选所有列,然后点击替换值 将—替换为0:
最后数据变成以下样式,到此,数据清洗工作已经完成。
三、构建自定义函数
通过1、2两个步骤完成了数据清洗,虽然下次可以通过刷新自动更新,但是,这仅仅是完成了对单个页面、单个表的处理,理想的状态就是输入报表类型不同的参数就自动取得各个报表,如利润表、现金流量表等;通过输入公司代码参数自动获取不同上市公司的报表。
因此,首先需要建立两个参数,一个是报表类型:SatementType,另一个是公司代码ComCode ,点击管理参数=>新建参数
如下:
再次回到查询,点击源“设置”
将URL改成高级,并按如下方式更改:
在第一个查询列表上,右击创建函数:
输入函数名getSatement
这样函数创建完成。
我们测试一下,将SatementType的值改为lrb,发现报错了:
通过检查,报错的原因是由于最后一个步骤引用了资产负债表项目,改为利润表时这个项目并不存在了,这个是用PQ数据清洗时常常出现数据兼容问题。为了规避这个问题,就需要注意在数据清洗尽量不要引用特定列的名称。
于是,将最后一步改为:= Table.ReplaceValue(筛选的行1,"--","0",Replacer.ReplaceText,Table.ColumnNames(筛选的行1))
即 用 Table.ColumnNames函数自动获取当前表的列名。
四、利用该自定义函数进行批量获取数据
打开证券交易交所网站, http://www.szse.cn/market/companys/company/index.html
我们得到前20家公司列表(其实我们也可以用PQ自动获得上市公司列表,方法同上),为了演示,我们直接复制,然后把数据贴过去。
点击 输入数据=>粘贴:
我们删除其他列,只保留公司代码,
然后调用自定义函数如下:
确定后,弹出隐私问题提示,选择继续“忽略”,这个数秒内就完成了20家公司资产负债表数据获取。
我们选择扩展
然后全选列,点击检测数据类型
数据批量获取完成。
下面新建一个度量值 :
来简单看下powerbi在可视化方面的快捷便利。
通过简单设置即可以生成如下图表:
上图展示了04-19年这20家上市公司资产负债率的变化,通过切换公司代码,可以快速查看某家公司的情况。如查看000007公司情况。
至此,可以发现Power BI模型一旦建成,后续工作将十分便利,这种数据、图表交互式体验比直接到网站查询或是查看EXCEL表格更能发现数据背后的问题;同时也可完全根据自己对数据的理解构成自己专属的财务分析模型。(后续将详细讲解如何构建财务分析模型)
关注公众号 PowerBI大师,获得更多学习资源