目录
分析需求的数据化
数据描述
内部数据
外部数据
逻辑描述
表态数据
动态数据
数据词典
数据源前期准备
PowerBI获取外部数据
方法一:直接抓取表格数据
方法二:使用示例抓取数据
方法三:抓取JSON格式
方法四:批量抓取数据
MySQL 内部获取
可视化连接软件NAVICAT
数据库与数据仓库
数据库
数据仓库
举例
数据的导入
导入Excel文件数据
XLS与XLSX区别
导入文本文件数据
导入数据库数据
当下比较主流的数据库介绍
连接网页数据
网页抓取数据的方式
获取其他数据
获取其他数据的方式
文件夹中快速导入多个文件
数据的清洗
数据清洗的流程
1. 预处理阶段
2. 去除/补全有效缺失的数据
3. 去除/修改格式和内容错误的数据
4. 去除/修改逻辑错误的数据
数据清洗常用操作
1. 标题提升
2. 更改数据类型
3. 删除空值、错误值
4. 删除重复项、保留重复项
5. 填充值
6. 提取值
7. 行列转换(转置)
8. 格式修整
9. 排序
10. 数据拆分和合并列
数据清洗表操作
1. 追加查询
2. 合并查询
M 函数
M函数基本表达式
自定义函数
数据质量评估
数据评估指标
数据审计
进行商业项目的数据分析与可视化设计时,一切都以数据为基础和依据,通过对数据获取后进行清洗后进行建模分析并最终形成可视化效果。
数据从来源上区分的话可以分为内部数据和外部数据两种。
一般包括业务数据、监控数据和项目知识库数据等,如电商平台中的经营数据,销售数据,用户数据,财务数据等,可以利用这些数据进行分析来判断一个公司发展的健康情况。
对于数据分析应用来说,数据源是很多企业或是分析师非常苦恼的问题,由于缺乏丰富且高质量的数据,我们很难达到想要的数据分析效果。要解决这一问题,除了挖掘内部数据之外,一个行之有效的方法就是采用外部数据。但是尽管外部数据非常流行,也具有重要的意义,但我们依然要注意,没有经过审查的数据或是低质量的数据会给数据洞察带来难以不利甚至是损害。所以,企业需要围绕购买、审查数据建立一套合适的机制,它涵盖数据来源确定、数据质量审核、数据清洗等步骤。
对数据进行逻辑描述时可把数据分为表态数据和动态数据两种。
进行描述时应把各数据元素逻辑地分成若干组,例如函数、源数据或对于其应用更为恰当的逻辑分组。给出每一数据元的名称(包括缩写和代码)、定义(或物理意义)度量单位、值域、格式和类型等有关信息。
表态数据就是所谓的静态数据,指在运行过程中主要作为参考的数据,它们在很长的一段时间内不会变化,一般不随运行而改变。
动态数据包括所有在运行中要不断或者在特定的条件下而发生变化的数据,以及在运行中要输入、输出的数据。
对平台中所出现的各个实体的属性进行整理,使其形成数据词典,以此可以来作为后继研发过程中数据结构设计、数据库设计、数据库表结构设计的主要参考来源;并说明对数据要求的制约。逐条列出对进一步扩充或使用方面的考虑而提出的对数据要求的限制(容量、文卷、记录和数据元的个数的最大值)。对于在设计和开发中确定是临界性的限制更要明确指出。
要进行数据的分析,首先必须要先获得想要的数据,数据的获取可以从内部进行获取,也可以从外部进行获取。
外部获取可以通过搜索数据、利用爬虫、从合作方购买/交换数据等方式获得。
这里我们学习外部数据最常用的方式,通过抓取网页端数据。
国家统计局 (stats.gov.cn)
统计数据_上海市统计局 (sh.gov.cn)
打勾后转换数据就可以抓取数据,然后需要对抓取的数据进行清洗
豆瓣读书 (douban.com)
使用示例添加表时可能会有很多不需要的数据,可以先把数据全部抓取之后,数据清洗时再找到自己想要的。
网易严选 - 以严谨的态度,为中国消费者甄选天下优品
搜索口罩,在网页空白处右键选择【审查元素】,不同浏览器可能显示的不一样,没有【审查元素】可以点击【检查】
选择XHR,按F5刷新页面。
将请求URL复制到PowerBI获取Web数据,出现search表,点击【data】旁边的【record】
点击【到表】转换到查询表中
图书畅销榜-近24小时畅销书排行榜-当当畅销图书排行榜 (dangdang.com)
抓取第一页数据
根据页码参数设置自定义函数,在PQ高级编辑器输入 (p as number)as table =>
并把LET后面第一行的网址中,&后面的“1"改为 (Number.ToText(p))
批量调用自定义函数
左侧右键【新建查询】【空查询】 ,选择要抓取的页数,这里只抓取前三页
要进行数据的分析,首先必须要先获得想要的数据,数据的获取可以从内部进行获取,也可以从外部进行获取。
内部获取可以通过从公司数据库中直接调取想要的数据或者通过对日志、文档、问卷的收集整理来获取。
这里我们简单学习下数据库的知识和操作方式,掌握通过数据库获取想要的数据。
Navicat Premium是一套多连接数据库开发工具,让你在单一应用程序中同时连接多达七种数据库;MySQL、MariaDB、MongoDB、SQL Server、sQLite、Oracle和PostgresQL,可一次快速方便地访问所有数据库。
Navicat | 支持 MySQL、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理
数据库是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里面有很多字段。字段一字排开,对数据就一行一行的写入表中。数据库的表,在于能够用二维表现多维的关系。如:ORACLE、DB2、MYSQL、SYBASE、MSSQLSERVER等。传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
数据仓库是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大的多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策;数据仓库系统的主要应用主要是OLAP(ON-LINE ANALYTICAL PROCESSING),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
基本每家电商公司都会经历,从只需要业务数据库到要数据仓库的阶段。
第一阶段:电商早期启动非常容易,入行门槛低。找个外包团队,做了一个可以下单的网页前端+几台服务器+一个MySQL,就能开门迎客了。这好比手工作坊时期。
第二阶段:流量来了,客户和订单都多起来了,普通查询已经有压力了,这个时候就需要升级架构变成多台服务器和多个业务数据库(量大+分库分表),这个阶段的业务数字和指标还可以勉强从业务数据库里查询。初步进入工业化。
第三个阶段:一般需要3-5年左右的时间,随着业务指数级的增长,数据量的会陡增,公司角色也开始多了起来,开始有了CEO、CMO、CIO,大家需要面临的问题越来越复杂,越来越深入。高管们关心的问题,从最初非常粗放的:“昨天的收入是多少”、“上个月的PV、UV是多少”,逐渐演化到非常精细化和具体的用户的集群分析,特定用户在某种使用场景中,例如 “20~30岁女性用户在过去五年的第一季度化妆品类商品的购买行为与公司进行的促销活动方案之间的关系”。
举例解释
这类非常具体,且能够对公司决策起到关键性作用的问题,基本很难从业务数据库从调取出来。原因在于:业务数据库中的数据结构是为了完成交易而设计的,不是为了而查询和分析的便利设计的。
业务数据库大多是读写优化的,即又要读(查看商品信息),也要写(产生订单,完成支付)。因此对于大量数据的读(查询指标,一般是复杂的只读类型查询)是支持不足的。
而怎么解决这个问题,此时我们就需要建立一个数据仓库了,公司也算开始进入信息化阶段了。数据仓库的作用在于:数据结构为了分析和查询的便利;
只读优化的数据库,即不需要它写入速度多么快,只要做大量数据的复杂查询的速度足够快就行了。那么在这里前一种业务数据库(读写都优化)的是业务性数据库,后一种是分析性数据库,即数据仓库。
在数据清洗中,几乎可以导入现在所有主流的数据形式,如XLS、TXT、CSV、MYSQL、ACCESs、ORACLE等。在数据清洗中可以导入的数据形式越多,兼容性越好,那就说明可以采用的数据源就越丰富,这样就有利于我们获得更多想要的数据,为数据清洗提供更多的数据源。
EXCEL是曰常办公使用最多的软件之一,保存的文件格式有XLS和XLSX两种,XLS和IXLSX都是EXCEL文件的常见格式。
1. 文件核心结构不同
XLS核心结构是复合文档类型的;
XLSX的核心结构是XML类型的结构,并且基于XML进行压缩(占用空间更小),所以也可以看做ZIP文件,将一个“.XLSX"文件的后缀改为ZIP后,用解压软件解压,可以看到里面有一个XML文件和文件的主要内容。
2. 版本不同
XLS是EXCEL2003及以前版本所生成的文件格式。XLSX是EXCEL2007及以后版本所生成的文件格式
3. 最大行列得数量不同
XLS最大只有65536行、256列。XLSX可以有1048576行、16384列。
4. 格式的转换
TXT是微软在操作系统上附带的一种文本格式,是最常见的一种文件格式,早在DOS时代应用就很多,主要存文本信息,即为文字信息,现在的操作系统大多使用记事本等程序保存,大多数软件可以查看,如记事本,浏览器等等。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
1、MYSQL:是一个关系型数据库管理系统,由瑞典MYSQL AB 公司开发,属于ORACLE 旗下BAI产品。MYSQL 是最流行的关系型数据库管理系统之一,在WEB 应用方面,MYSQL 是最好
的RDBMS (RELATIONAL DATABASE MANAGEMENT SYSTEM,关系数据库管理系统)应用软件之一 。
2、SQL SERVER:是MICROSOFT 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MICROSOFT WINDOWS 98 的膝上型电脑到运行
MICROSOFT WINDOWS 2012 的大型多处理器的服务器等多种平台使用。
3、ORACLE DATABASE: 是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它
是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
4、ACCESS:BAI 微软 发布的关系数据库管理DU 系统。它结合了MICROSOFTJET DATABASE ENGINE 和图形用户界面两项特点,是MICROSOFT OFFICE 的系统程序之一。ACCESS 数据库管理系统是MICROSOFT OFFICE 套件的重要组成部分,适用于小型商务活动,用以存贮和管理商务活动所需要的数据。ACCESS 不仅是一个数据库,而且它具有强大的数据管理功能,它可以方便地利用各种数据源,生成窗体(表单),查询,报表和应用程序等。
连接网页是指从网站上提取特定内容,而不需要请求网站的API 接口获取内容。“网页数据”作为网站用户体验的一部分,比如网页上的文字,图像,声音,视频和动画等,都算是网页数据。而我们进行数据分析,往往抓取的是网页中的数字数据,抓取下来作为我们数据分析的数据源使用。
从文件夹中快速导入多个文件的数据是我们常用的方式之一。这种方式可以快速实现,在导入多个数据文件的时候,直接对所有文件进行合并操作。
方法1:直接在UI界面就合并所有文件。这样处理的好处是简便快捷,然而坏处是有的用户无法接受PQ中自动生成的查询和函数,有种看上去比较杂乱的感觉。其次是自动合并的结果可能会出现问题。第三,如果文件很多,数据量超级大,会带来性能问题。
方法2:将单个文件的步骤转化成函数,再应用到其他文件。该方式虽然操作的步骤较多,但是因为它能避免一系列自动操作带来的问题,所以值得为之付出。
数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。
数据清洗从名字上也看的出就是把“脏”的“洗掉”。因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,这些错误的或有冲突的数据显然是我们不想要的,称为“脏数据”。我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗。而数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。数据清洗是与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。
数据清洗目的在于删除重复信息、纠正存在的错误,并提供数据一致性。
预处理阶段主要做两件事情:
一是将数据导入处理工具。比如将数据导入到POWERQUERY或者数据库中进行处理。
二是看数据。这里包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。
缺失值是最常见的数据问题。数据缺失一般分两种:一是行记录的缺失,这种情况又称为记录丢失;二是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺,不同的数据存储和环境中对于缺失值的表示结果也不同,例如,数据库中是NULL,PYTHON 返回对象是NONE,PANDAS或NUMPY 中NAN(值得注意的是,在极少数状态下,缺失值也会使用空字符串来代替,但空字符串绝对不同于缺失值)。
处理缺失值也有很多方法,一般可以按照以下四个步骤进行:
① 确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略。
② 去除不需要的字段:这一步很简单,直接删掉即可,强烈建议做好备份工作。
③ 填充缺失内容:某些缺失值可以进行填充,方法有以下三种:以业务知识或经验推测填充缺失值;以同一指标的计算结果(均值、中位数、众数等)填充缺失值;以不同指标的计算结果填充缺失值。
④ 重新取数:如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。
如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题。
简单来说,格式内容问题有以下几类:
① 时间、日期、数值、全半角等显示格式不一致。这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。
② 内容中有不该存在的字符。某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。
③内容与该字段应有内容不符。姓名写了性别,身份证号写了手机号等等,均属这种问题。但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。
格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上,比如跨表关联或VLOOKUP失败(多个空格导致工具认为“张晓明"和"张 晓 明"不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了等)。
这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏。
具体工作一般涉及:
① 重复数据的处理:包括检查重复数据,去除重复数据。
② 去除不合理数据:比如有人在进行表格填写的时候随意填表,造成年龄200岁,年收
入100000万(估计是没看见"万"字),电话号码输入成10位数等等,这种的就要么删掉,要么按缺失值处理。
③ 修正矛盾的数据内容。如有些字段是可以互相验证的,举例:身份证号是
1101031980XXXXXXXX,然后年龄字段填18岁,这样可以认为这2个字段中至少有一个字段填写错误了。
5. 去除不需要的数据
删除不需要的字段看起来简单,但是实际操作起来也会有不少问题的出现。
① 把看上去不需要但实际上对业务很重要的字段删了;
② 某个字段觉得有用,但又没想好怎么用,不知道是否该删;
③看错导致删错字段。
如果数据量没有大到不删字段就没办法处理的程度,那么能不删的字段尽量不删。另外,请勤备份数据。
6. 关联性验证
在EXCEL中第一行为标题行,第二行则为数据。但是在PB中第一行开始就是数据记录,而标题则是在数据之上的。
将EXCEl数据直接导入PowerBI ,标题行在第一行。点击【主页】-【将第一行用作标题】。PowerBI 不支持撤销键CTRL+Z,但是可以在右侧【查询设置】-【应用的步骤】中选择回到相应的步骤。
数据主要类型有:文本型、数字型、日期型、布尔类型。
可以在【主页】-【转换】-【数据类型】查看当前列的数据类型。点击【数据类型】或者选中列后右键选择【更改类型】,替换当前转换,将整数型改为日期型。列标题前的小图标直观地显示了当前列的数据类型。
在导入数据后,有可能会出现NULL或者ERROR值的情况存在。选中列右键【删除错误】,会将错误的行删掉。
在删除重复项中需要注意的是要确定好删除的是某一字段或者某几个字段的相同数值还是整表中的项目记录。根据选中的字段不同,删除重复项的操作结果也是不相同的。
选中整张表右键【保留重复项】将显示完全一样的行,即所有列的值都相等。
选中某一列或多列右键【删除重复项】,对于所选列的值完全一样的行,只会保留一行,其余重复的行将会被删除。
填充可向上或者向下填充。
EXCEL也可以进行数据的填充,但是操作相对复杂。在EXCEL中填充数据要先查找空值,然后在输入其上面或者下面单位格中的内容,然后在通过CTRL+ENTER 组合键来实现填充。
选择【转换】-【填充】-【向上或向下】。
PowerBI 的提取可以按照长度、首字符、范围来提取。提取功能用来处理身份证号信息尤为方便,(EXCEL则需要繁琐很多)。但是需要注意,在对字符串由左往右计数的时候,EXCEL是从1开始计数的,而PowerBI 则是从0开始计数的。
【转换】-【提取】是在原来的列内改变值,而【添加列】-【提取】是原来的列不变,在后面新增修改后的新列。
转置的时候只转置数据的部分,所以在操作的时候需要注意将标题进行下降到数据区域。
在格式中可以调整英文字母的大小写以及首字母大写、删除文本的前后空格(文本中的空格可以用替换方法来删除),还可以添加前缀以及后缀。
【转换】-【文本列】-【格式】-【修整】删除所选列每个单元格中的前导空格和尾随空格。中间的空格可以选择替换【转换】-【任意列】-【替换值】。
可以像EXCEL一样,对数据进行有效排序。
拆分通常可以按分隔符、按固定字符和位置拆分。拆分和合并为互逆的操作,但是拆分的功能更丰富, 操作模式更多样化。
【主页】-【拆分列】-【按分隔符】/【按字符数】/【按位置】
选中列右键【合并列】
追加查询纵向的汇总多张表,可以追加到新表或者追加到某一张表数据后。追加中相应的表字段没有值的情况下,则新表内自动填充NULL。
【加载】将数据加载到Power BI Desktop 数据下面;【转换数据】进入PQ编辑器。
将每张表标题提升之后,再进行追加,【主页】-【组合】-【追加查询】,若选择【将查询追加为新查询】,将结果追加到新表;若选择【追加查询】将结果追加到当前表。
横向的汇总多张表,与EXCEL中的VLOOKUP相似。要合并查询则需要两张表之间有相互关联的字段。
【主页】-【组合】-【合并查询】,合并查询相比较追加查询复杂,有6种联接种类模式可选,操作时,选择联接的种类要视具体案例的实际需求为准。
在PQ中使用的是M函数,而PB还有另外一套体系,即是DAX函数。
let...in... 结构,let 用于封装计算结果,并为计算结果命名,in 用于显示结果。例:
let
Source = Text.Proper("hello world")
in
Source
解释:通过let语句将Text Proper("helloworld")函数的计算结果封装到名叫Source的变量中,再通过in语句显示Source变量的内容"hello world"。
函数名= (参数1,参数2,参数..... =>函数运算表达式
通过调用函数得到的函数返回值称为函数值。例:
let
MyFunction = (parameter1, parameter2) =>(parameter1 + parameter2)/2
Final = MyFunction(2,4)
in
Final
解释:以上代码执行结果为3,先在let 中创建名为MyFunction 的自定义函数,函数有parameter1 和parameter2 两个参数,函数的运算表达式为(parameter1 + parameter2)/2 ,之后在let中使用2与4两个参数调用MyFunction 函数,MyFunction 函数将运算结果返回给变量Final,最后在in中显示Final变量的内容3。
要查看M函数则可以打开高级编辑器。有了M函数,PQ的数据处理具有很强的可读性和可移植性。
如果我们不通过点击菜单栏功能区中的按钮,可以直接在编辑器中进行M语言的编写。
数据评估的指标大致有:
依据以上指标,我们可以在现实工作中,针对不同的信息系统与需求做出定量的数据质量评估,也可根据实际情况,在评估执行中进行取舍。
数据的审计要满足: