重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
学习数据分析师之前,你必须清楚自己想要达成什么目标。也就是说,你想通过这门技术来解决哪些问题或实现什么计划。有了这个目标,你才能清晰地开展自己的学习规划,并且明确它的知识体系。只有明确的目标导向,学习必备也是最有用的那部分,才能避免无效信息降低学习效率。
为淮安等地区用户提供了全套网页设计制作服务,及淮安网站建设行业解决方案。主营业务为网站制作、做网站、淮安网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1、明确知识框架和学习路径
数据分析这件事,如果你要成为数据分析师,那么你可以去招聘网站看看,对应的职位的需求是什么,一般来说你就会对应该掌握的知识架构有初步的了解。你可以去看看数据分析师职位,企业对技能需求可总结如下:
SQL数据库的基本操作,会基本的数据管理;
会用Excel/SQL做基本的数据提取、分析和展示;
会用脚本语言进行数据分析,Python or R;
有获取外部数据的能力加分,如爬虫或熟悉公开数据集;
会基本的数据可视化技能,能撰写数据报告;
熟悉常用的数据挖掘算法:回归分析、决策树、分类、聚类方法;
高效的学习路径是什么?就是数据分析的流程。一般大致可以按“数据获取-数据存储与提取-数据预处理-数据建模与分析-数据可视化”这样的步骤来实现一个数据分析师的学成之旅。按这样的顺序循序渐进,你会知道每个部分需要完成的目标是什么,需要学习哪些知识点,哪些知识是暂时不必要的。然后每学习一个部分,你就能够有一些实际的成果输出,有正向的反馈和成就感,你才会愿意花更多的时间投入进去。以解决问题为目标,效率自然不会低。
按照上面的流程,我们分需要获取外部数据和不需要获取外部数据两类分析师,总结学习路径如下:
1.需要获取外部数据分析师:
python基础知识
python爬虫
SQL语言
python科学计算包:pandas、numpy、scipy、scikit-learn
统计学基础
回归分析方法
数据挖掘基本算法:分类、聚类
模型优化:特征提取
数据可视化:seaborn、matplotlib
2.不需要获取外部数据分析师:
SQL语言
python基础知识
python科学计算包:pandas、numpy、scipy、scikit-learn
统计学基础
回归分析方法
数据挖掘基本算法:分类、聚类
模型优化:特征提取
数据可视化:seaborn、matplotlib
接下来我们分别从每一个部分讲讲具体应该学什么、怎么学。
数据获取:公开数据、Python爬虫
如果接触的只是企业数据库里的数据,不需要要获取外部数据的,这个部分可以忽略。
外部数据的获取方式主要有以下两种。
第一种是获取外部的公开数据集,一些科研机构、企业、政府会开放一些数据,你需要到特定的网站去下载这些数据。这些数据集通常比较完善、质量相对较高。
另一种获取外部数据费的方式就是爬虫。
比如你可以通过爬虫获取招聘网站某一职位的招聘信息,爬取租房网站上某城市的租房信息,爬取豆瓣评分评分最高的电影列表,获取知乎点赞排行、网易云音乐评论排行列表。基于互联网爬取的数据,你可以对某个行业、某种人群进行分析。
在爬虫之前你需要先了解一些 Python 的基础知识:元素(列表、字典、元组等)、变量、循环、函数(链接的菜鸟教程非常好)……以及如何用成熟的 Python 库(urllib、BeautifulSoup、requests、scrapy)实现网页爬虫。如果是初学,建议从 urllib 和 BeautifulSoup 开始。(PS:后续的数据分析也需要 Python 的知识,以后遇到的问题也可以在这个教程查看)
网上的爬虫教程不要太多,爬虫上手推荐豆瓣的网页爬取,一方面是网页结构比较简单,二是豆瓣对爬虫相对比较友好。
掌握基础的爬虫之后,你还需要一些高级技巧,比如正则表达式、模拟用户登录、使用代理、设置爬取频率、使用cookie信息等等,来应对不同网站的反爬虫限制。
除此之外,常用的的电商网站、问答网站、点评网站、二手交易网站、婚恋网站、招聘网站的数据,都是很好的练手方式。这些网站可以获得很有分析意义的数据,最关键的是,有很多成熟的代码,可以参考。
数据存取:SQL语言
你可能有一个疑惑,为什么没有讲到Excel。在应对万以内的数据的时候,Excel对于一般的分析没有问题,一旦数据量大,就会力不从心,数据库就能够很好地解决这个问题。而且大多数的企业,都会以SQL的形式来存储数据,如果你是一个分析师,也需要懂得SQL的操作,能够查询、提取数据。
SQL作为最经典的数据库工具,为海量数据的存储与管理提供可能,并且使数据的提取的效率大大提升。你需要掌握以下技能:
提取特定情况下的数据:企业数据库里的数据一定是大而繁复的,你需要提取你需要的那一部分。比如你可以根据你的需要提取2018年所有的销售数据、提取今年销量最大的50件商品的数据、提取上海、广东地区用户的消费数据……,SQL可以通过简单的命令帮你完成这些工作。
数据库的增、删、查、改:这些是数据库最基本的操作,但只要用简单的命令就能够实现,所以你只需要记住命令就好。
数据的分组聚合、如何建立多个表之间的联系:这个部分是SQL的进阶操作,多个表之间的关联,在你处理多维度、多个数据集的时候非常有用,这也让你可以去处理更复杂的数据。
数据预处理:Python(pandas)
很多时候我们拿到的数据是不干净的,数据的重复、缺失、异常值等等,这时候就需要进行数据的清洗,把这些影响分析的数据处理好,才能获得更加精确地分析结果。
比如空气质量的数据,其中有很多天的数据由于设备的原因是没有监测到的,有一些数据是记录重复的,还有一些数据是设备故障时监测无效的。比如用户行为数据,有很多无效的操作对分析没有意义,就需要进行删除。
那么我们需要用相应的方法去处理,比如残缺数据,我们是直接去掉这条数据,还是用临近的值去补全,这些都是需要考虑的问题。
对于数据预处理,学会 pandas 的用法,应对一般的数据清洗就完全没问题了。需要掌握的知识点如下:
选择:数据访问(标签、特定值、布尔索引等)
缺失值处理:对缺失数据行进行删除或填充
重复值处理:重复值的判断与删除
空格和异常值处理:清楚不必要的空格和极端、异常数据
相关操作:描述性统计、Apply、直方图等
合并:符合各种逻辑关系的合并操作
分组:数据划分、分别执行函数、数据重组
Reshaping:快速生成数据透视表
概率论及统计学知识
数据整体分布是怎样的?什么是总体和样本?中位数、众数、均值、方差等基本的统计量如何应用?如果有时间维度的话随着时间的变化是怎样的?如何在不同的场景中做假设检验?数据分析方法大多源于统计学的概念,所以统计学的知识也是必不可少的。需要掌握的知识点如下:
基本统计量:均值、中位数、众数、百分位数、极值等
其他描述性统计量:偏度、方差、标准差、显著性等
其他统计知识:总体和样本、参数和统计量、ErrorBar
概率分布与假设检验:各种分布、假设检验流程
其他概率论知识:条件概率、贝叶斯等
有了统计学的基本知识,你就可以用这些统计量做基本的分析了。通过可视化的方式来描述数据的指标,其实可以得出很多结论了,比如排名前100的是哪些,平均水平是怎样的,近几年的变化趋势如何……
你可以使用python的包 Seaborn(python包)在做这些可视化的分析,你会轻松地画出各种可视化图形,并得出具有指导意义的结果。了解假设检验之后,可以对样本指标与假设的总体指标之间是否存在差别作出判断,已验证结果是否在可接受的范围。
python数据分析
如果你有一些了解的话,就知道目前市面上其实有很多 Python 数据分析的书籍,但每一本都很厚,学习阻力非常大。但其实真正最有用的那部分信息,只是这些书里很少的一部分。比如用 Python 实现不同案例的假设检验,其实你就可以对数据进行很好的验证。
比如掌握回归分析的方法,通过线性回归和逻辑回归,其实你就可以对大多数的数据进行回归分析,并得出相对精确地结论。比如DataCastle的训练竞赛“房价预测”和“职位预测”,都可以通过回归分析实现。这部分需要掌握的知识点如下:
回归分析:线性回归、逻辑回归
基本的分类算法:决策树、随机森林……
基本的聚类算法:k-means……
特征工程基础:如何用特征选择优化模型
调参方法:如何调节参数优化模型
Python 数据分析包:scipy、numpy、scikit-learn等
在数据分析的这个阶段,重点了解回归分析的方法,大多数的问题可以得以解决,利用描述性的统计分析和回归分析,你完全可以得到一个不错的分析结论。
当然,随着你实践量的增多,可能会遇到一些复杂的问题,你就可能需要去了解一些更高级的算法:分类、聚类,然后你会知道面对不同类型的问题的时候更适合用哪种算法模型,对于模型的优化,你需要去学习如何通过特征提取、参数调节来提升预测的精度。这就有点数据挖掘和机器学习的味道了,其实一个好的数据分析师,应该算是一个初级的数据挖掘工程师了。
系统实战
这个时候,你就已经具备了数据分析的基本能力了。但是还要根据不同的案例、不同的业务场景进行实战。能够独立完成分析任务,那么你就已经打败市面上大部分的数据分析师了。
如何进行实战呢?
上面提到的公开数据集,可以找一些自己感兴趣的方向的数据,尝试从不同的角度来分析,看看能够得到哪些有价值的结论。
另一个角度是,你可以从生活、工作中去发现一些可用于分析的问题,比如上面说到的电商、招聘、社交等平台等方向都有着很多可以挖掘的问题。
开始的时候,你可能考虑的问题不是很周全,但随着你经验的积累,慢慢就会找到分析的方向,有哪些一般分析的维度,比如top榜单、平均水平、区域分布、年龄分布、相关性分析、未来趋势预测等等。随着经验的增加,你会有一些自己对于数据的感觉,这就是我们通常说的数据思维了。
你也可以看看行业的分析报告,看看优秀的分析师看待问题的角度和分析问题的维度,其实这并不是一件困难的事情。
在掌握了初级的分析方法之后,也可以尝试做一些数据分析的竞赛,比如 DataCastle 为数据分析师专门定制的三个竞赛,提交答案即可获取评分和排名:
员工离职预测训练赛
美国King County房价预测训练赛
北京PM2.5浓度分析训练赛
种一棵树最好的时间是十年前,其次是现在。现在就去,找一个数据集开始吧!!
Java对mysql的支持较好,您可以学习mysql,如果您想要配置mysql的开发环境,可以百度一下,或者配置一下wampServer,这个是php的开发环境,同样支持mysql,您可以使用php脚本来控制他,当然如果您需要的话可以用这个。
mysql的学习可以在菜鸟教程或者慕课网上学习,比较全,或者购买书籍学习。
MongoDB 插入文档
本章节中我们将向大家介绍如何将数据插入到MongoDB的集合中。
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
实例
以下文档可以存储在 MongoDB 的 runoob 数据库 的 col集合中:
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: '',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
以上实例中 col 是我们的集合名,前一章节我们已经创建过了,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
查看已插入文档:
db.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
我们也可以将数据定义为一个变量,如下所示:
document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: '',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
执行后显示结果如下:
{
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
执行插入操作:
db.col.insert(document)
WriteResult({ "nInserted" : 1 })
插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
交互式 mongo shell
mongo 127.0.0.1:27017
use test
db.users.findOne()
mongo --eval 运行一段脚本
mongo 127.0.0.1:27017/test --eval "printjson(db.users.findOne())"
在OS命令行下,运行一个js文件
mongo 127.0.0.1:27017/test userfindone.js
userfindone.js 的内容:
printjson(db.users.findOne());
在mongo shell 交互模式下,运行一个js文件
mongo test
load("/root/mongojs/userfindone.js")
load() 参数中的文件路径,既可以是相对路径,也可以是绝对路径。
在mongo shell下查看当前工作路径的方法: pwd( )
当前工作路径就是我们启动mongo shell时,当前用户所处的路径。
例如:
[root@cgl-centos-dev mongojs]# pwd
/root/mongojs
[root@cgl-centos-dev mongojs]# mongo
MongoDB shell version: 2.6.12
connecting to: test
pwd()
/root/mongojs
MongoDB 查询数据的语法格式如下:
db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档
以下实例我们查询了集合 col 中的数据:
db.col.find().pretty(){
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100}
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
对于python的入门
首先会学习python基础语法,面向对象编程与程序设计模式的理解、python数据分析基础、python网络编程、python并发与高效编程等等。
通过前期python学习来了解和掌握常量变量的使用,运算符的使用、流程控制的使用等,最后掌握python编程语言的基础内容。
并会对常见数据结构和相应算法进行学习,注重表格的处理,树结构的处理知识。
第二阶段主要学习内容是web页面开发、web页面特效开发、数据持久化开发、linux运维开发、linux测试开发、服务器集群架构等等。
对js的掌握并在网络前端中使用,而且需要详细将js学习并掌握,为将来从事全栈工作打下基础,也会学习linux操作系统的基础知识和掌握linux操作系统常用命令,并会学习linux自动化运维技巧等。
第三阶段主要学习网络爬虫,数据分析加人工智能:
这一个阶段需要学习的内容也是比较多的,例如:爬虫与数据、多线程爬虫、go语言、NoSQL数据库、Scrapy-Redis框架。
需要掌握爬虫的工作原理和设计思想,掌握反爬虫机制,并且通过学习NoSQL数据库和Scrapy-Redis框架,并且可以使用分布式爬虫框架实现大量数据的获取。
数据分析和人工智能阶段需要学习的数据分析、人工智能深度学习、量化交易模型、数据分析-特征工程和结果可视化和人工智能机器学习等等。
需要理解随机变量的数字特征的概念和性质,并会利用性质计算随机变量的数字特征,了解可视化过程,图形绘制。并且需要掌握Matplotlib模块、常用的机器学习算法等等。
最后就是对于python的入门学习,我们在学习理论、学习python语法基础的同时我们应该多动手、多联系。但是呢,对于我们零基础的小伙伴呢,一般不建议自学。
你肯定要问为什么?我就知道!原因大概有三点:
首先我们自学虽然成本低、学习时间灵活等,但是你想过没,你要自学到就业的程度大概需要多长时间,辞职在家学习,或者买个网课,每天听课、练,你可能需要1年左右,就这你还不一定能够学会、换不一定能够全面掌握企业需要的技术;然后报班学习的学员都已经学完工作半年了。
其次就是学习知识的系统性、前沿性。IT行业的学习一定要系统,不能说我们这里一点那里学一点,完了全是一片一片的知识点,听起来你都有涉及但是真正做项目反而使用不起来,很耽误时间。其次就是前沿性,学习时一定要选择最新的课程大纲、最新的课程。IT行业的技术更新很快。
最后就是就业服务和保障,我们选择报班学习一般都有就业服务,当然我们在学习完也会进行模拟面试和简历指导的等工作。其次就是服务,一般培训机构都有合作企业来招聘,大大增加了我们的就业机会。
总而言之你是零基础选择培训绝对是最快速的转行入门途径!