本文章演示如何使用 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表格更能发现数据背后的问题;同时也可完全根据自己对数据的理解构成自己专属的财务分析模型。(后续将详细讲解如何构建财务分析模型)


原创作者:编辑排版:

怎么查询sybase money列数据长度_用PBI分析上市公司财务数据(一)相关推荐

  1. CNZZ 移动统计_移动数据统计_移动应用分析_ APP统计

    CNZZ 移动统计_移动数据统计_移动应用分析_ APP统计 http://mobile.cnzz.com/help.php?h=Android_SDK_Download_and_Usage_Manu ...

  2. exce中让两列数据一一对应_工作中被重复数据所烦恼?学会这几个Excel技巧,少加班...

    工作中,经常被重复的数据所困扰,那就学下这几个关于重复值的技巧,每天5分钟,工作更轻松! 1.快速查找单列重复数据 如果某一列中,有的数据是重复的,我们希望把它找出来,可以在条件格式中突出单元格,然后 ...

  3. send函数 获得已发送数据长度_蓝牙BLE开发1--起因与回调函数

    1 起因 笔者在开发蓝牙芯片CC2540,试图取实现大量数据的BLE透传功能,在认真学习了蓝牙4.0协议标准以及TI提供的SDK说明,我总结了两个发送函数,以及两个接收函数的位置. 两个发送函数包括 ...

  4. exce中让两列数据一一对应_表格数据对比眼花缭乱、痛苦不堪,找对方法,1秒搞定...

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力!#学问分享官# 在我们日常工作中,经常碰到两列数据或者两个表格对比,找出差异数据,如果表格的数据太多,靠肉眼一行行对比,即使 ...

  5. 查询各个分区的数据量_分库、分表、分区的区别,傻傻分不清?

    作者:GrimMjxwww.cnblogs.com/GrimMjx/p/11772033.html 一.分分合合 说过很多次,不要拘泥于某一个技术的一点,技术是相通的.重要的是编程思想,思想是最重要的 ...

  6. oracle 两表两列数据对比_当表中的列数不同时,如何比较oracle中的两个表

    INTRO:下面我将展示如何做到"手工"这些工具(例如SQL Developer)可以做得更快更好.我对此(和你的!)的兴趣是双重的:学习和使用一些可以帮助解决许多其他问题的想法; ...

  7. oracle 两表两列数据对比_【SQL】根据两列信息,整合两张表数据

    两张表数据如下: --2017年 id college score A001 北京大学 670 A002 中国人民大学 646 A003 清华大学 664 A003 清华大学         (定向) ...

  8. python读取前两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

  9. python提取两列数据对比_使用Python的Dataframe取两列时间值相差一年的所有行方法...

    在使用Python处理数据时,经常需要对数据筛选. 这是在对时间筛选时,判断两列时间是否相差一年,如果是,则返回符合条件的所有列. data原始数据: data[map(lambda x:dateti ...

  10. java数据长度_存储单位(字节)

    所谓的占用字节数 就是申请内存的时候所占的空间大小记住一句话:计算机输入的符号最小1个字节,1字节 = 8bit (1bit就是二进制的1位) 8bit 表示的最大内存 等于 二进制的 1111-11 ...

最新文章

  1. 计算机系统的安全需求的需求等级,计算机信息系统安全等级保护 通用技术要求.PDF...
  2. 关于学习Python之后的一点总结(1->符号优先级->for->range())
  3. fastd 3.0 开发的那些事
  4. OUYA设备的购买和安装
  5. c语言 listview,C语言 SDK编程之通用控件的使用--ListView
  6. 单片机断电后不保存程序_为什么单片机语音芯片既有flash又有EEPROM
  7. 全球及中国固态锂电池行业需求量预测及投资规模战略报告2021-2027年
  8. 堆溢出的DWORD Shoot核心原理-口语化
  9. C#LeetCode刷题之#888-公平的糖果交换(Fair Candy Swap)
  10. Redis 数据库、键过期的实现
  11. grep 多模式匹配
  12. matplotlib axis
  13. Android中关于Volley的使用(三)认识Volley的架构
  14. java世博会_世博会申请由xcode修改
  15. 一段有趣的python小代码(将numpy中的数组转化为可哈希的字典)
  16. CSS基础:浅用字体图标(以阿里字体图标库演示)
  17. JMeter做性能测试之前,你应该要知道的套路?
  18. ubuntu_pip-install_WARRING:XXX is not on PATH ...
  19. MySQL数据库事务基本介绍、四大特征、隔离界别的使用方法
  20. Unity Mesh网格合并

热门文章

  1. LIO-SAM探秘第三章之代码解析(五) --- imuPreintegration.cpp
  2. cartographer探秘第四章之代码解析(四) --- 后端优化 --- 约束计算
  3. VS2013中为C++程序生成lib和dll文件
  4. 其他学习笔记(一)——MySQL基础配置+可视化工具安装与破解
  5. 类方法实现:用python实现一个简单的单词本,添加/查找/删除单词。
  6. (转)使用CUnit进行单元测试和覆盖率统计
  7. jquery 输入框,单选按钮,下拉列表和复选框的使用
  8. Marlin 溫度 sensor 校正
  9. SSIS包的组建之连接管理器
  10. Matlab连接字符串的方法