分析需求的数据化
进行商业项目的数据分析与可视化设计时,一切都以数据为基础和依据,通过对数据获取后进行清洗后进行建模分析并最终形成可视化效果。
数据描述
数据从来源上区分的话可以分为内部数据和外部数据两种。
内部数据
一般包括业务数据、监控数据和项目知识库数据等,如电商平台中的经营数据,销售数据,用户数据,财务数据等,可以利用这些数据进行分析来判断一个公司发展的健康情况。
外部数据
对于数据分析应用来说,数据源是很多企业或是分析师非常苦恼的问题,由于缺乏丰富且高质量的数据,我们很难达到想要的数据分析效果。要解决这一问题,除了挖掘内部数据之外,一个行之有效的方法就是采用外部数据。但是尽管外部数据非常流行,也具有重要的意义,但我们依然要注意,没有经过审查的数据或是低质量的数据会给数据洞察带来难以不利甚至是损害。所以,企业需要围绕购买、审查数据建立一套合适的机制,它涵盖数据来源确定、数据质量审核、数据清洗等步骤。
逻辑描述
对数据进行逻辑描述时可把数据分为表态数据和动态数据两种。
进行描述时应把各数据元素逻辑地分成若干组,例如函数、源数据或对于其应用更为恰当的逻辑分组。给出每一数据元的名称(包括缩写和代码)、定义(或物理意义)度量单位、值域、格式和类型等有关信息。
表态数据
表态数据就是所谓的静态数据,指在运行过程中主要作为参考的数据,它们在很长的一段时间内不会变化,一般不随运行而改变。
动态数据
动态数据包括所有在运行中要不断或者在特定的条件下而发生变化的数据,以及在运行中要输入、输出的数据。
数据词典
对平台中所出现的各个实体的属性进行整理,使其形成数据词典,以此可以来作为后继研发过程中数据结构设计、数据库设计、数据库表结构设计的主要参考来源;并说明对数据要求的制约。逐条列出对进一步扩充或使用方面的考虑而提出的对数据要求的限制(容量、文卷、记录和数据元的个数的最大值)。对于在设计和开发中确定是临界性的限制更要明确指出。
数据源前期准备
PowerBI获取外部数据
要进行数据的分析,首先必须要先获得想要的数据,数据的获取可以从内部进行获取,也可以从外部进行获取。
外部获取可以通过搜索数据、利用爬虫、从合作方购买/交换数据等方式获得。
这里我们学习外部数据最常用的方式,通过抓取网页端数据。
方法一:直接抓取表格数据
国家统计局 (stats.gov.cn)
统计数据_上海市统计局 (sh.gov.cn)
打勾后转换数据就可以抓取数据,然后需要对抓取的数据进行清洗
方法二:使用示例抓取数据
豆瓣读书 (douban.com)
使用示例添加表时可能会有很多不需要的数据,可以先把数据全部抓取之后,数据清洗时再找到自己想要的。
方法三:抓取JSON格式
网易严选 - 以严谨的态度,为中国消费者甄选天下优品
搜索口罩,在网页空白处右键选择【审查元素】,不同浏览器可能显示的不一样,没有【审查元素】可以点击【检查】
选择XHR,按F5刷新页面。
将请求URL复制到PowerBI获取Web数据,出现search表,点击【data】旁边的【record】
点击【到表】转换到查询表中
方法四:批量抓取数据
图书畅销榜-近24小时畅销书排行榜-当当畅销图书排行榜 (dangdang.com)
抓取第一页数据
根据页码参数设置自定义函数,在PQ高级编辑器输入 (p as number)as table =>
并把LET后面第一行的网址中,&后面的“1"改为 (Number.ToText(p))
批量调用自定义函数
左侧右键【新建查询】【空查询】 ,选择要抓取的页数,这里只抓取前三页
展开111就可显示所有数据,如果数据不对,可以尝试刷新
MySQL 内部获取
要进行数据的分析,首先必须要先获得想要的数据,数据的获取可以从内部进行获取,也可以从外部进行获取。
内部获取可以通过从公司数据库中直接调取想要的数据或者通过对日志、文档、问卷的收集整理来获取。
这里我们简单学习下数据库的知识和操作方式,掌握通过数据库获取想要的数据。
可视化连接软件NAVICAT
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岁女性用户在过去五年的第一季度化妆品类商品的购买行为与公司进行的促销活动方案之间的关系”。
举例解释
这类非常具体,且能够对公司决策起到关键性作用的问题,基本很难从业务数据库从调取出来。原因在于:业务数据库中的数据结构是为了完成交易而设计的,不是为了而查询和分析的便利设计的。
业务数据库大多是读写优化的,即又要读(查看商品信息),也要写(产生订单,完成支付)。因此对于大量数据的读(查询指标,一般是复杂的只读类型查询)是支持不足的。
而怎么解决这个问题,此时我们就需要建立一个数据仓库了,公司也算开始进入信息化阶段了。数据仓库的作用在于:数据结构为了分析和查询的便利;
只读优化的数据库,即不需要它写入速度多么快,只要做大量数据的复杂查询的速度足够快就行了。那么在这里前一种业务数据库(读写都优化)的是业务性数据库,后一种是分析性数据库,即数据仓库。
数据的导入
导入Excel文件数据
在数据清洗中,几乎可以导入现在所有主流的数据形式,如XLS、TXT、CSV、MYSQL、ACCESs、ORACLE等。在数据清洗中可以导入的数据形式越多,兼容性越好,那就说明可以采用的数据源就越丰富,这样就有利于我们获得更多想要的数据,为数据清洗提供更多的数据源。
EXCEL是曰常办公使用最多的软件之一,保存的文件格式有XLS和XLSX两种,XLS和IXLSX都是EXCEL文件的常见格式。
XLS与XLSX区别
1. 文件核心结构不同
XLS核心结构是复合文档类型的;
XLSX的核心结构是XML类型的结构,并且基于XML进行压缩(占用空间更小),所以也可以看做ZIP文件,将一个“.XLSX"文件的后缀改为ZIP后,用解压软件解压,可以看到里面有一个XML文件和文件的主要内容。
2. 版本不同
XLS是EXCEL2003及以前版本所生成的文件格式。XLSX是EXCEL2007及以后版本所生成的文件格式
3. 最大行列得数量不同
XLS最大只有65536行、256列。XLSX可以有1048576行、16384列。
4. 格式的转换
- 任何能够打开“.XLSX”文件的文字处理软件都可以将该文档另存为“.XLS”文件。
- 如果要将XLSx格式的文件转换为.XLS格式的一定要注意将文件转换为XLS格式之后只保存256列,其余的列都会被删掉。
导入文本文件数据
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 接口获取内容。“网页数据”作为网站用户体验的一部分,比如网页上的文字,图像,声音,视频和动画等,都算是网页数据。而我们进行数据分析,往往抓取的是网页中的数字数据,抓取下来作为我们数据分析的数据源使用。
网页抓取数据的方式
- 直接抓取网页表格数据
- 使用示例功能抓取数据
- 抓取网页中JSON格式的数据
- 使用自定义函数批量抓取网页数据
获取其他数据
获取其他数据的方式
- 从文件夹中获取数据
- 利用R、PYTHON脚本获取数据
- 导入XML中的数据
- 导入SHAREPOINT中的文件的元数据与链接等
文件夹中快速导入多个文件
从文件夹中快速导入多个文件的数据是我们常用的方式之一。这种方式可以快速实现,在导入多个数据文件的时候,直接对所有文件进行合并操作。
方法1:直接在UI界面就合并所有文件。这样处理的好处是简便快捷,然而坏处是有的用户无法接受PQ中自动生成的查询和函数,有种看上去比较杂乱的感觉。其次是自动合并的结果可能会出现问题。第三,如果文件很多,数据量超级大,会带来性能问题。
方法2:将单个文件的步骤转化成函数,再应用到其他文件。该方式虽然操作的步骤较多,但是因为它能避免一系列自动操作带来的问题,所以值得为之付出。
数据的清洗
数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。
数据清洗从名字上也看的出就是把“脏”的“洗掉”。因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,这些错误的或有冲突的数据显然是我们不想要的,称为“脏数据”。我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗。而数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。数据清洗是与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。
数据清洗目的在于删除重复信息、纠正存在的错误,并提供数据一致性。
数据清洗的流程
1. 预处理阶段
预处理阶段主要做两件事情:
一是将数据导入处理工具。比如将数据导入到POWERQUERY或者数据库中进行处理。
二是看数据。这里包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。
2. 去除/补全有效缺失的数据
缺失值是最常见的数据问题。数据缺失一般分两种:一是行记录的缺失,这种情况又称为记录丢失;二是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺,不同的数据存储和环境中对于缺失值的表示结果也不同,例如,数据库中是NULL,PYTHON 返回对象是NONE,PANDAS或NUMPY 中NAN(值得注意的是,在极少数状态下,缺失值也会使用空字符串来代替,但空字符串绝对不同于缺失值)。
处理缺失值也有很多方法,一般可以按照以下四个步骤进行:
① 确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略。
② 去除不需要的字段:这一步很简单,直接删掉即可,强烈建议做好备份工作。
③ 填充缺失内容:某些缺失值可以进行填充,方法有以下三种:以业务知识或经验推测填充缺失值;以同一指标的计算结果(均值、中位数、众数等)填充缺失值;以不同指标的计算结果填充缺失值。
④ 重新取数:如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。
3. 去除/修改格式和内容错误的数据
如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题。
简单来说,格式内容问题有以下几类:
① 时间、日期、数值、全半角等显示格式不一致。这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。
② 内容中有不该存在的字符。某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。
③内容与该字段应有内容不符。姓名写了性别,身份证号写了手机号等等,均属这种问题。但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。
格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上,比如跨表关联或VLOOKUP失败(多个空格导致工具认为“张晓明"和"张 晓 明"不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了等)。
4. 去除/修改逻辑错误的数据
这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏。
具体工作一般涉及:
① 重复数据的处理:包括检查重复数据,去除重复数据。
② 去除不合理数据:比如有人在进行表格填写的时候随意填表,造成年龄200岁,年收
入100000万(估计是没看见"万"字),电话号码输入成10位数等等,这种的就要么删掉,要么按缺失值处理。
③ 修正矛盾的数据内容。如有些字段是可以互相验证的,举例:身份证号是
1101031980XXXXXXXX,然后年龄字段填18岁,这样可以认为这2个字段中至少有一个字段填写错误了。
5. 去除不需要的数据
删除不需要的字段看起来简单,但是实际操作起来也会有不少问题的出现。
① 把看上去不需要但实际上对业务很重要的字段删了;
② 某个字段觉得有用,但又没想好怎么用,不知道是否该删;
③看错导致删错字段。
如果数据量没有大到不删字段就没办法处理的程度,那么能不删的字段尽量不删。另外,请勤备份数据。
6. 关联性验证