如何成为一名数据工程师
毕业之后,真的是误打误撞进入了互联网这个大环境。从第一份工作接触到Python
开始,了解到它的强大之处,便主动地开始学习,最终还是走上了数据这个行业其中有一定的偶然性,但似乎也是多年前埋下的伏笔。
写这篇文章的初衷主要是将毕业两年多自己对数据行业的一些认识进行了梳理,也给自己的学习找准方向和目标。
思维导图
什么是数据
下面?的内容是引用自MBA
智库:
数据是科学实验、检验、统计等所获得的和用于科学研究、技术设计、查证、决策等的数值。 计算机数据是指计算机中能被识别和处理的物理符号,如数字符号、图形、图像、声音等。数据分为数值型数据(如整数、实数)和非数值型数据(如数字符号、图形、图像、声音等),数据是信息的表现形式。[
数据分类
在日常中我们接触到的数据种类很多,目前自己接触到的主要是三种:
- 数值型数据
- 文本型数据
- 图像/音频型数据
数据格式
数据存储的格式也是层出不穷,常见的数据格式:
- csv
- txt
- json
- xlsx
- doc
- BMP/JPG/JPEG(主要是针对图像)
数据来源
和数据打交道的前提是我们必须要有数据,那么数据从哪里来呢?
开源数据
在网上有很多网站提供开源的数据集,我们可以下载到本地,甚至是直接通过远程访问,再进行数据分析和处理,目前接触到的网站有:
- UCI
- kaggle(机器学习的主要站点)
- 世界银行
- GitHub
- Scikit-learn
- 和鲸社区等
一般这些网站提供的数据都是开源的,有xls
或者csv
格式,可以直接使用
数据库提取
如果我们自己或者公司有服务器,肯定会存储数据,可以直接从服务器进行提取,常见的数据库:
- 关系型数据库
- MySQL
- SQL server
- Oracle
- DB2
- 非关系型数据库
- Redis
- MangoDB
- Hbase
- Tokyo Cabinet/Tyrant
自行获取
如果我们我们需要的数据既没有开源,也没有存储在数据库中,我们只能想方法来自己获取:
- 爬虫
- 人工手动统计(下下策)
最常见的还是通过爬虫的方式来获取网上的数据。
爬虫
在这里主要是讲解下爬虫。爬虫界有句行话:“所见即所得”。
任何在网页上看到的内容都是可以通过爬虫的方式(正规的前提下)来进行获取的
这也体现了爬虫的强大的之处,但是学习爬虫真的是一项十分繁重的任务。爬虫的几个重要步骤:
- 入门前端知识
我们爬取的内容都是呈现在网页上面的,所以必须掌握前端的基础知识,熟悉前端网页的源码结构,了解HTML、CSS、JavaScript
的入门知识,熟悉常见的标签,才能快速地定位到我们需要爬取的数据。
在爬虫的时候建议使用谷歌浏览器,你会事半功倍 在爬虫的时候建议使用谷歌浏览器,你会事半功倍 在爬虫的时候建议使用谷歌浏览器,你会事半功倍
- 获取网页的源码
为了获取到网页的源码,我们要学会通过浏览器给网页发送请求,以利用Python
进行爬虫为例,必须掌握requests
库的使用,才能获取到网页源码,两种常见的请求方式:
- get请求
- post请求
- 解析数据
获取到网页的整个源码数据,我们需要的数据肯定也藏在其中,那么,怎么在茫茫数据大海中提取到我们需要的数据?这个时候我们要学会解析数据,常见的解析数据方法(Python爬取为例):
- 正则匹配
- BeautifulSoup4进行解析
- Xpath解析
- 保存数据
解析获取到想要的数据之后,我们要将他们保存到本地或者数据库中:
- 如果是保存到数据库,每个数据库用对应的方式
- 如果是保存到本地,比如数值型或者文本型数据,可以用csv模块来进行保存
必备知识
当我们想要进行数据处理的时候,必须具备一定的基础,包含:
- 编程语言:首选大火的Python
- 数学知识:高等数学、离散数学
- 概率论和统计类:线性代数、统计学、各种分布、检验方法等
必知算法
- 决策树:C4.5 CART ID3
- K-means
- SVM支持向量机
- Apriori-关联规则
- EM最大期望值
- PageRank
- PCA主成分分析
- AdaBoost迭代算法
- KNN-K近邻算法
- Naive Bayes-朴素贝叶斯算法
- 随机森林
- HMM-隐马尔科夫模型
数据处理工具/语言
数据处理的工具/语言有很多,常见的有:
语言类
- Python pandas numpy
- R
- Matlab
- Julia(最近才兴起的,个人感觉会火的)
- Java、C等
工具类
- 微软office系列
- 神策数据
- Power BI
- Tableau
还有很多各行各业专业的处理数据软件和工具
数据如何处理
针对不同类型的数据有不同的处理,主要讲解下自己接触到较多的数值型和文本型数据的处理方式
数值型
在现在的工作中,接触到最多的就是数值型数据:整型、浮点型、百分比、小数等,常见的处理方式:
- 类型转换
- 特征工程
- 重复值/缺失值处理
- 时间类型处理
- 其他数据清洗
文本型
文本型数据的处理目前业界最流行的莫过于NLP技术,关于NLP技术请看这篇文章NLP
NLP 的6个步骤
- 内容确定 – Content Determination
- 文本结构 – Text Structuring
- 句子聚合 – Sentence Aggregation
- 语法化 – Lexicalisation
- 参考表达式生成 – Referring Expression Generation|REG
- 语言实现 – Linguistic Realisation
NLP4个典型应用
数据可视化
当数据处理好之后,我们需要呈现出来,这个时候需要用到数据可视化的知识,以Python和第三方库为例,常用的可视化库有:
- Matplotlib
- Seaborn
- Plotly_express
- Pyecharts/echarts
- Bokeh
- D3.js
- Highcharts
另外通过Power BI、Tableau、Fin BI、神策大数据等也利用进行数据的可视化。
数据部署
框架选择
生成可视化的界面之后,我们或许想要将它们放在网站上,这个时候我们需要学习一些开源网站框架(如果是大神,也许会自己手工打造?),Python中常用的网页框架:
- Django
- Flask
- Tornado
技术需求
- 学习Linux
部署的环境最好是选择Linux,相比较于Windows,Linux会省去很多环境配置的麻烦,需要掌握Linux的相关知识
- 学习前端 后端
开发的过程中肯定会涉及到前后端的交货,使用到很多的知识点:
- 前端HTML,JavaScript相关,大名鼎鼎的Bootstrap、Vue框架等
- 网络协议相关
- 数据库存储相关
- 前后端分离
- 部署上线
业界目前最流行的部署方式肯定是Docker部署,其他的还有传统的Nginx部署等
- 后期维护
部署上线之后,后期我们可能还需要对网站中出现的各种bug进行维护,代码的优化等
十大Python库
10大经典的进行数据分析、处理的Python
库
- Pandas
- Numpy
- Scikit-Learn
- Keras
- PyTorch
- LightGBM
- Matplotlib
- SciPy
- Theano
- TensorFlow
常用网站
作为一名数据工程师,我们应该经常逛这些网站:
Analytics Vidhya
Kaggle
Coursera
Udacity
Datacamp
EdX
Udemy
KDNuggets
R-bloggers