中企动力 > 商学院 > 数据分析教程
  • ?

    【数据实时分析】流计算使用教程

    Feronia

    展开

    阿里云流计算(Alibaba Cloud StreamCompute)是运行在阿里云平台上的流式大数据分析平台,提供给用户在云上进行流式数据实时化分析工具。

  • ?

    数据分析能力养成指南18:Python的新手教程

    Hamina

    展开

    本文是《如何七周成为数据分析师》的第十八篇教程,如果想要了解写作初衷,可以先行阅读七周指南。温馨提示:如果您已经熟悉Python,大可不必再看这篇文章,或只挑选部分。

    Python是近年来最火爆的语言,已经作为数据分析和机器学习的首选语言之一。

    Python虽然被诟病不够快,但足够灵活和易上手。Python教程主要围绕数据分析展开,所以技术原理这类内容会略过,可以认为这是一篇重应用的课程。

    想学会一门语言不是一朝一夕的事情,若大家想成为技术型的数据分析师,或者未来往数据挖掘发展,建议你要比文章内容学得更深。所有的代码最好都手打一遍,这是最有效的学习方式。

    数据分析环境

    Python的编写环境,用Anaconda足矣。Anaconda是专业的数据科学计算环境,已经集成绝大部分包和工具,不需要多余的安装和调试。

    Python版本建议3.0以上,现在最新版本是3.6,不要选择2.7的版本,否则你会被无尽的中文编码问题困扰。

    Anaconda在官网continuum.io/downloads下载,选择最新版本,约400MB。

    完成安装后,Win版本会多出几个程序,Mac版本只有一个Navigator导航。数据分析最常用的程序叫Jupyter,以前被称为IPython Notebook,是一个交互式的笔记本,能快速创建程序,支持实时代码、可视化和Markdown语言。

    点击Jupyter进入,它会自动创建一个本地环境localhost。

    点击界面右上角的new,创建一个python文件。

    开始你的Python

    界面上部是工具栏,编辑撤回运行等,下面是快捷操作,大家以后会熟悉的。页面正中便是脚本执行的地方,我们输入自己第一行代码吧:

    (我就不用hello world)灰色框是输入程序的地方,回车是换行,shift+回车执行灰色区域的代码,它的结果会直接在下面空白处出现。这就是Jupyter交互式的强大地方,将Python脚本分成片段式运行,尤其适合数据分析的摸索调整工作。

    这里的print叫函数,和excel的函数同理,是程序执行的主体,负责将输入转化成输出(函数留在下一篇细讲)。这里将helloqinlu这段文字输出。新手可能会奇怪为什么要加引号,这种用引号括起来的文字在程序中叫字符串。

    Python是一门计算机语言,它的逻辑和自然语言不一样,编程语言的目的是执行任务,所以它不能有歧义。为了规避各种歧义,人们创造了语法规则,只有正确的语法,才能被转换成CPU执行的机器码。

    先了解Python语法中的数据类型。计算机最开始只被用于数值运算,后来被赋予了各种丰富的数据类型。

    上面两个是小学生都会的四则运算,在计算机语言中可没有那么简单。它涉及了两个数值类型,整数int和浮点数float。整数和浮点数在计算机内部存储的方式是不同的,我们不用知道具体原理,明确一点,整数运算是永远精确的,浮点运算则可能有误差。

    两种数据类型也可以互换,通过int函数和float函数。

    有了数值,必然有文本,程序中叫字符串,用英文引号括起来表示。单引号和双引号没有区别,所以”qinlu”和’qinlu’是等价的,引号是边界,输出的时候不会包含它。当字符串内本身包含引号时,也不影响使用。

    需要注意的是,不论单引号还是双引号,一旦混用很容易出现错误。因为程序并不知道它是字符串的边界还是符号。

    解决方法有两种,一种是使用三引号,三引号代表整体引用,而且包含换行。第二种是引号前面加\,它是转义字符,表示这个引号就是单纯的字符。

    三引号也可以用来注释,通常是大段的文字解释,如果一句话,我们更习惯用#,#后面的内容均不会作为程序执行。

    时间是特殊的数值类型,它将结合datetime模块讲解。

    还有两个常见的数据类型,布尔值和空值。布尔值是逻辑判断值,只有True和False。

    布尔值在IF语句和数据清洗中经常使用,利用其过滤。布尔值能和布尔值运算,不过这里是and、not、or作为运算符,Ttue and True = True,False and True = False,False and False = False,not True = False,True or False =False等。

    空值是一个特殊的值,表示为None,None不等于0,0具有数学意义而None没有,None更多表示该值缺失。

    整数,浮点数,字符串,布尔值,空值就是Python常见的数据类型。Python3对中文的支持比较友好,所以大家可以用中文作为字符串试一下print。

    数据类型构成了变量的基础,变量可以是任意的数据类型。想要用变量,必须先赋予变量一个值,这个过程叫赋值。

    我首先给a赋予了一个整数值1,然后改变它为字符串abc,变量在Python中没有固定的数值类型,这是Python最大的优点,所以它在数据分析中很灵活。这也是它被称为动态语言的原因,相对应的叫静态语言。

    Python是大小写敏感的语言,所以a和A是有区别的,这点请牢记。另外变量名尽可能使用英文,不要拼音,英文的可读性是优于拼音的。

    变量有两种拼写风格,一种叫驼峰,一种叫下划线,以用户ID为例。驼峰命名法为userId,以一串英文词语user和id组成变量,第一个词语的首字母小写,第二个词语开始的首字母均大写。下划线命名法为user_id,全部小写,用_分割单词。

    一个变量的值可以被赋予另外一个变量,如果b变量之前有另外一个值,那么会被1覆盖。呈从上而下的执行关系。

    初看a = a + 1好像有逻辑问题,其实这涉及到了程序执行的先后顺序,程序是先计算a+1的值得到2,然后将其赋予(覆盖)了a。等号右边的计算先于左边,这是从右到左的逻辑关系。

    有变量,自然有常量,常量是固定不变的量,可是在Python中没有真正意义的常量,一切皆可变,它更多是习惯上的叫法,即一旦赋值,就不再改变了。

    Python的基础数学运算符号有+,-,*,/,//,%。前面四个就是加减乘除,其中除法的结果一定是浮点数。后面两个符号是除法的特殊形式,//代表除法中取整数,%代表除法中取余数。

    到这里,新手部分已经讲解完成。因为考虑到大家的基础不一致,故早期内容并不难,后续学习难度才会逐渐递增。下一章讲解数据结构。

  • ?

    4个步骤分析运营数据

    觅风

    展开

    数据能真实反映产品运营的效果,了解哪一块做的好,哪方面有待改进,转化率、留存率等核心指标(也可称为KPI)是多少。这里的产品包括实物、虚拟、内容、活动等,可以当做产品来运营的事物。

    01-数据分析目的

    这是数据分析的起因:为什么要进行数据分析。有了目的,后续开展的相关工作都是围绕这个目的展开。公司上半年会议提出要深度优化产品APP,因此运营部需要通过问卷调查和在官方微信号、微博、APP引导用户反馈使用情况。

    了解用户对之前的产品使用体验怎样,有哪些功能妨碍了正常使用,需要增添什么新功能满足新需求,以及其他意见和建议。这些都是通过分析反馈回来的问卷数据来确定的。

    02-收集什么数据

    有了目的后,就要着手制定执行方案,理清哪些是必要的关键性数据,哪些是辅助性数据,需要多少样本。既然要优化产品APP,那么就要考虑到:

    (1)APP相关数据:APP下载总量、打开次数、使用时长,分析竞争对手的APP。

    (2)用户留存率:某段时间内,有多少用户下载、使用或卸载。

    (3)平均访问时长:每次打开使用多长时间,使用哪部分内容较多,哪部分较少。

    (4)订单数据:通过APP产生的消费情况。

    所谓的关键性数据,就是涉及到产品活的好不好的真实反馈。

    03-数据统计分析

    先了解所要收集的数据代表的内容及统计方式,比如“APP下载总量”指在某段时间内APP在各应用平台的总下载量、新增下载量,同时分为安卓端和ISO端。同时使用数据图表描述,能用图表示的就不用文字叙述。

    对统计出的大量数据,分析出导致这样的结果的原因具体是什么,涉及到哪些因素,怎么去优化。

    04-意见和建议

    通过大量数据统计分析得出的结果,是否符合当初设定的目的和指标,或相差甚远。哪一块需要加强,哪方面需要保持,有什么好的建议让下次做的更好。可以开会讨论各抒己见,或单人面对面交流,或提供报告,多渠道收集反馈,详细分析。

    通过分析产品运营数据,能了解产品、活动或内容推送整体状态,为运营提供决策,也为周报、月报、季报的撰写及其他项目的规划提供分析素材。

  • ?

    数据分析初学者应该怎么学?数据分析入门学习路线分享

    葛伟诚

    展开

    针对想要自学数据分析的小伙伴们,科多大数据给大家分享一位数据分析小白的自学之路。

    作为数据分析的小白初学者,在开始正式学数据分析前,肯定都想先看看别人学习的经验。我的大概情况是,目前研二通信专业,本科专业测控,由于种种原因,对数据分析比较感兴趣,于是开始了独自摸索过程,这里总结我自学数据分析2个多月的经历。希望能给后面的初学者带来一些启发。

    一、数据分析师的方向

    先选择了正确的方向,再朝着这个方向努力是学习一个新领域的正确姿势,因此开始正式学习前,我首先查阅了大量资料,了解数据分析分为哪些方向,并明确自己想往哪个方向走。

    1.数据分析的方向分类

    数据分析可分为两类:一种偏向产品和运营,更加注重业务,主要工作包括日常业务的异常监控、客户和市场研究、参与产品开发、建立数据模型提升运营效率等;另一种则更注重数据挖掘技术,门槛较高,需要扎实的算法能力和代码能力。(总结了@路人甲大神的说法)

    2.数据分析的行业分类

    1)互联网行业是数据分析应用最广的行业,是数据分析师理想的成长平台。

    2)其次是咨询公司。相对来说,数据分析师在咨询公司成长的速度更快,专业也会更全面。3)再次是

    3)金融行业,比如银行和证券等行业,该行业对数据分析的依赖需求,越来越大。4)最后是

    4)电信行业,(移动、联通和电信),它们拥有海量的数据,在严峻的竞争下,也越来越重视数据分析,但进入这些公司的门槛比较高。

    3.确定自己的方向 由上可知数据分析大致分为两类:偏重业务和偏技术路线的,明显偏技术路线是很难速成的,鉴于我今年9月份要开始校招找工作,且自己对产品向很感兴趣,因而我选择了更偏向业务的数据分析。此外,自己最感兴趣的行业是互联网。

    基于以上确定了我的最理想职位:互联网公司的偏向业务的数据分析。

    此外,为了了解公司对该职位的最新要求,招聘数据分析实习生的互联网公司我都进行了网申,我知道以自己两个月所学还不能满足职位要求,只是为了做了一下笔试题,从而了解公司的数据分析到底偏重哪些技能,并进行有针对性的了解相应的知识。(目前我做过了阿里、京东、美团的数据分析实习生的笔试题,觉得这是个了解公司数据分析岗位最新要求的有效方法)

    二.我是如何学习的?

    结合公司的招聘要求,我是按照以下几个部分进行学习的:

    1.统计学学习。

    统计学是数据分析的基础,因而我选择从这个开始学习。

    已有基础:大学我学过概率论统计学这门课,学的还不错。

    看完书籍:《深入浅出统计学》、《从零进阶!数据分析的统计基础》

    花费时间:共计11天每天上午3个小时,一共33个小时。

    推荐书籍:《从零进阶!数据分析的统计基础》

    推荐理由:

    前面很多高赞答案推荐《深入浅出统计学》,因而开始的时候我选用的这本,已将整本书看完,感觉重点不够突出,太过啰嗦以至于浪费时间,逻辑不是很连贯,尤其是假设检验那一章写的太绕了,后来又入手看完了《从零进阶!数据分析的统计基础》这本书,这本书每一节有相应的少量习题和配套答案可巩固,逻辑和重点都非常清晰,有了对比之后,强烈建议和我一样的小白初学者使用《从零进阶!数据分析的统计基础》这本书!

    知识巩固:每看完一章,我都会进行总结梳理一章的内容,这样可以让知识结构化;此外,由于统计学有很多概念,都很生涩,为了加深印象,我列出了很多诸如置信水平、区间估计、假设检验、P值等概念,做成了几张图片,偶尔就给同学发过去,让她随机挑选一个,然后我再用通俗的语言给她解释下这个是什么东西。(这样做的好处既能加深自己的印象,又能模拟面试官的提问。一举两得。)

    2. EXEL看完书籍:《谁说菜鸟不会数据分析》

    共计时间:这个相对来说不怎么耗费脑子,而且鼓捣图表比较好玩,很有成就感。因而我是每天吃完下午饭后进行学习Excel,因为这个时候我的学习效率相对较低(比较高效的时间段,我用来学习Python)。EXcel学习共计13天,每天晚上7点到9点2个小时,共计26个小时。

    读完感受:这本书不错,内容比较详细,且书中介绍了数据分析的一些常见方法,并重点介绍了EXEL的数据透视表,函数,各类图表适用场景及如何制作的内容,自己感觉比较适合我们初学者,可以先根据这本书学习EXEL。

    巩固提升:由于菜鸟这本书对函数部分设计的比较少,所以我又跟着大神的专栏进行了学习,感觉这几篇文章整理的很好,所以在此列出。

    第一篇数据分析—函数篇。主要简单讲解常用的函数,以及与之对应的SQL/Python函数。第二篇数据分析—技巧篇。主要简单讲解很有新价比的功能,提高工作效率。第三篇数据分析—实战篇。主要将前两篇的内容以实战方式进行,简单地进行了一次数据分析。数据源采用了真实的爬虫数据,是5000行数据分析师岗位数据。

    碎片化学习

    3.数据库

    数据库基础

    学习网站:基础知识我是跟着最多人推荐的这个网站学习的:SQL教程_w3cschool

    个人感觉:这个教程条理清晰,比较适合我们小白初学者。

    共计时间:查看了我的时间表,算了一下数据库基础知识部分,我一共花了30个小时

    左右,感觉数据库还是比较容易上手的,不是很难,所以你们不要怕哈~

    刷题:基础教程学完后,我用了这两套题刷题:

    SQL练习题及答案(连接写法)

    SQL练习题及答案(多次子查询)

    因为基础知识跟着网站学习的时候,我学的比较粗糙,刷题才发现有很多知识漏点,所以又返回去查缺补漏,因而刷题时间耗费的时间很长,用了大概20多个小时。

    强烈建议:学完数据库基础知识后一定要刷至少一套题,刷完后你会发现对数据库的理解深入了很多,然后那几天我睡觉的时候满脑子都是select......

    4.业务学习

    推荐书籍:《精益数据分析》、《增长黑客》、《数据挖掘与数据化运营实战,思路、方法、技巧与应用》

    个人感觉:学习一样新东西,不断感受它的有趣性才是持久性动力。所以我一般是看Python代码看烦了的时候,就会看一下这三本书,感受一下数据对运营和用户的作用,真的很有趣。由于都是利用这些碎时间看的,所以这三本书目前还没看完,但就目前所看,我觉得都很好,尤其是增长黑客附录里给了一些数据常用指标,很有用。至于《深入浅出数据分析》这本书,我看了两章之后放弃了,还是觉得太啰嗦了(仅是个人见解),因而没有读下去,可能我不太适合这种从大量言语中找重点的书籍。

    碎片化学习:要了解公司是如何运营,产品是如何开发的,这些需要不断地积累和广泛的阅读。所以我利用自己玩手机的时间来训练这些思维,我关注了“互联网周刊”、“人人都是产品经理”、“逻辑思维”

    这几个微信公众号(我认为这几个都很不错) ,偶尔在不想学习,玩手机的时候会看一下这几个的推送文章,但不是看完就算了,比如“人人都是产品经理”前一段时间推了一篇文章《美团和滴滴的战争,饿了么如何选择?》,我会先尝试着思考一下自己的答案,然后再看下文章里传达的看法,看完之后我会再试着从多角度去思考这个问题,并在去食堂吃饭的路上和同学讨论下这个问题,阐述下自己的看法。(真的觉得向别人讲述才是成长的最大利器!)

    此外,我关注了喜马拉雅FM听书电台APP的PMCAFF产品社区专辑,这里面是每天解答一个围绕关于产品和运营的小问题,我列几个我有印象的:“微信消息为什么没有已读未读的提示?”、“微信和支付宝为什么一直没有加入启动页广告呢?”、“继短视频后,下一个流量风口会是什么?”,每个都很简短,只有3分钟到4分钟左右,非常简短又有趣,每天晚上睡觉前,趟床上睡不着的时候,我会选择听一个,感觉对我关于产品和运营的认识有很大提高。

    5.Python学习

    使用工具:Anaconda+Pycharm(或者Spyder也很好用)

    如果还没有开始Python工具下载的初学者,切记不要直接装Python,推荐直接装Anaconda搭建起来的科学环境要方便很多。建议安装Anaconda+Pycharm来学习Python,尤其是对于学习数据分析的同学。(多次入坑的血泪之谈,避免很多麻烦啊!)

    安装教程:和大多初学者一样,我在纠结于安装什么样的IDE,以及怎样安装上浪费了很长时间,终于安装成功。这其中差点在安装过程的繁琐中就放弃了学习,因而我写下了我的安装过程,非常详细,细致到了每一步安装过程的截图,希望能让后面的初学者不在安装上面浪费时间。

    Python学习之工具准备——Anaconda+Pycharm的安装过程

    学习网站:廖雪峰的Python3教程

    学完感受:觉得整体都很好,比较适合我们小白学习,但是个别知识不够结构化,比如列表、元祖、字典、集合这几个知识点太分散了,我觉得放在一起学习讲述它们的联系与区别比较好。刚学完这几个,我全都混淆了,所以立马搜索了一下这几个相关知识,发现有人网上有博主总结的很好,立马清晰了很多。所以,这里我想说,不要单一靠一个学习资源(但前提是只以一个为主),遇到没搞懂的,立马百度补充。

    进阶补充:由于数据分析需要熟悉Numpy、Pandas、Scrip、Matplotlib等常用的包,而廖老师的网站中缺乏这部分的内容,所以学完基础Python后,包的学习我是跟着一个视频学习的,目前刚进入这阶段的学习,所以无法提供什么有效信息,待我学完这部分,我再来评价吧。

    6.基础算法和图表可视化

    这两部分目前也还没开始学习,所以也无法提供有效信息。

    三.最后的建议

    1.时间管理

    为了敦促自己的学习,我做了一个Excel时间管理表,其中包含了周计划和月计划,并记录了每天的进程,我觉得这个方法对我来说很有效,所以推荐给你们。

    2. 碎片化学习

    Python、统计学之类的还是要系统化学习,毕竟让我在等公交的时间看一个Python代码或者算一个概率题,我可能想打人!!。 但运营和产品等业务知识,还是可以利用我们的零碎时间来不断积累,其实只要将平时刷娱乐新闻的时间换成互联网消息就可以了,习惯了之后会发现,这些知识真的更有趣!

    作为一个小白,讲述了自己这两个多月的学习历程,可能会有错误,仅供参考,非常感谢!

  • ?

    怎么样Excel做数据分析?这几个步骤帮到你

    书琴

    展开

    每个人都会有机会进行数据展示,为什么别人展示永远获得正视,而我的展示永远只有自己愿意去看,别人在看手机?那怎样做数据图表分析呢请看以下步骤:

    如何对表格进行修饰,本次小编带来两个技巧,一是使用“套用表格格式”,和使用“条件格式”。二是带领大家学会养成修饰表格的思维。

    第一步是对表格进行粗略的修饰调整,思维:行高、列宽、对齐方式、表格线等;

    使用“套用表格格式”、“条件格式”之后看数据不再枯燥无味,而且还更有看头。“条件格式”可以将筛选条件转换为颜色可视化,从而达到一目了然的效果。

    第一个技巧,①“套用表格格式”。方法:任一单元格→开始→套用表格格式。

    ②“条件格式”,方法:选中单元格区域→开始→条件格式。

    条件1:高于平均值

    条件2:数据条

    条件3:色阶

    第二个技巧:养成修饰图表的思维。这次举例柱形图的修饰例子,其他希望大家动用类似的方法进行模拟实践。

    步骤一:根据销售数据建立柱状图,建立方法可参考。选择数据源→插入→柱状图→选择数据源→编辑坐标

    步骤二:添加辅助线。选择数据源→→添加→点击柱体右键,设置数据系列格式→次坐标轴→选中柱体,右键更改图表类型→折线图。

    希望回答对你能有所帮助,如果觉得不错就来点个赞或关注吧,感谢各位了!

  • ?

    这才是正确的数据分析步骤

    Julia

    展开

    做好数据分析需要考虑三个问题,数据从哪来,数据到哪去,数据怎么去?今天我们来讲讲数据怎么去的问题,也就是数据分析步骤。

    一、定义

    “勿忘初心,方得始终”,做数据分析前要想好针对的问题是什么,想通过数据分析解决什么问题,数据分析的结果能帮助你达到什么目的,对现阶段你的产品有何实际的意义。

    基于分析目的确定分析范围。比如你想分析用户流失原因,你分析的范围就是流失的用户,你不能去分析新增的用户,再比如电商类产品,你想对高价值用户进行分析,那么什么是高价值用户,那么你可能确定范围:“xx年xx月xx号-xx年xx月xx号,购买次数5次以上,总金额在3000元以上的用户”,这些都是我们在数据分析之前需要确定的,只有范围确定清楚了,分析的数据才具有指导意义。

    规划分析的进度和质量。比如说你要做数据的采集,你就需要考虑清楚用什么样的技术手段采集数据,用什么样的方法进行分析,然后这个过程中产生的误差多大范围内是可接受的,或者是自身有了预判,我知道这种数据分析方式会带来什么样的影响,对最后的结论带来多少干扰。

    二、测量

    测量包含收集获取数据和数据预处理。

    收集获取数据。是用问卷的方式定量分析?还是从服务器调取日志进行分析...,这些都是数据的来源

    预处理:比如说做调查问卷,对于回收来的问卷我们需要判断哪些数据是有效的,哪些数据是无效的,比如调查问卷共15道题,用户就答了一道题,这个就属于无效问卷,需要剔除出去,这个时候他的数据是不完整的,放进去反而会影响最终的数据结果。同样对数据库的数据也需要预处理,比如说你想统计新增用户,但是来了很多羊毛党用户,这部分用户对你是没有价值的,也需要处理掉。预处理的好坏,直接决定数据分析结果的质量。

    三、分析

    分析包含对数据的统计描述和针对问题的归纳和总结。

    数据的统计描述。统计是对数据的定量分析,描述是对数据的定性分析,就是对你的数据进行定性和定量的客观性描述。

    问题的归纳总结。这个是最重要的,也就是拿出我们的结论,数据本身没有价值,数据分析的结果才有价值。

    四、改进

    改进就是找到问题的解决方案和降低负面影响。

    给出解决方案。比如最近产品用户流失比较厉害,你通过调查问卷和用户访谈了解用户流失原因,当得到分析结果以后,你需要给出解决方案。是你的体验没做好,还是竞争对手挖墙脚,亦或是你的商品价格提高了...这些都是原因,找到主要原因,给出专业的解决方案,老板要的是方案,不关心你分析的过程。

    降低负面影响。比如电商的购物流程,浏览商品--》加入购物车--》下单--》支付--》完成购买,你通过漏斗模型分析,发现从加入购物车到下单流失很多,你通过数据分析发现流失的原因是设计上的问题,那么就可以重新优化设计方案,降低负面影响。

    五、控制

    数据分析是一个持续性的过程,所以需要持续的跟踪反馈,比如做数据的日报、周报、月报,它是一个非常持久的工作,而且数据分析的结果发出去以后,不同的人可能会有不同的看法,那么我们产品经理就需要收集不同的观点。

    更新迭代。更新迭代是我们产品经理的一份重要的工作内容,不论是功能上的更新迭代,还是数据上的更新迭代。有的人可能说为什么要做数据上的跟踪迭代呢?因为数据具有时效性,我们分析的往往是一个时间段内的数据,数据会随着时间的推移发生变化,根据这些变化,我们需要做一轮新的数据分析。

  • ?

    利用 SQL 进行数据分析初学者教程-ep1

    吉怜蕾

    展开

    由 Tomi Mester 写于2017年5月9日

    本文转载自https://data36/sql-for-data-analysis-tutorial-beginners/

    如果你想成数据分析师或是数据科学家,那么 SQL 是必须的。在过去的几年中,我已经与许多公司有线业务合作 - 从 5 人创业公司到 5000 多名员工跨国公司,并没有看到一家不会以某种方式使用SQL进行数据分析(以及更多的事情)的公司。

    SQL简单并且容易理解。因而,不只是工程师、开发者、数据分析师或数据科学家可以使用它,而是任何愿意花费几天来学习和练习它的人。

    我已经创建了这个 SQL 系列,成为有志的数据分析师和数据科学家的最实用和多动手的 SQL 教程。如果你从没有接触过编码、编程、查询,它将从头开始,这并不会是一个问题!

    让我们开始吧!

    注意:因为这是一个实用教程,我鼓励你和我一起编码。如果你这样做,你将需要一个数据服务器来练习。所以我建议你先通过阅读这篇文章。

    利用SQL进行数据分析?这是什么?为什么好呢?

    SQL代表『结构化查询语言』。 但是我喜欢描述它为「加强版的 Excel」。下面是同一份数据在 Excel 和 SQL:

    如你所见,SQL 和 Excel 十分相似。它们用具有行和列的二维列表展示数据。两者都非常结构化,非常透明。

    不过也有差异。作为初学者,你应该知道两件关于 SQL 的重要事情:

    1.第一是性能。虽然 Excel 在小数据集中表现很棒,但是当你使用不同的公式处理 100 k+ 行的文件,它变得十分缓慢和低效。在 SQL 中,甚至超过 10 M+ 行的文件可以很快的处理。(例如,在接下来的利用 SQL进行数据分析文章中,我们将使用一个 7 M+ 行的数据集。)

    2.第二是怎样访问你的数据。Excel 主要是图形用户界面(也成为 GUI)。你可以滚动、敲入公式、用光标选择你的范围等等,非常方便。在 SQL 中,你没有这样的界面,你必须使用称为『SQL 查询』来代替。看下面的gif:

    在 Excel 中求和

    在 SQL 中求和

    因为第一次看到这个,可能感觉到麻烦。但是相信我,一旦你了解 SQL 基础知识,你会发现它比 Excel 更加清晰、更有效率。只提两个有点:在 SQL 中,连接表比 Excel 更简单。同样,使用 SQL 自动化和重复使用脚本也将会变得更加方便。

    当你使用 SQL 进行数据分析,你将会使用它(最有可能)进行简单任务:聚合事情、连接数据集、使用简单的统计和数学方法。但是,你可以比以前更有效率执行这些任务和更大的数据集。

    Python,R 和 bash怎么样?

    如果你已经完成了我之前的 bash 教程 或者你已经参加一些我的在线直播,你可能会问:SQL 比 Python,R 或者 bash 好还是坏?答案是...好吧,这个问题没有明确答案!

    一旦你开始在实际生活的数据项目中应用这些语言,你将看到 Python 和 R 在某些方面是表现好的,而 SQL 在其他方面表现好。主要是语法、功能、性能不同...但是,我现在不想进入该主题,因为:

    a)我承诺一个使用教程,其主题有点理论(甚至有点哲学)。

    b)它还有点先进的东西。

    c)在这个水平上,你完全不需要担心它的性能,并且你有可能得到资深数据科学家或者数据工程师的帮助。

    注意:如果你真的很好奇,我给你~1小时在这里比较 Python,R,SQL 和 bash。

    但是现在,让我们试试吧!

    STEP 0 - 安装你自己的 SQL 环境来练习!

    注意:如果你已经有自己的 SQL 环境,你可以跳到STEP-获得数据!

    首先,请仔细阅读这篇文章。它是关于如何一步一步设置你自己的数据服务和安装 bash,Python,R 和 SQL 的教程。

    注意:在我的『利用 SQL 进行数据分析』文章中,我将使用 postgreSQL!还有其他类型的 SQL 语言(例如,另一个众所周知的开源语言 mySQL)。好消息是,所有的 SQL 语言都非常相似 -- 如果你学习 postgreSQL,则需要几个小时(甚至几分钟)才能适应另一个。我选择了 postgreSQL,因为它很受欢迎(许多在线企业都在使用它),同时它被称为最先进的开源 SQL 语言。

    如果你通过上述链接的文章,请仔细检查,如果你有以下3件事情:

    1.具有终端(或 iTerm)访问权限的数据服务器。

    2.PostgreSQL 安装在你的数据服务器上。

    3.你的计算机上的Pgadmin4(或SQL Workbench)。

    如果缺少某些内容,请再次阅读:安装 bash,Python,R 和 SQL!

    注意:作为一个 SQL 查询工具,相比于 pgadmin4,我更喜欢 SQL Workbench,但这是一种品味的问题。在我的利用 SQL 进行数据分析教程中,我将使用 SQL Workbench(以下是有关如何在计算机上安装它的教程),但你可以随意使用 pgadmin4。这不会有什么区别!

    STEP 1 – 通过命令行登录你的 SQL 数据库!

    太好了!你将在一分钟内编写你的第一个 SQL 查询!首先从命令行访问你的 SQL 数据库!你已经做了一次,我们将重复这个过程:

    1.打开终端(或 iTerm)。

    2.ssh到你的数据服务器

    在我的环境下,我输入:

    ssh tomi@[myipadress]

    3.一旦我登录服务器,我想访问我的 postgreSQL 数据库。因为我已经访问了我的用户,我只需要键入这个命令:

    psql -U tomi -d postgres- psql

    是命令本身以及

    -U

    指定你的用户名(我的为「tomi」),以及

    -d

    指定你的数据库的名称(我的是 postgres 同样适用于你)。你的提示应改为:

    postgres=>

    完成!你可以完全访问你的 SQL 数据库! 4.作为测试,键入:

    \dt

    这会列出你所有的数据表。到目前为止,你只有一个数据表,但是这将会马上改变!

    再次提醒!如果缺少某些东西或者不能运行,请再次阅读:安装 bash,Python,R 和 SQL!

    STEP 2 - 获得数据!

    在本教程中,我们将使用一个非常小的数据集,称为 zoo。

    您可以从这里以原始 .tsv 格式下载,你可以在 Excel 中操作它。如果您已经完成了bash 教程,或者在bash /command line。

    但是,继续使用SQL:

    1)

    创建一个表

    ,我们可以向表中载入数据。在我的后续教程中,我将详细解释这里发生了什么,但现在,你只需将这几行代码复制粘贴到终端中:

    CREATE TABLE zoo (

    2)仔细检查表格是否已创建:

    我们有新的数据表:zoo!

    3)载入数据!

    再次说明:我稍后会解释,但是现在,只是复制粘贴这个 SQL 查询:

    INSERT INTO zoo (animal,uniq_id,water_need) VALUES

    如果一切正常,你会得到这条提醒:

    INSERT 0 22

    最重要的 SQL 语句:SELECT

    是时候学习最基本的 SQL 语句。这是:

    SELECT * FROM table_name;

    每当你在数据上使用读取,过滤,转换,聚合或执行任何操作,你将会使用 SELECT。在这系列教程中,90%的内容将会显示出来,以某种方式修改单一查询。作为开始,我们从 zoo 数据表中 SELECT 任意内容。

    SELECT * FROM zoo;

    我已经得到完整的可读格式的表。(如果要从这个视角中退出,请在键盘上按Q键。)

    我想它甚至不需要一个解释 -- 因为语法本身非常接近英语 - 但是为了以防万一:

    SELECT

    是主语句,它告诉 SQL 我们想从我们的数据表中读取一些东西。

    *

    通常是指「一切」 -- 在这种情况下,这意味着我们想选择每一列。

    FROM

    告诉 SQL,我们要从指定的表中读取数据。

    zoo

    是表的名称。如果你有更多的表,您可以将其替换为任何其他表名。

    ;

    这是一个 SQL 特定的语法。每个查询都应该用分号关闭。如果您不小心错过了,SQL 将期望您继续查询,不会在屏幕上返回任何内容。

    从现在起,你将会使用这种语法。

    SELECT columns

    你可以用实际的列名替换 * 字符。尝试这个查询:

    SELECT animal, water_need FROM zoo;

    (如果要从此视图中退出,请在键盘上按Q键。)

    确切地说,你所期望的是:你的屏幕上列出了「animal」和「waterneed」列,而不是「uniqid」。

    这样可以 SELECT 任何列。你只需要用逗号分隔指定的列名。

    你也可以这样做:

    SELECT animal, animal, animal FROM zoo;

    你会看到同一列多次...但是,因为这是没有意义的,我建议只是根本不这样做。

    显示数据的前几行 -- LIMIT 从句

    现在我们正在使用 22 行的数据表。在「利用 SQL 进行数据分析」系列的下一集中,我们将使用一个 7 M+ 行数据文件。这是一个很大的变化,在这种情况下,每次都在屏幕上打印所有数据是不合理的,而是获取前几行的小样本。为此,使用 LIMIT 从句 - 这是之前介绍的「基础查询」顶部的一个小「扩展」:

    SELECT * FROM zoo LIMIT 10;

    这将仅打印前10行。(记住它是如何在 bash 中完成的?这是

    head -10

    命令。)

    当然,你可以决定要打印多少行,并在 LIMIT 之后指定!

    过滤指定行 -- WHERE从句

    基于数值,你可以用 WHERE 从句选择特定的行。例如:

    SELECT * FROM zoo WHERE animal = 'elephant';

    SELECT * FROM zoo

    -这是「基础查询」

    WHERE

    - 这告诉 SQL 你想过滤一些东西

    animal = 'elephant'

    - animal 是你正在寻找给定值的列名。而 elephant 是值本身。在 SQL 中,你必须添加列名,寻找值。

    - 永远不要忘记分号!

    在利用 SQL 进行数据分析系列的下一集中,我将详细介绍如何充分利用 WHERE!现在,如果你知道这是为了过滤行,便足够了。

    自我测试#1

    这是一个介绍性的文章,所以这第一个任务也将是相当容易的:

    从 zoo 表中选择前 3 个 zebra!

    该解或多或少是本文的总结!

    . . . 准备?

    这是我的解决方案:

    SELECT * FROM zoo WHERE animal = 'zebra' LIMIT 3;

    SQL 很容易,对吧?

    还有一件事:语法...

    稍后,我将向你展示一些最佳实践,以及如何保持 SQL 查询的清洁和高效,但在第一篇文章中,我仅强调两件事情:

    所有的查询都应以分号(;)结尾。如果你不小心错过了,SQL 将期望您继续查询,不会在屏幕上返回任何内容。例如:

    当谈到SQL关键字(SELECT,WHERE,LIMIT等),SQL 并不区分大小写。例如:

    postgres=> SELECT * FROM zoo;

    postgres=> SELECT * FROM zoo

    postgres->

    这不是很好...这样更好:

    SELECT * FROM ZOO WHERE ANIMAL = 'ELEPHANT';

    – DOES NOT WORK

    SELECT * FROM ZOO WHERE ANIMAL = 'elephant';

    – WORKS

    select * from zoo;

    表名,列名和值的区分大小写是你设置的问题。在我们当前的设置(使用postgreSQL)中,表名和列名不区分大小写,但是字段值是。例如。

    工作原理如下:

    请注意,按照惯例上大多数人使用大写 SQL 关键字(SELECT,WHERE,LIMIT等)。它有助于阅读你的代码。

    结论

    相当不错的学习和使用 SQL 进行数据分析!恭喜!现在你可以写你的第一个非常基本的 SQL 查询...但这只是开始!让我们继续下一集,并学习如何使用 WHERE 从句从数据集中过滤东西。

    如果你不想错过下一集,并且也想获得有关即将到来的网络研讨会的信息,请订阅我的每周通讯

  • ?

    零基础学习Python数据分析机器学习系列教程

    然后

    展开

    Pandas中最重要的两种数据结构是Series和DataFrame,上篇文章我们对Series进行了简单的介绍,本篇文章将带大家了解Dataframe。通常我们分析和处理的数据是表格型的,即m行n列的结构,每一列(column)表示不同的数据属性,每一行(row)表示不同的数据对象。在Pandas中Series用来表示数据列,而DataFrame用来表示整个数据表格,也就是说可以把DataFrame看做多个Series的组合。

    DataFrame对象的创建

    传入列表

    创建DataFrame最简单的方法是传入一个列表,可以同时传入索引和列名。列表可以是一维的,也可以是多维的,如果不指定索引或列名,两者会被命名为默认值(0,1,2...)。下图的例子中,向DataFrame方法中传入了3个参数,第1个参数是二维列表,第2个参数是列名,第3个参数是索引,3个参数都是以列表的形式传入,其中列名和索引“columns=”和“index=”不能省略,否则会报AssertionError错误。

    图1 传入列表创建DataFrame对象

    传入数组

    DataFrame方法中也可以传入ndarray数组,传入数组的方式与传入列表几乎一样,不需过多介绍。

    图2 传入数组创建DataFrame对象

    传入字典

    当传入字典时只需要传入索引,不需要传入列名,因为字典中的键key会自动被指定为列名。

    图3 传入字典创建DataFrame对象

    当传入嵌套字典时,索引也不需要传入,外层字典的key会自动变为列名,内层字典的key则自动变成索引。

    图4 传入嵌套字典创建DataFrame对象

    导入外部文件

    当然Pandas还可以直接打开csv文件创建DataFrame对象,Pandas中调用read_csv方法就可以返回一个DataFrame对象,注意如果csv文件不在当前文件夹,则应该填写完整路径。food_info.csv包含的数据量较大(8618行,26列),DataFrame对象数据的访问将在下节介绍。

    DataFrame对象的访问

    DataFrame对象的访问方式跟之前讲过的ndarray和series没有明显的不同,可以通过index和columns属性分别得到索引和列名,还可以使用[列名]访问指定列,使用.loc[ ]索引或切片访问指定行。访问方式比较简单,这里不再赘述,需要提醒读者注意的是:food_info[‘columns’]或food_info.loc[索引]只能获取一列或一行,返回Series对象,而food_info.loc[a : b]或food_info[a : b]使用切片获取多行时,返回DataFrame对象,即使数据只有一行。这充分说明了Series与DataFrame的关系:前者是一维数组结构,而后者是表格型的数据结构。

    图6 DataFrame对象的访问

  • ?

    数据分析建立六步骤

    Troon

    展开

    一、什么是数据分析?

    二、数据分析的分类

    数据分析的三大作用:现状分析、原因分析、预测分析。

    三、数据分析的六部曲

    1.明确目的和思路

    首先先明确分析目的,然后梳理分析思路,并搭建分析框架,把分析目的分解成若干个不同的分析要点,即如何具体开展数据分析,需要从哪几个角度进行分析,采用哪些分析指标(各类分析指标需合理搭配使用)。同时,确保分析框架的体系化和逻辑性。

    2.数据收集

    一般数据来源于四种方式:数据库、第三方数据统计工具、专业的调研机构的统计年鉴或报告、市场调查。

    3.数据处理

    数据处理主要包括数据清洗、数据转化、数据抽取、数据合并、数据计算等处理方法,将各种原始数据加工成为数据分析所要求的样式。

    4.数据分析

    常用的数据分析工具,掌握Excel的数据透视表,就能解决大多数的问题。需要的话,可以再有针对性的学习SPSS、R等工具。

    数据挖掘是一种高级的数据分析方法,侧重解决四类数据分析问题:分类、聚类、关联和预测,重点在寻找模式与规律。

    5.数据展现

    一般情况下,数据是通过表格和图形的方式来呈现的。

    常用的数据图表包括饼图、柱形图、条形图、折线图、气泡图、散点图、雷达图等。进一步加工整理变成我们需要的图形,如金字塔图、矩阵图、漏斗图、帕雷托图等。

    一般能用图说明问题的就不用表格,能用表说明问题的就不用文字。

    图表制作的五个步骤:

    1、确定要表达主题

    2、确定哪种图表最适合

    3、选择数据制作图表

    4、检查是否真实反映数据

    5、检查是否表达观点

    常用图表类型和作用:

    6.报告撰写

    一份好的数据分析报告,首先需要有一个好的分析框架,并且图文并茂,层次明晰,能够让阅读者一目了然。

    结构清晰、主次分明可以使阅读者正确理解报告内容;图文并茂,可以令数据更加生动活泼,提高视觉冲击力,有助于阅读者更形象、直观地看清楚问题和结论,从而产生思考。

    好的数据分析报告需要有明确的结论、建议或解决方案。

    四、数据分析的四大误区

    1.分析目的不明确,为了分析而分析,这是菜鸟常常容易出现的问题;

    2.缺乏行业、公司业务认知,分析结果偏离实际。数据必须和业务结合才有意义。摸清楚所在产业链的整个结构,对行业的上游和下游的经营情况有大致的了解,再根据业务当前的需要,制定发展计划,归类出需要整理的数据。同时,熟悉业务才能看到数据背后隐藏的信息;

    3.为了方法而方法,为了工具而工具,只要能解决问题的方法和工具就是好的方法和工具;

    4.数据本身是客观的,但被解读出来的数据是主观的。同样的数据由不同的人分析很可能得出完全相反的结论,所以一定不能提前带着观点去分析。

    内容来源:小蚊子数据分析

    百家号-【袁帅数据分析运营】运营者:袁帅,互联网数据分析运营实践者。会展业信息化、数字化领域专家。认证数据分析师、网络营销师、SEM搜索引擎营销师、SEO工程师、电子商务职业经理人。

  • ?

    Python数据分析系列教程(二十一)

    友梅

    展开

    1912年当时世界上最大的豪华客轮泰坦尼克号在处女航中撞上冰山沉没,船上船员及乘客共有2224人,只有710人生还。悲剧是惨痛的,即使在一百多年之后的今天仍能给人带来心灵的震撼,当灾难突然降临时,所有人的生死瞬间成了魔鬼撒旦手中的骰子,一切充满了随机性,究竟什么样的人更容易获得命运之神的垂青?幸存者具有哪些共同特点?如果你当时也在船上,生还的概率有多大?从今天开始计划用两篇文章对泰坦尼克数据集进行分析,试图解揭示灾难中幸存的奥秘。

    本文用到的泰坦尼克数据集“titannic_train.scv”来源于kaggle平台上的一个机器学习题目,读者可以到该网站下载该数据集,本文文末也将提供下载链接。kaggle是目前最著名的数据挖掘和预测竞赛的在线平台,它每年都会举办大规模的比赛吸引全世界数据科学爱好者参与其中,因此每个学习数据分析的人都应该去了解这个平台,kaggle平台提供了大量真实的数据集,这些数据集是我们演练数据分析技能,验证机器学习成果最好的实践对象。

    数据预处理

    导入数据集

    本文用到的数据集是一个csv文件,用read_scv方法导入数据文件创建一个DataFrame对象titanic_data,该对象的形状是891行12列,每行对应一名乘客,每列对应乘客的各类信息。12个列包括PassengerId(乘客ID)、Survived(是否幸存)、Pclass(舱位等级)、Name(姓名)、Sex(性别)、Age(年龄)、SibSp(兄弟姐妹数量)、Parch(父母子女数量)、Ticket(船票编号)、Fare(费用)、Cabin(船舱编号)、Embarked(登船地点)。

    图1 数据导入

    数据筛选

    经过对titanic_data中的12个列进行分析我们发现,Survived是我们研究的重点,Pclass、Sex、Age、SibSp、Parch、Fare、Embarked等列可能影响到乘客是否幸存,予以保留;而PassengerId、Name、Ticket等列与是否幸存关系不大,可以舍弃;Cabin虽然会对是否幸存造成影响,但绝大部分数据缺失,导致该列意义不大,因此舍弃。我们用drop方法完成对指定列的删除,axis=1表示删除列,inplace=True表示直接在对象上对数据进行修改。

    图2 数据筛选

    数据清理

    数据清理包括缺失值的填充、异常数据的处理、重复数据的清除等等。在对数据的检查中我们发现在Age列中就有相当一部分是NaN值,我们可以使用isnull函数对Age列进行检查,返回一个布尔型的Series对象。

    在上图的代码中,我们首先将Age列创建为一个Series对象age,然后用isnull函数对age进行判断,将判断结果的布尔值作为索引取得Age列中所有的NaN值,并创建为一个Series对象age_nan。注意:age的长度为891,而age_nan的长度为177,因为第3行代码起到了过滤器的作用,仅保留了NaN值和对应的索引。

    处理缺失数据的方法很多,这里选择填入平均年龄,首先我们用mean函数计算平均年龄,它会自动将NaN值的年龄进行过滤;然后将列Age中所有的NaN值修改为平均年龄。

    图4 缺失数据chuli

    上图的代码中我们使用了DataFrame对象的loc函数获取Age列中的NaN值,并修改成平均年龄mean_ages,很多初学者可能会用链式索引的方式获取NaN值,如语句:titanic_data[pd.isnull(age)]['Age'],这样为什么不行,请读者思考。本文代码和所用数据集已共享到网盘,链接见评论。

    本文介绍了数据集的导入和数据的简单预处理,下篇文章将对泰坦尼克幸存数据进行分析,敬请期待。

数据分析教程

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP