首页
友情链接
Search
1
代码实践|通过简单代码来回顾卷积块的历史
483 阅读
2
点亮新基建数字版图——大湾区数据中心巡展即日开启
432 阅读
3
D3.js新手到专家:使用D3.js进行交互式可视化的完整学习路径
408 阅读
4
如何为学习,实验和教学生成有意义的人造数据集?
380 阅读
5
t检验用不了?别慌,还有神奇的非参数检验
364 阅读
分类阅读
数据可视化
商业智能
大数据技术
数据挖掘
数据分析
统计学
大数据
人工智能
软件工具
外文翻译
人物观点
行业资讯
登录
Search
标签搜索
大数据
数据可视化
统计学
数据分析
机器学习
统计基础
R语言
统计知识
数据图表
商业智能
Python
机器算法学习
算法学习
数据可视化工具
数据百科
ggplot
人工智能
深度学习
数据挖掘
BI
商业数据分析网
累计撰写
492
篇文章
累计收到
0
条评论
首页
栏目
分类阅读
数据可视化
商业智能
大数据技术
数据挖掘
数据分析
统计学
大数据
人工智能
软件工具
外文翻译
人物观点
行业资讯
页面
友情链接
搜索到
9
篇与
数据挖掘
的结果
2019-12-02
BI(商业智能)的未来?
商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。商业智能作为一个工具,是用来处理企业中现有数据,并将其转换成知识、分析和结论,辅助业务或者决策者做出正确且明智的决定。是帮助企业更好地利用数据提高决策质量的技术,包含了从数据仓库到分析型系统等。百度百科认为BI包括三个层级:数据报表、数据分析和数据挖掘。数据报表:传统的报表系统技术上已经相当成熟,大家熟悉的Excel、水晶报表、FineReport、Reporting Service等都已经被广泛使用,其实很多公司不需要要什么专业化的报表工具,自己定制也足够OK。数据分析:报表系统更多的是呈现数据,但如果你想更多了解数据之间的关系,发现一些异常,一般只能靠定制化方案解决,比如取个数,然后有“好事者”觉得分析的模式还是有规律可循,因此提出了OLAP的概念,希望用多维钻取、关联的方式来帮助业务人员更方便的探索数据的内含规律,同时通过可视化配套技术来展现分析的结果,诸如仪表盘、大屏啥的,这就是所谓的数据分析工具,也是当前BI工具的主流。数据挖掘:数据挖掘则希望能超越人的限制,针对特定的数据、特定的问题,选择一种或者多种挖掘算法,找到数据下面隐藏的规律,这些规律往往被用来预测、支持决策。但笔者认识的大多数BI,其实仅包含数据报表和数据分析,数据挖掘的一些东西可以集成到数据分析工具中,但大多数情况是没有的。现在BI工具发展的不错,诸如Power BI 和 Tableau等都是不错的产品,每年有几十个点的增长率,但从笔者的使用经历看,或者站在一个大厂的角度看,BI这个20年前提出的概念,近些年来其实并没有获得突破性的进展,起码在数据转化为知识的过程中,当前的BI工具能起到的作用是极其有限的。这也是为什么会经常会听到这样的对BI的质疑:你不用讲那么多,你直接告诉我这个东西有什么用,能解决我们什么问题,能不能帮我们企业赚钱….。BI也许会这么解释:业务分析需要由专业的业务人员且具备数据分析思维意识的人员来推进和主导,再辅助合适的数据分析、挖掘或统计工具,这样商业智能BI的价值才能得到充分的发挥,数据的价值也才会得到充分的体现。但跟机器学习和人工智能中的‘’智‘’相比,BI商业智能中的‘’智‘’,实在是弱了点。所以BI工具能卖的动,一方面得益于数字化产业的加速,另一方面也跟企业数据意识的崛起有关,大量中小企业都希望用更为自动化的报表形式来提升看数的效率,但大厂、运营商等也许早就过了这个阶段,现在的BI工具对它们来说,缺乏进一步的吸引力。从可视的角度看,BI工具的边际效益并不高,10年多前我看到的可视化和当前我看到的可视化,并没有有多大的进步,或者对于分析有更大的价值,当然大屏除外。从灵活的角度看,SQL、Python等解释性语言的普及度越来越高,大量的业务人员开始掌握这些简单的语言来进行定制化的分析,固定模板和样式的BI工具就显得相对弱了。从分析的角度看,既然BI更多是验证业务人员的假设,其实EXCEL性价比已经很高了,至于EXCEL依赖的数据源,靠定制化的取数也是可以的,这在当前很多企业中是主流的支撑模式。从报表的角度看,拥有开发能力的大厂自己定制报表系统已经不是事了,大数据起来后,大厂更多关注的是报表的性能和适配自己的技术生态,而不是简单的便捷和好看。那么,未来的BI到底长啥样?如果我们超越当前主流BI工具定义的范畴,也许可以从大厂的实践获得一些启示,至少有三点是值得思考的。1、前后端一体化大数据在带来海量数据的同时,也带来了数据处理技术的革命,其对BI的影响是深远的,主要有三点:第一、大数据高价值、维度多、价值密度低的特点,使得多维分析的价值突然提升了,在小数据时代,多维分析其实有点聊胜于无,但现在的驱动力强多了。第二、大数据带来了数据处理技术的革命,比如hadoop用多样化的技术引擎来满足各类数据分析场景的诉求,但同时也大幅提升了数据分析的门槛,业务人员会突然发现很难直接操作hadoop。第三、现有的BI工具(如Tableau,Microstrategy等)往往存在很大的局限,如难以水平扩展、无法处理超大规模数据等等问题,这些不适配降低了大数据引擎进步带来的价值。因此,BI工具如何去适配这些大数据处理和分析引擎就成了一个机遇,现在Apache Kylin多维数据库很火,就是因为它成为了新时期BI工具和大数据后台引擎的连接器,其针对海量数据的OLAP分析的性能很高,为BI提供了面对大数据时缺失的能力,阿里的AnalyticDB也是类似的。业务人员对可视化也许会审美疲劳,但其对于数据分析速度的要求是始终的,在相当长的时间内,因为业务人员自己做不动,开发人员做的成本又比较高(当然大厂可以自己做),只要BI能衔接到这些大数据引擎,就会产生1+1>2的效果。可以肯定的是,BI通过全新的大数据技术手段来提升产品的竞争力会是一个趋势。2、移动端的场景化BI产品的移动化很久以前就有产品了,但奇怪的是,它们并没有像移动互联网一样快速普及,起码速度不够快,为什么?当笔者第一次接触到这些移动化的BI产品时,就发现把报表系统原封不动的搬到手机上体验是不行的,光是选择指标和维度就显得有些繁琐了,小屏看报表问题很多。而且应用的场景似乎也出现了点问题,在碎片化的时间,人们似乎没有心思去研究报表,更不用说钻取分析了,有那时间,还不如坐在电脑前直接看大屏的报表,这是很尴尬的地方。因此,移动端的BI也许只能承载轻量的随时随地看数的需求,未来的一个趋势也许就是场景化,实时化。场景化就是针对特定的事件提供针对性的看数方案,比如KPI是一种场景,双11也是一种场景,但双11你给老板看的报表和指标跟平时的KPI是完全不同的,你要定制化这些指标,显性化展示指标,需要补充一些跟这个场景相关的特定要素。以下是校园营销的移动端BI示意。既然是场景化的,必然在特定时机会有看数的诉求,这个时候就有数据实时性的要求,比如双11就是实时的数据展现,我们在做校园营销的时候,就需要针对每个校园进行进行实时受理数据的比对,以便及时发现问题。由于场景化的要素不确定,决定了不大可能用标准的BI工具来实现,无论是实时的接入能力还是组装场景的能力。因此,现在一般用定制化的方式来解决,但考虑到场景是有时效性的,也许生命周期只有几天,定制化的成本相对就会比较高,“搭积木方式”的BI工厂也许就是一种解决方案。其实,无论是小屏、中屏、大屏,我们都有这种诉求,也许,这代表了一种趋势。3、自助式的分析10多年前来我们做了很多定制化分析的系统,现在留下来还在发挥作用的,就是自助取数。由此延伸出来的自助概念很好,因为它改变了数据分析支撑的模式。以前基本上都是IT业务部门提需求,IT部门负责制作相应的报表,这样的流程会很长,响应的及时性也不够,那能不能提供给业务部门一些自助的工具让它自己来DIY数据呢?比如基于指标灵活的组装形成报表,这就是当前BI提倡的自助分析。但我们以前的自助报表系统却没有存活下来,为什么?因为要达到自助的目标,不仅仅是提供一套灵活的报表发布工具那么简单,而是要提供从数据采集、处理、发布、调度、数据管理等的一整套数据解决方案,否则,你的自助分析的应用范围就会受到极大的限制。举个例子,假如企业没有好用的数据字典,业务人员连数据是啥意思都不清楚,自助分析也就无从谈起了。现在的很多BI自助工具所以能玩的转,往往是因为面对的数据不多,维度很少,指标有限,反正就是固定的维度和指标的组装,那是没问题的,但这种理想的场景在大企业其实很少。现在数据中台所以能这么火,就是因为它对前端的赋能其实是一个系统工程,要考虑数据的方方面面,比如数据标准化,只有在这个基础上的自助分析才是有生命力的。因此,假如一个企业的自助分析够做的很好,那数据管理水平也是相当高的。BI工具的成功,从来就不是简单的工具成功,而是跟这个企业的发展阶段、机制流程、人员素质、数据基础、平台能力分不开的。无论如何,自助分析会是个趋势,但需要数据中台为其背书。这篇文章写到一半其实就有点写不下去,因为发现自己对于最新的BI产品的进展理解不够,更多的还是从自己的实际工作来理解印象中的BI,个人色彩浓重了点,权当抛砖引玉,各大BI厂商就不要来“锤”我了。本文为专栏文章,来自:傅一平,内容观点不代表本站立场,如若转载请联系专栏作者 。
2019年12月02日
120 阅读
0 评论
0 点赞
2018-09-13
为什么说Python是Fintech与金融变革的秘密武器
大数据文摘出品编译:Travis、胡笳、笪洁琼、夏雅薇人生苦短,不止程序员,Python正在吸引来自金融领域大佬们的青睐目光。金融科技的风口下,无数传统金融人都想从中掘一桶金。你如何找到自己的机会并在金融科技的风口中起飞?这项新技术风靡全球,但其复杂性难以言喻。首先,你需要熟悉国家法规,同时与不同服务和机构的合作,连接银行API;其次你需要征服用户的心和信任。为了实现这些目标,你的产品需要兼具高级别安全性,功能性并且贴合业务需求。所有这些意味着你需要最独特合适的技术,来提供值得信赖的解决方案。无论背景(市场)如何,每个人都希望自己的钱安全无虞。人们孜孜不倦寻找一种可以持续的金融技术,本文从金融科技行业的角度分析了Python受欢迎的原因。值得注意的是,现在Python已成为世界上最流行的编码语言:开发栈快,语言简单,适合做数据分析,开放库利于API整合等都是它的优势。矛盾的金融时代现代金融世界由两个仍然共存的矛盾体组成:曾几何时,千禧一代掌握了非接触式支付,使用在线银行业务和各种数字金融服务,在生活中自由交易。轻视老派官僚主义的新技术,建立了千禧一代的新世界;另一个部分则是古老的传统金融世界。令人失望的是,这是一台非常古老而生锈的机器,不能随心所欲地停下来。即使它接受新技术及其对金融的影响,传统的金融体系仍然不认为新技术是一个威胁,也不是一个有价值的竞争对手。这种不可动摇的机器会在七国集团(G7)最发达的国家找到。所有沉积资金都聚集在那里,同时也聚集着大多数准备运营高科技创业公司的人。改变这样的传统金融系统将是一个巨大的挑战。例如,德勤2017年的统计数据显示,与金融技术相比,G7的习惯与世界其他地方相反。德勤研究人员指出:令人惊讶的是,在移动支付方面,40%的美国高管认为其对自己行业的影响很小甚至没有影响。在一个规模相对小的抽样调查中,17家美国银行中有7家(约占41%)认为移动钱包和其他支付技术没有影响他们,而36个非银行金融单位中有14个(约占37%)持相同意见。发展中国家则呈现出截然不同的景象。没有传统金融部门的强硬统治,这为金融科技的成长和发展提供了更多空间。也为人们提供了更多机会和方式,可以轻松地与发达国家合作并获得更安全的回报。老实说,这是金融科技最有吸引力的地方——它消除了金融边界!新兴技术的使用:被Fintech攻占的金融世界图3:使用新兴技术的情况:G7与其他国家数据来源:GDSI增长和战略调查问卷,德勤金融中心七国集团似乎仍然对金融科技持怀疑态度,但是实际上技术在不断改变金融。问题在于这个世界上的一切都变化很快,技术也是如此。它灵活,能够适应新用户的需求。但这正是千禧一代想要的:新的消费习惯,数字敏感度高,对网络产品的需求,所有这些都是新一代生活方式的一部分。他们不浪费任何时间,并要求全天候保持工作效率。这就是他们随时随地都重视财务自由的原因。据华尔街日报报道,支付的便利性吸引了那些对技术革新有需求并且生活忙碌的人。移动支付用户大多受过高等教育,并且全职工作,主要是男性,并且有非常活跃的金融行为。与非移动支付的用户相比,他们更有可能拥有银行账户,退休账户,拥有自己的房屋,以及利用汽车贷款和抵押贷款。相关链接https://blogs.wsj.com/experts/2018/06/07/the-uncomfortable-relationship-between-mobile-payments-and-financial-literacy/我们可以得出什么结论呢?华尔街日报的统计数据显示,移动支付的用户收入高于非移动支付用户,他们的交易活动活跃,懂得财务知识更多,他们使用更多种类的金融产品。与此同时,他们对自己的开支更加粗心,极有可能陷入债务。有时,他们甚至从退休账户中取钱出来。这需要全新的金融科技浪潮中产现出一个简单的工具,来帮助千禧一代管理他们的资金。尽管他们的收入和教育水平很高,但据报道,使用移动支付的千禧一代有更高的财务困境和管理不善的风险。我们的研究发现移动支付用户需要的不仅是移动交易。用户希望能从借助产品来管理短期债务和日常费用,这些将是金融科技产品未来的创新方向。金融业是一个对新客户需求极度敏感的行业。在数字化的时代更是如此。当同类产品变得过于普及和方便的时候,客户可能会不再使用你的产品服务。怎么防止这种情况呢?公司是否可以创造一款经得起时间考验的产品,陪伴年轻人的财务成长,持续给千禧一代提供服务?就像当前一些金融公司给年轻人提供产品一样。当然抵押贷款,投资和财富管理等金融分支机构也应特别谨慎地创造他们的产品。回到之前说的话题。为了生存,为了获得大量的追随者和依赖它的客户,公司的技术必须是独特,稳定,安全和定制的,以满足客户的需求。在这一点上,金融科技公司不可能避免得需要与传统的金融和国家机构整合。这就是为什么你必须首先确保合作能完美运行,并且你得在后者眼中看起来像是一个可靠的商业伙伴,他们使用你的技术,而不是别人的技术。可能最糟糕的是,他们抛弃你选择创造属于自己的技术!Python:Fintech产品的第一语言那么我们到底需要什么?一个足以对抗全球金融干扰压力的技术,且具有足够的灵活性来应对新世界的挑战与客户日益增长的需求。对于我们来说,使用Python和Django框架是一个非常好的选择,我们同时发现这个组合带给我们各种可能性。这里并非试图把Python作为所有问题的解决方案,但只想聊聊Python在金融产品方面的优势。1.使用Python/Django技术栈可以更快的推向市场。这很容易理解:通过Python/Django技术栈,你可以非常快速的构建产品(MVP:Model-View-Presenter),进而增加找到适合的产品/市场的机会。金融科技(Fintech)能够与传统银行和金融竞争和/或合作的唯一方式在于适应变化性与客户的需求,根据客户的想法提供增值服务并进行改进。你的技术必须足够灵活,并为众多的增值服务提供坚实的基础。Python/Django框架组合符合MVP规范的需求,并能够节省一定开发时间成本。它们的开发基本类似乐高一样——你不需要从头开始开发类似权限或用户管理这样的小模块。你只需要从Python库中 (Numpy,Scipy,Scikit-learn,Statsmodels,Pandas,Matplotlib,Seaborn,等)找到你需要的模块,用于构建自己的MVP。Django的另一个优点是在MVP架构开发阶段提供了简单的管理面板或CRM——它是内置的;你只需要在你的产品中简单设置。当然在MVP阶段,产品的功能并不完整,但你可以测试并轻松完善功能,因为Django非常灵活。在MVP架构完成后,此技术栈允许部分代码的调整。也就是说在你完成了MVP架构的功能后,既可以轻松的修改某些代码,也可以增加一些新代码,来满足产品功能的完美运行。千禧一代习惯在快节奏的世界中生活,他们需要全天候的提高工作效率。他们对其他人以及所使用的服务的期望在于,最大化的透明度与高质量的服务。这也是客户发展如此重要的原因——整整一代人都依赖与此。因此,越早地将产品推向市场,你就能越快地收集用户反馈并改进产品。通过Python开发金融产品可以帮助你更加轻松的完成整个流程。2.数学和经济学常用Python。很显然,正是因为有了那些使用Python计算算法和公式的数学家和经济学家,Fintech才会存在。类似R和Matlab语言在经济学家中很少使用,但Python相对而言是最常用的金融编程语言,并且是数据科学的“通用语言”。经济学家使用Python来进行计算,因此很明显将他们的代码与基于Python开发的产品整合起来会更容易。但有时即使只是用同一种语言编写的代码片段也很难集成,这也是为什么技术合作伙伴的存在和相互沟通至关重要。3.语法简单——协作更加轻松。大道至简。Python的简单性和易于理解的语法使得它非常清晰,每个人都可以快速上手。这也是我认为Python会成为“通用语言”只是时间问题。Python的创始者Guido van Rossum证实了我的想法,他将Python描述为“高级编程语言,其核心设计理念在于代码的可读性和允许程序员用几行代码表达思想的语法”。因此,Python的好处在于不仅对于技术专家很容易理解,连客户也很容易理解。开发过程中双方人员都可以掌握不同程度的技术理解。有了Python,工程师可以更轻松的解释代码,客户也可以更好的了解开发进展。看起来,这是个双赢的过程。正如经济学家谈及Python时所说的:Python语言的两个主要优点是其简单性和灵活性。它简单的语法和缩进格式使其易于学习、阅读和共享。它的忠诚追随者们,即Python编程高手(Pythonistas),已经上传了145,000个定制数据包到在线库中。这些数据包涵盖了从游戏开发到天文学等的所有内容,并且可以在几秒内完成安装,并应用在Python程序中。这也引出了下一要点。4.Python的开放库包括用于API集成的工具。感谢Python的开放库,你无须从头开发工具,并可以在最短时间内完成产品开发并分析大量数据。如果你处于MVP开发阶段,这些开放库可以为你节省大量的时间和金钱。正如我之前所提到的,Fintech产品需要与大量第三方产品进行集成。Python库可以帮助你的产品更加容易与其他系统通过不同的API(接口)集成。在金融方面,API可以帮助你收集和分析关于用户、房地产和机构的所需数据。例如,在英国,你可以通过API获取人们的信用记录,这也是进行深入金融操作的必经步骤。通过使用在线抵押贷款行业的API,你可以检查房地产数据,并验证某人的身份。最重要的是,你可以一键查询或过滤数据,而无需使用和组合不同的库/包来开发新的工具。以Django Stars(一家软件开发公司)为例,使用Django Rest架构来构建API或与外部API集成,同时使用Celery(Python 并行分布式框架)来完成队列或分发任务。5.Python流行度日益增长,人才储备充足。根据HackerRank2018开发者技能报告显示,Python成为编程人员需要学习的第二语言,并且是金融服务业以及其他发展行业的排名前三语言之一。这是很好的趋势,因为Python将继续发展,并有更多的专家参与进来,这些情况表明将有足够的人才会在未来能够继续开发和维护我们的产品。根据我们的Love-Hate指数,Python已经赢得了所有年龄段开发者的心。Python也是开发人员想要学习的最流行的语言,并且绝大多数人都知道它。—HackerRankPython的用途比你想象的要多:从传统软件类似web开发到最前沿技术,如AI。它兼具灵活性与功能多样性,并且拥有超过125,000个第三方Python库可以让你像乐高一样构建产品。它同时是数据分析的首选语言,这也让它对于商业等非技术领域具有吸引力,Python同时也是金融分析的最佳编程语言。再次强调,我并不是说Python是唯一的解决方案。我只是就我自己的经验而谈,Python非常成功。我发现Python与Django结合起来使用确实非常棒。这也是你构建Fintech产品所需要的——一个超级工具能够帮助你的产品赢得信赖,完全安全并且功能实用。遵守国家法律,完美与其他服务、机构以及银行API集成整合——所有这一切都需要关注软件的细节和生命周期,这样才能为未来的接管者——新的千禧一代所服务。继而登上顶峰,成为改变金融市场的人之一,或者更进一步,改变整个世界。独特、高效,以用户为导向,着眼未来做开发。这就是Python的全部意义之所在。相关报道:https://www.ft.com/content/1e2db400-ac2d-11e8-94bd-cba20d67390c本文为专栏文章,来自:大数据文摘,内容观点不代表本站立场,如若转载请联系专栏作者 。
2018年09月13日
125 阅读
0 评论
0 点赞
2017-01-11
数据可视化:手把手打造BI
本文是如何七周成为数据分析师的第六篇教程,如果想要了解写作初衷,可以先行阅读七周指南。温馨提示:如果您已经熟悉BI,大可不必再看这篇文章,或只挑选部分。我们上一篇数据可视化:教你打造升职加薪的报表教大家如何制作清晰美观的报表以及相应技巧,但是报表是结果的呈现,并不是数据分析的过程。数据分析师更多用到的报表是BI。BI全称商业智能(Business Intelligence),在传统企业中,它是一套完整的解决方案。将企业的数据有效整合,快速制作出报表以作出决策。涉及数据仓库,ETL,OLAP,权限控制等模块。今天的学习我们只着重于数据分析过程,使用Power BI打造数据分析师Dashboard报表。为了更好的学习和实践,我们依旧会使用数据分析:手把手教你Excel实战的数据进行操作。这是做出的简单作品。如果你还没有数据,请在会话页发送关键词「练习数据」获取下载地址。Power BI在微软官网有下载(注不注册无所谓的),只需要下载Desktop桌面操作版,大小约120MB。暂时只推出Win版本。大家如果在下载过程中出现CAB文件损坏错误,大概是某软哪方面又出错了,可以换浏览器下载,也可以下载中文繁体版。反正我是一直报错。为了方便大家偷懒,可以在会话页发送关键词「BI下载」获取官网下载地址。什么是Power BIBI工具主要有两种用途。一种是利用BI制作自动化报表,数据类工作每天都会接触大量数据,并且需要整理汇总,这是一块很大的工作量。这部分工作可以交给BI自动化完成,从数据规整、建模到下载。另外一种是使用其可视化功能进行分析,BI的优点在于它提供比Excel更丰富的可视化功能,操作简单上手,而且美观,如果大家每天作图需要两小时,BI会缩短一半时间。BI作为企业级应用,可以通过它连接公司数据库,实现企业级报表的制作。这块涉及数据架构,就不深入讲了。Power BI是微软家的。如果大家熟悉Excel,应该会知道微软推出的Power Query、Power Pivot、Power View和Power Map,是Excel上非常强大的四个插件。Power BI则是微软将它们作为集合推出。Power Query是用于数据提取、整合、搜索的插件。它偏向数据模型的建立,而不是单元格的使用。Power Pivot是数据透视表的高级应用,使用DAX能进行大量的科学计算。性能方面,比Excel函数要快两个量级,百万级的处理不成问题。Power View是图表的高级应用,实现了过滤、联动、拖拽等功能。Power Map是可视化地图。如果大家熟练掌握以上四个插件,那么在Excel上也能实现部分BI。毕竟Excel是企业中人手一款的工具,和BI相比有轻量级的好处,虽然数据分析师需要掌握的工具更多。BI的步骤市面上有很多丰富的BI工具,Tableau,QlikView,BDP等,各有侧重,也各有价格。但是操作过程都是相似的,大体分为五个步骤:数据源读取、数据清洗、数据关联、图表制作、Dashboard整合。熟悉了其中一个,再学会另外的就不难。因为我工作用的BI是私有化部署到服务器,直接连接生产环境的,演示不方便。所以才用Power BI演示,实际我也说不上熟练。数据源读取我们打开Power BI,它会让我们登录,不用管它。界面和Office软件比较接近。上面是操作工具项,左侧栏是导航栏。Power BI 的左侧导航栏对应三个模块:仪表板、报表和数据集。仪表板或报表需要数据才能操作,我们先读取数据集。点击工具栏的取得资料(奇怪的翻译)。Power BI支持各类丰富数据源(市面上绝大部分BI都支持,只是读取方式略有差异),除了Excel和CSV 文件,它还支持Acess、SQL数据库、Hadoop/HDFS、Spark、第三方API等。这是新手教程,连接CSV即可,选择载入练习数据DataAnalyst。这里可以针对数据编辑,先略过,选择载入。自动跳转到数据报表页,数据报表(Report)是数据规整和清洗过程。大家还记得实战篇中演示的数据清洗吗?之前我们体验了一遍Excel函数清洗的过程。这次需要用BI再进行一遍清洗。数据清洗是分析师最蛋疼且耗时持久的工作,没有之一。数据清洗Power BI有一个高级功能叫DAX(Data Analysis Expressions),它是整个 Power BI 使用的公式语言。DAX近似Excel函数(大多数第三方BI,函数均接近Excel),故它针对新手非常友好。如果大家已经熟悉Excel函数,上手速度会很快。基本上函数名字都一样,如果不熟悉,可以查阅官网提供的文档。我们先清洗报表中的薪水salery,和实战篇过程一样,需要将其拆分成两个新列,并且计算平均值。点击模型项的新建资料行(这里的翻译应该不对,应是column列,后文我都用列表示),此时新增加的列没有任何内容。我们需要做的操作就是以salery生成两列。这里需要用到DAX。当成函数使用它就行,不过Excel是单元格级别的引用,而DAX中的任何引用、计算、汇总等,都是以列为单位的。=\'Table Name\'[ColumnName]这是最简单的引用,Table Name是我们这张报表的名字,我载入的csv叫DataAnalyst,那么报表就叫做DataAnalyst,ColumnName是我们需要引用的列,名字叫做salary。下图公式就是范例。如果表名中有空格,需要加引号,如果没有则不需要。如果是跨表引用,TableName是必须的,否则只需要ColumnName。DAX支持自动填充,可以通过模糊输入+回车快速输入。我说过它近似Excel,那么Excel加减乘除的习惯可以直接使用在上面。=\'Table Name\'[ColumnName1]+\'Table Name\'[ColumnName2]*3接下来继续清洗步骤,我们查找k所在的字符串位置。=search(\"k\", DataAnalyst[salary],1)利用left函数截取工资下限。=left(DataAnalyst[salary],search(\"k\", DataAnalyst[salary],1)-1)搞定。资料行重命名为bottomSalery。接下来是工资上限topSalery,使用”-“截取的时候报错了。=search(\"-\", DataAnalyst[salary],1)检查一下发现原来是有“10K以上”这类字符串。DAX查找不到“-”,这时需要返回一个出错时表达的值。因为10k以上的描述无法确定工资上限,那么我们就把返回的值限定为bottomSalery。在这里请记住,DAX的容错性比Excel低,只要DAX中有一行返回Error,那么整列都是Error。我们需要用Iferror函数保证容错性。这里给出topSalary的计算,比较繁琐。topSalery = IFERROR(mid(DataAnalyst[salary],SEARCH(\"-\",DataAnalyst[salary],1)+1,LEN(DataAnalyst[salary])-SEARCH(\"-\",DataAnalyst[salary],1)-1),DataAnalyst[bottomSalery])之后新建一列使用(DataAnalyst[bottomSalery]+DataAnalyst[topSalery])/2 计算该岗位的平均工资。大家看到这里,是不是觉得DAX公式非常长?新手可以多增加辅助列来进行计算。Excel中有比较方便的分列功能,那么Power BI中是否拥有呢?答案是肯定的,右键点击列,选择编辑查询选项。这里依旧吐槽翻译。分割资料行就是我们熟悉的分列功能。选择自定义,用“-”即可完成分列(原始数据会被拆分,所以建议先复制一列)。实战篇提到过,我们的北京数据是有重复值的,那么我们通过positionId这职位的唯一标示,来删除重复项。右键点击移除重复项目即可。我们再看一下查询编辑的其他功能。分组依据可以认为是数据透视表。可以选择多个字段进行分组。对结果进行求和、计数等操作。如果是订单、用户行为、用户资料等大量数据,一般会以分组形式进行计算。不同分组字段,会生成不同的维度,像范例中的城市、工作年限,教育背景都是维度,也是图表的基础。如果生成的维度足够多,我们能利用维度组成数据模型,这是OLAP的概念。除此以外,也能利用过滤直接筛选数据。我们选择出含有数据分析、分析的数据。排除掉大数据工程师等干扰职位。这里支持多条件复杂逻辑筛选。到这里,我们已经完成实战篇中的清洗过程中,我这次简单化了。以上步骤都能通过右侧的套用步骤还原和撤销。这里不会出现bottomSalery这类列。之后选择工具栏的关闭并套用,报表数据就会更新。最后数据2300多行。通过数据查询和报表DAX公式,我们就能完成数据清洗和规整的步骤。主要思路是:移除重复值、过滤目标数据、清洗脏数据、数据格式转换。数据关联我们工作中会用到很多数据,不可能依靠一张表走天下。若是在Excel中,我们经常用Vlookup函数将多张表关联汇总。Power BI则用拖拽关联数据,更方便。一般是先关联再清洗。因为我的数据只有一张表,用不到关联,以官网截图为例。很简单,用拖拽将Product的manufactureId和Manufacturer的manufactureId关联,我们可以理解成做了vlookup引用,也可以想成SQL的Join。分析会涉及到很多复杂因素,这些因素相关的数据不会安安静静给你呆在一张表里,而是不同的表,所以需要用到数据关联。数据关联在学习到SQL后会更加清晰,这是SQL的核心概念之一。图表进入图表设计阶段,点击侧边栏第一个项。BI比Excel好的地方在于,它只要拖拽就能设计和生成。点击任一图表,画布上会自动生成图形,要切换图表类型直接点击其他即可。我们把城市和平均工资拖拽到视觉效果下的栏目,它会自动生成图表。不同图表需要的维度、轴都不一样,具体按提示进行。视觉效果下有设计选项,可以将图表调整的更美观,这里不详细介绍了。点击新增视觉效果(继续吐槽翻译),可以继续在画布上增加图表。绝大部分BI,都是支持联动的,所谓联动,通俗讲,就是点击图表上的维度元素,其他数据也会按此维度相应变化。上图就是一个很好的联动例子,点击城市维度的北京,其他图表都变了,平均工资由14.23变成15.23。而学历则变成突出显示,显示出了北京的博士们薪水远高于平均水准。图表联动带来更好的数据洞察,将不同数据维度的组合和选取,为分析师带来决策能力的提升。当然我最喜欢的特点之一是省时间。通过不断的图表组合,就能生成数据分析师自己的分析画布。这块画布叫作Dashboard。当然图表好看与否,就取决于分析师的设计品味了(这个我教不了你们,哈哈)。如果维度过多,大家可以插入视觉选项中的交叉筛选器,添加过滤功能,常用于精细化的分析,例如时间维度。图表右上角按钮,还能选择导出数据,导出一份该图表的csv数据。我们也能将其发布到网上,作为同事和企业间协作,或者手机端浏览数据用。当然这里需要注册账号,就看大家意愿了。更多功能留待大家学习,到这里,Power BI的新手教程就结束了。我列举了常用的功能,不知道大家有没有从Excel图表水平跃升到一个新阶段,大家可以自己拿数据做图表报告作为分析师行业的敲门砖。如果还有疑问,就借助官网文档学习,BI作为一个领域,它值得数据分析师深入。以下是一些补充:范例因为时间的关系,我没有讲解更多的样式设计内容。大家可以去官网下载范例,含有原始数据练习。主要是学习他人的报表汇制思路。另外Power BI的图表偏少,类似标靶图、箱线图都没有。不过官网有各类图表下载。搜索pbiviz即可,没有中文。R集成Power BI在它内部已经集成了R语言,没错,就是统计学中的R语言。如果你觉得视图功能还不够强大,那么我们可以利用R来绘制图表,甚至借助R做回归分析等。当然R是第七周的内容。这里只以官网截图为例。数据更新BI很重要的一个功能是数据更新,它是报表自动化的基础,它通常和SQL关联。我们使用CSV,只能往里面黏贴数据更新,还是繁琐了些,只属于半自动化。这将在学会SQL后解决。本文为专栏文章,来自:运营大湿兄,内容观点不代表本站立场,如若转载请联系专栏作者 。
2017年01月11日
120 阅读
0 评论
0 点赞
2016-11-16
使用Python网络挖掘的初学者指南
介绍从网络中抓取数据的必要性和重要性不言而喻。每隔几周,我都会发现自己有从互联网中挖掘数据的需要。例如,上周我们想创建一个指标,该指标是关于网络上各种可用的数据科学课程的热度和观点。这不仅要求我们找出新的课程,还要从网络上挖掘出他们的观点,然后把这些总结成几项指标。这个问题(或者说产品)的功效更取决于网络挖掘和信息抓取(数据采集),而不是汇总数据的技能。从网页中挖掘信息的方法从网络中抓取信息的方法有很多。使用API(应用程序编程接口)或许是从网站上抓取数据的最好方法。几乎所有的大型网站,像Twitter、 Facebook、Google、StackOverflow都使用API来使得他们的数据更加结构化。如果你能通过一种API来获取所需,那这会比网络挖掘更加便捷。因为,如果你能够从提供者那里获得结构化的数据,又何必自创一个引擎去抓取相同的信息?遗憾的是,并非所有的网站都会提供API。因为有的网站不希望浏览者从中获得大量的结构化信息。而其他网站不提供API,是因为他们缺少相应的技能知识。在这些情况下,你会怎么做呢?因此,我们需要挖掘网站来获取信息。或许会有像RSS Feeds的其他一些方法,但是这些方法在使用上受限制,因此我在此就不讨论了。什么是网页数据挖掘?网页数据挖掘是一种从网站上抓取信息的计算机软件技术。这种技术主要集中在将网络上的非结构化数据(HTML格式)转换为结构化数据(数据库或电子表格)。网页信息挖掘的方法有很多种,包括在任何编程语言下使用Google Docs(谷歌办公套件)。我选择使用Python语言,因为它十分便捷而且有丰富的生态环境。它有一个名为“BeautifulSoup”的库,可以用来完成本文中的网页数据挖掘任务。本文将告诉你,学习使用Python来完成网络挖掘的最简单方法。对于那些需要以非编程方式从网页上抓取信息的人,可以查看import.io这个网站,它提供了一个图形用户界面驱动的接口,来执行所有基本的网页抓取操作。黑客们,请继续阅读本文吧!网页数据挖据所需的库众所周知,Python是开源的编程语言。你可以找到很多库来执行一个函数。因此,寻找到高效的库是很有必要的。我更偏爱BeautifulSoup(Python库)。因为它操作简单且直观。确切地说,我要用两个Python模块抓取数据: Urllib2: 是一个Python模块,可用于获取URL。它定义了函数和类来帮助URL行为(基本和摘要的身份验证,重定向,信息记录等)。更详细的参考文档。 BeautifulSoup:是一个从网页上获取信息十分好用的工具。你可以使用它来提取表格,列表,段落,你也可以使用过滤器来从网页中提取信息。在这篇文章中,我们将使用最新版本BeautifulSoup 4。安装说明请见参考文档。 BeautifulSoup 并不能为我们获取网页地址,因此我们要把Urllib2库和BeautifulSoup库结合使用。除了BeautifulSoup之外,Python还有其他一些选择可用来抓取HTML信息,例如: Mechanize Scrapemark Scrapy 基础技能——熟悉HTML标签在进行网络挖掘时,我们需要处理很多HTML标签,因此我们必须很好地理解这些标签。如果你已经熟悉了HTML基础,可以跳过此部分。下面是HTML的基本语法:此语法的各种标签解释如下: <!DOCTYPE html> :HTML文件开头必须有一个声明文档; HTML文件部分被包含在<html>和</html>之间; HTML的可见部分被含在<body>和</body>之间; HTML 标题的字体由<h1>到<h6>标签定义; HTML的段落由<p>标签定义。 其他一些有用的HTML标签: HTML的超链接用<a>标签定义,例如:“<a href=“http://www.test.com”>This is a link for test.com</a>” HTML中的表格用<table>定义。行用<tr>表示,而行中的单元格用<td>表示 3.HTML的列表用<ul>(无序)和<ol>(有序)定义,列表的每个项子目用<li>表示如果你第一次接触这些HTML标签,我建议你参考W3CSchool上面的HTML教程,上面关于HTML标签的解释说明十分通俗易懂。使用BeautifulSoup进行网络挖掘现在,我正在从维基百科上挖据数据,我们的最终目的是从这个维基百科网页上获取印度各邦、联邦的首都信息,和一些基本的细节信息,像建立的时间、前首都以及其他一些信息等。接下来让我们一步一步学习这个项目: 导入必要的库: 使用“prettify”函数,查看嵌套的HTML结构: 从上图中,你可以看到HTML标签的结构。这将帮助您了解不同类型的可用标签,以及如何使用这些标签来抓取信息。3.使用HTML 标签a.soup.<tap>:返回开始和结束标签之间的内容,包括标签本身。b.soup.<tag>.string:返回制定标签中的字符串c.找到网页中所有的超链接<a>标签:我们都知道可以使用<a>标签来标记一个超链接,因此,我们用soup.a标签,就会返回网页中所有可用的超链接,让我们试一试吧:以上,你会发现我们只有一个输出结果。现在,我们可以用<a>标签获取所以的超链接,我们将用到“find_all()”函数。上图中,显示了所有的超链接,包括了标题、链接地址和其他一些信息。下面,只显示链接,我们需要用“href”标签的“get”属性,遍历每一个标签,然后返回链接地址。4.找到正确的表格:当我们正在寻找一个表来挖掘有关国家首都的信息时,我们应该首先识别正确的表。现在我们写命令,来抓取所有“table”标签中的信息。现在要确定正确的表格,我们将使用表格的属性“类”,并用它来选择正确的表格。在Chrome浏览器中,你可以通过右键点击网页上的所需的表的名称-检查元素-复制的类名称或通过上述命令的输出查找右表的类名称。5.从数据集中抓取信息:在这里,我们需要遍历每一行<tr>然后将行的每个元素<td>赋给一个变量,并将它添加到列表。让我们先看看HTML的表格结构(我不会抓取表格的标题<th>信息):上图中,你会发现<tr>的子元素被包含在<th>标签而不是<td>中,因此我们处理时要十分注意。现在给每个元素赋值,我们将对每个元素使用“find(text=True)”选项。让我们看看代码:最后,我们得到数据集中的数据:同样的,你可以借助“BeautifulSoup”库来挖掘其他类型的网页,这会提高你进行网络挖掘的效率。你也可以使用标签名称查看其他一些属性,比如parent、contents、descendants、.next_slbling、.prev_sibling以及利用各种属性进行导航。这会帮助你有效地进行网络挖掘。为什么不能用正则表达式实现这个功能呢?如果你了解正则表达式的话,也许你会想要使用正则表达式来实现相同的功能。我的确想过这个问题,在我使用BeautifulSoup库和正则表达式来做同一个项目时,有以下发现: 用BeautifulSoup来写代码要比正则表达式更具鲁棒性(所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。)。用正则表达式写代码时,网页中的任何变化,都需要改变。即使一些情况下,使用BeautifulSoup也需要做出改动,但是相对会更好的。 正则表达式的运行速度要比BeautifulSoup快得多,通常得出相同的结果只需花百分之一。 因此,将其归结为代码的速度和鲁棒性对比,并不能得出哪个使用效果最好。如果能用更简单的正则表达式语句来获取所需的信息,那或无疑问你应该使用它。但是对于几乎大多数复杂的网络挖掘工作,我通常建议更多使用BeautifulSoup。结束语本文中,我们学习了基于Python“BeautifulSoup”和“urllib2”的网络挖据方法,同时也学习了一些HTML的基本语法,并一步一步演示了如何去挖掘一个网站。但是我建议你们可以对照这篇文章多加练习,用上面的方法从不同的网页上抓取信息。本文由 翻译小组 翻译发布,英文链接:,转载或内容合作请联系我们,未经允许谢绝转载 。
2016年11月16日
117 阅读
0 评论
0 点赞
2016-11-16
使用Python网络挖掘的初学者指南
介绍从网络中抓取数据的必要性和重要性不言而喻。每隔几周,我都会发现自己有从互联网中挖掘数据的需要。例如,上周我们想创建一个指标,该指标是关于网络上各种可用的数据科学课程的热度和观点。这不仅要求我们找出新的课程,还要从网络上挖掘出他们的观点,然后把这些总结成几项指标。这个问题(或者说产品)的功效更取决于网络挖掘和信息抓取(数据采集),而不是汇总数据的技能。从网页中挖掘信息的方法从网络中抓取信息的方法有很多。使用API(应用程序编程接口)或许是从网站上抓取数据的最好方法。几乎所有的大型网站,像Twitter、 Facebook、Google、StackOverflow都使用API来使得他们的数据更加结构化。如果你能通过一种API来获取所需,那这会比网络挖掘更加便捷。因为,如果你能够从提供者那里获得结构化的数据,又何必自创一个引擎去抓取相同的信息?遗憾的是,并非所有的网站都会提供API。因为有的网站不希望浏览者从中获得大量的结构化信息。而其他网站不提供API,是因为他们缺少相应的技能知识。在这些情况下,你会怎么做呢?因此,我们需要挖掘网站来获取信息。或许会有像RSS Feeds的其他一些方法,但是这些方法在使用上受限制,因此我在此就不讨论了。什么是网页数据挖掘?网页数据挖掘是一种从网站上抓取信息的计算机软件技术。这种技术主要集中在将网络上的非结构化数据(HTML格式)转换为结构化数据(数据库或电子表格)。网页信息挖掘的方法有很多种,包括在任何编程语言下使用Google Docs(谷歌办公套件)。我选择使用Python语言,因为它十分便捷而且有丰富的生态环境。它有一个名为“BeautifulSoup”的库,可以用来完成本文中的网页数据挖掘任务。本文将告诉你,学习使用Python来完成网络挖掘的最简单方法。对于那些需要以非编程方式从网页上抓取信息的人,可以查看import.io这个网站,它提供了一个图形用户界面驱动的接口,来执行所有基本的网页抓取操作。黑客们,请继续阅读本文吧!网页数据挖据所需的库众所周知,Python是开源的编程语言。你可以找到很多库来执行一个函数。因此,寻找到高效的库是很有必要的。我更偏爱BeautifulSoup(Python库)。因为它操作简单且直观。确切地说,我要用两个Python模块抓取数据: Urllib2: 是一个Python模块,可用于获取URL。它定义了函数和类来帮助URL行为(基本和摘要的身份验证,重定向,信息记录等)。更详细的参考文档。 BeautifulSoup:是一个从网页上获取信息十分好用的工具。你可以使用它来提取表格,列表,段落,你也可以使用过滤器来从网页中提取信息。在这篇文章中,我们将使用最新版本BeautifulSoup 4。安装说明请见参考文档。 BeautifulSoup 并不能为我们获取网页地址,因此我们要把Urllib2库和BeautifulSoup库结合使用。除了BeautifulSoup之外,Python还有其他一些选择可用来抓取HTML信息,例如: Mechanize Scrapemark Scrapy 基础技能——熟悉HTML标签在进行网络挖掘时,我们需要处理很多HTML标签,因此我们必须很好地理解这些标签。如果你已经熟悉了HTML基础,可以跳过此部分。下面是HTML的基本语法:此语法的各种标签解释如下: <!DOCTYPE html> :HTML文件开头必须有一个声明文档; HTML文件部分被包含在<html>和</html>之间; HTML的可见部分被含在<body>和</body>之间; HTML 标题的字体由<h1>到<h6>标签定义; HTML的段落由<p>标签定义。 其他一些有用的HTML标签: HTML的超链接用<a>标签定义,例如:“<a href=“http://www.test.com”>This is a link for test.com</a>” HTML中的表格用<table>定义。行用<tr>表示,而行中的单元格用<td>表示 3.HTML的列表用<ul>(无序)和<ol>(有序)定义,列表的每个项子目用<li>表示如果你第一次接触这些HTML标签,我建议你参考W3CSchool上面的HTML教程,上面关于HTML标签的解释说明十分通俗易懂。使用BeautifulSoup进行网络挖掘现在,我正在从维基百科上挖据数据,我们的最终目的是从这个维基百科网页上获取印度各邦、联邦的首都信息,和一些基本的细节信息,像建立的时间、前首都以及其他一些信息等。接下来让我们一步一步学习这个项目: 导入必要的库: 使用“prettify”函数,查看嵌套的HTML结构: 从上图中,你可以看到HTML标签的结构。这将帮助您了解不同类型的可用标签,以及如何使用这些标签来抓取信息。3.使用HTML 标签a.soup.<tap>:返回开始和结束标签之间的内容,包括标签本身。b.soup.<tag>.string:返回制定标签中的字符串c.找到网页中所有的超链接<a>标签:我们都知道可以使用<a>标签来标记一个超链接,因此,我们用soup.a标签,就会返回网页中所有可用的超链接,让我们试一试吧:以上,你会发现我们只有一个输出结果。现在,我们可以用<a>标签获取所以的超链接,我们将用到“find_all()”函数。上图中,显示了所有的超链接,包括了标题、链接地址和其他一些信息。下面,只显示链接,我们需要用“href”标签的“get”属性,遍历每一个标签,然后返回链接地址。4.找到正确的表格:当我们正在寻找一个表来挖掘有关国家首都的信息时,我们应该首先识别正确的表。现在我们写命令,来抓取所有“table”标签中的信息。现在要确定正确的表格,我们将使用表格的属性“类”,并用它来选择正确的表格。在Chrome浏览器中,你可以通过右键点击网页上的所需的表的名称-检查元素-复制的类名称或通过上述命令的输出查找右表的类名称。5.从数据集中抓取信息:在这里,我们需要遍历每一行<tr>然后将行的每个元素<td>赋给一个变量,并将它添加到列表。让我们先看看HTML的表格结构(我不会抓取表格的标题<th>信息):上图中,你会发现<tr>的子元素被包含在<th>标签而不是<td>中,因此我们处理时要十分注意。现在给每个元素赋值,我们将对每个元素使用“find(text=True)”选项。让我们看看代码:最后,我们得到数据集中的数据:同样的,你可以借助“BeautifulSoup”库来挖掘其他类型的网页,这会提高你进行网络挖掘的效率。你也可以使用标签名称查看其他一些属性,比如parent、contents、descendants、.next_slbling、.prev_sibling以及利用各种属性进行导航。这会帮助你有效地进行网络挖掘。为什么不能用正则表达式实现这个功能呢?如果你了解正则表达式的话,也许你会想要使用正则表达式来实现相同的功能。我的确想过这个问题,在我使用BeautifulSoup库和正则表达式来做同一个项目时,有以下发现: 用BeautifulSoup来写代码要比正则表达式更具鲁棒性(所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。)。用正则表达式写代码时,网页中的任何变化,都需要改变。即使一些情况下,使用BeautifulSoup也需要做出改动,但是相对会更好的。 正则表达式的运行速度要比BeautifulSoup快得多,通常得出相同的结果只需花百分之一。 因此,将其归结为代码的速度和鲁棒性对比,并不能得出哪个使用效果最好。如果能用更简单的正则表达式语句来获取所需的信息,那或无疑问你应该使用它。但是对于几乎大多数复杂的网络挖掘工作,我通常建议更多使用BeautifulSoup。结束语本文中,我们学习了基于Python“BeautifulSoup”和“urllib2”的网络挖据方法,同时也学习了一些HTML的基本语法,并一步一步演示了如何去挖掘一个网站。但是我建议你们可以对照这篇文章多加练习,用上面的方法从不同的网页上抓取信息。本文由 翻译小组 翻译发布,英文链接:,转载或内容合作请联系我们,未经允许谢绝转载 。
2016年11月16日
213 阅读
0 评论
0 点赞
1
2