java中html table垂直表格页面显示列名和数据不全_利用PowerBI分析上市公司财务数据(一)...

0bb7eaa32ffaa3a80b0ca0999d2c99cd.png

44f70a3c99f900f691a922ddebbe84c1.png

​本文章演示如何使用 Power BI 搭建简单的财务分析模型,主要涉及数据获取、数据清洗、数据建模,数据可视化等四个步骤。爱学习的你快来围观吧~


一、数据获取数据获取方式:网站数据接口主流财经网站获取。1)网站数据接口:使用网站数据接口的好处就是数据规范,不需要额外的清洗、加工,可以拿来就用,不过大部分数据接口可能需要付费才能使用,极少有免费。大家有兴趣的话可以自行百度TuShare,此处不详细阐述。2)主流财经网站:本文主要讲述如何在主流财经网站上使用Power BI获取上市公司财务数据的具体流程。

下面以网易财经为例:分析目标网站,打开 https://money.163.com/stock/

在页面找到投资工具,可以看到有个财报查询入口。如下图所示

9a1cde0fbdf5f3e5cdf967d6576d6815.png

进入“财报查询”页面后,出现财报简要信息,如下:

f294e2c793e9b924f8b2a18c1d2f5e37.png

点击详细,则可看到标准报表格式的财务数据,通过多次切换页面元素,不难发现数据呈现与网址呈如下规律:

8a00480753f2efa2a3930534be30ea40.png

网址的参数有三个:一是报表类型,决定显示是资产负责表还是利润表;二是股票代码,决定显示哪家公司的数据;三是报告类别,决定呈现年报,还是季报。

2、用 Power BI 对单个页面数据进行清洗加工打开 Power BI Desktop,点击获取数据=>选择Web=>输入网址:http://quotes.money.163.com/f10/zcfzb_603489.html

cce1f79adc0c4d52a8d5afcd32801829.png

点击确定,Power BI会自动对页面进行分析,通过预览,发现table1和table2 即为我们所需要的数据。

1de062e5059424ef79c0dd6dc9f4dc04.png

勾选Table1和Table2,点击转换数据,然后将Table1和Table2合并,这是一般思路,不过细心的朋友可以发现,实际上有更好的方式。如下图所示:

0d9fb15ba90c96498d12f169c0dde270.png

f2eccd2ce110b72c33ac6115e40520e8.png

将鼠标移到“下载数据”超链接上面,浏览器左下角显示出了访问地址

可以发现该地址与原来的地址基本相同,只需将http://quotes.money.163.com/f10/zcfzb_603489.html中的f10换成service即可。

我们并不用真正下载下来,只用将http://quotes.money.163.com/service/zcfzb_603489.html复制到web数据源,如下:

e1d4fe55c8b6c3e62c4cc1c16f9f1f15.png

在左上角,选择打开为CSV文档,可能有人问为什么是CSV文档,这个可以直接用下载工具下来查看,便知是什么文档。

7ba8653ee64bebae5cf652735edba3b8.png

选择CSV打开后,PQ直接对数据进行了分列,如下:

b22000f3687524b561426a570881ac71.png

二、数据清洗通过第一步网站的导入,完成了数据的初步获取,但为了后续分析,还需要对数据进行清洗加工。PQ有时会自动会做一些步骤,如步骤一,选择CSV文档打开后,实际进行了两个步骤,一是打开,二是数据类型自动转换,但这个数据类型自动转换并不是我们想要的,具体为什么后面再做说明,现在我们需要后退一步:很简单,只用用鼠标单击步骤“更改的类型”前面的“X”即可删除:

8edb82b94997168a5549942de1414a6d.png

移去空行:

325605e0d78004a7fe1925c0c6d4435a.png

由于中文有时会有多余空格,选择第一列,选择格式=>修整

c9e9e647c5dc7a9f7df8736c0070c26d.png

然后选择转换=>转置

fac5edd31ecbf669b163d8fdec94e0a7.png

变成如下样式

9e533a39194d13f602e62d2485df1b5f.png

我们观察一下,应该将第一行用作表头,然后第8行为多余的空行,需要删除,还有一些项目为0,用的字符—填充,也不符合数据规范。接下来,做如下清选操作,点击将第一行用作标题

4719f1bdb7b1343035159a78c13950f3.png

再次移去空行:

28a008d577f3511dba1e7d8ccce309f4.png

Ctrl+A 全选所有列,然后点击替换值 将—替换为0:

9935b859fa01fabcd90b95cb1c0329b4.png

最后数据变成以下样式,到此,数据清洗工作已经完成。

d99e987278b3902ca4c9a2db93cdc550.png

三、构建自定义函数

通过1、2两个步骤完成了数据清洗,虽然下次可以通过刷新自动更新,但是,这仅仅是完成了对单个页面、单个表的处理,理想的状态就是输入报表类型不同的参数就自动取得各个报表,如利润表、现金流量表等;通过输入公司代码参数自动获取不同上市公司的报表。因此,首先需要建立两个参数,一个是报表类型:SatementType,另一个是公司代码ComCode,点击管理参数=>新建参数如下:

f649d4a1f5221a10c6d64bcd8fe1058f.png

42bcead13c656ebf262adbb3a5feebfc.png

再次回到查询,点击源“设置”

8458ff56725c60e83bc82bc1bb53740e.png

将URL改成高级,并按如下方式更改:

936dc596fb912084b6be4c3e85fd65fd.png

在第一个查询列表上,右击创建函数:

3a82a3f8b077b1aedcd513468fd795fb.png

输入函数名getSatement

dd10c05ba4865ed0cfdfbf72b330fc52.png

这样函数创建完成。我们测试一下,将SatementType的值改为lrb,发现报错了:

115b57a506993c176c0a0fe741150636.png

通过检查,报错的原因是由于最后一个步骤引用了资产负债表项目,改为利润表时这个项目并不存在了,这个是用PQ数据清洗时常常出现数据兼容问题。为了规避这个问题,就需要注意在数据清洗尽量不要引用特定列的名称

于是,将最后一步改为:=Table.ReplaceValue(筛选的行1,"--","0",Replacer.ReplaceText,Table.ColumnNames(筛选的行1))即 用Table.ColumnNames函数自动获取当前表的列名


四、利用该自定义函数进行批量获取数据

打开证券交易交所网站, http://www.szse.cn/market/companys/company/index.html我们得到前20家公司列表(其实我们也可以用PQ自动获得上市公司列表,方法同上),为了演示,我们直接复制,然后把数据贴过去。点击 输入数据=>粘贴

001db42d3854f266313fbee9b6cabc64.png

我们删除其他列,只保留公司代码,然后调用自定义函数如下:

78d155d079fd5d98aee27ecb675c4409.png

确定后,弹出隐私问题提示,选择继续“忽略”,这个数秒内就完成了20家公司资产负债表数据获取。

8eb8ad3b7b7ff9ffb2b9091993b22cc8.png

我们选择扩展

8eb8ad3b7b7ff9ffb2b9091993b22cc8.png

然后全选列,点击检测数据类型

e47659f1fcdb50c4511342f834287511.png

数据批量获取完成。下面新建一个度量值 :

ced7954ac866ca857c57ebdd28ec59ca.png

来简单看下powerbi在可视化方面的快捷便利。通过简单设置即可以生成如下图表:

597f3c6adeda55510260c59638cab819.png

上图展示了04-19年这20家上市公司资产负债率的变化,通过切换公司代码,可以快速查看某家公司的情况。如查看000007公司情况。

ab9cc43a0f635551a794361713c1c4fb.png

至此,可以发现Power BI模型一旦建成,后续工作将十分便利,这种数据、图表交互式体验比直接到网站查询或是查看EXCEL表格更能发现数据背后的问题;同时也可完全根据自己对数据的理解构成自己专属的财务分析模型。(后续将详细讲解如何构建财务分析模型)


原创作者:

44f70a3c99f900f691a922ddebbe84c1.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值