当今世界对信息技术
的依赖程度在不断加深,每天都会有大量的数据产生,我们经常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。
这里所说的信息,可以理解为对数据集处理之后的结果,是从数据集中提炼出的可用于其他场合的结论性的东西,而**从原始数据中抽取出有价值的信息**
的这个过程我们就称之为**数据分析**
,它是数据科学工作的一部分。
我们通常将从事数据分析
、数据科学
和数据相关产品的岗位
都统称为数据分析岗位
,但是根据工作性质的不同,又可以分为
我们通常所说的数据分析师主要是指**业务数据分析师**
,很多数据分析师的职业生涯都是从这个岗位开始的,而且这个岗位也是招聘数量最大的岗位。业务数据分析师在公司通常不属于研发部门而属于**运营部门**
,所以这个岗位也称为**数据运营**``或``**商业分**
析,通常招聘信息对这个岗位的描述是:
根据上面的描述,作为业务数据分析师,我们的工作不是给领导一个简单浅显的结论,而是结合公司的业务,完成**揪出异常**
、**找到原因**
、**探索趋势**
的工作。
所以作为数据分析师,不管是用python语
言、Excel
、SPSS
或其他的商业智能工具
,工具只是达成目标的手段,**数据思维是核心技能**
,而从实际业务问题出发到最终发现数据中的商业价值是终极目标。
数据分析师在很多公司只是一个基础岗位
,精于业务的数据分析师可以向**数据分析经理**
或**数据运营总监**
等管理岗位发展;
对于熟悉机器学习算法的数据分析师来说,可以向**数据挖掘工程师**
或**算法专家**
方向发展,而这些岗位除了需要相应的数学
和统计学知识
,在编程能力方面也比数据分析师有更高的要求,可能还需要有大数据存储和处理的相关经验;
作为数据产品经理,除了传统产品经理的技能栈之外,也需要较强的技术能力,例如要了解常用的推荐算法、机器学习模型,能够为算法的改进提供依据,能够制定相关埋点的规范和口径,虽然不需要精通各种算法,但是要站在产品的角度去考虑数据模型、指标、算法等的落地;
数据工程师是一个偏技术的岗位,基本上的成长道路都是从SQL
开始,逐步向Hadoop
生态圈迁移,然后每天跟Flume
和Kafka
亲密接触的一个过程。
以下是我总结的数据分析师的技能栈,仅供参考。
我们提到数分析这个词很多时候可能指的都是狭义的数据分析,这类数据分析主要目标就是生成可视化报表并通过这些报表来洞察业务中的问题。
广义的数据分析还包含了数据挖掘的部分,不仅要通过数据实现对业务的监控和分析,还要利用机器学习算法,找出隐藏在数据背后的知识,并利用这些知识为将来的决策提供支撑。
简单的说,一个完整的数据分析应该包括基本的数据分析和深入的数据挖掘两个部分。
基本的数据分析工作一般包含以下几个方面的内容,当然因为行业和工作内容的不同会略有差异。
深入的数据挖掘工作应该包含一下几个方面的内容,当然因为行业和工作内容的不同会略有差异。
使用python
从事数据科学相关的工作是一个非常棒的选择,因为python
整个生态圈中,有大量的成熟的用于数据科学的软件包(工具库)。而且不同于其他的用于数据科学的编程语言(如:Juli
a、R
),python
除了可以用于数据科学,能做的事情还很多,可以说python
语言几乎是无所不能的。
三大神器
NumPy
:支持常见的数组和矩阵操作,通过ndarray
类实现了对多维数组的封装,提供了操作这些数组的方法和函数集。由于NumPy
内置了并行运算功能,当使用多核CPU时,Numpy
会自动做并行计算。Pandas
:pandas
的核心是其特有的数据结构DataFrame
和Series
,这使得pandas
可以处理包含不同类型的数据的负责表格和时间序列,这一点是NumPy
的ndarray
做不到的。使用pandas
,可以轻松顺利的加载各种形式的数据
,然后对数据进行切片
、切块
、处理缺失值
、聚合
、重塑
和可视化
等操作。Matplotlib
:matplotlib
是一个包含各种绘图模块
的库,能够根据我们提供的数据创建高质量的图形。此外,matplotlib
还提供了pylab
模块,这个模块包含了很多像MATLAB
一样的绘图组件。其他相关库
SciPy
:完善了NumPy
的功能,封装了大量科学计算的算法,包括线性代数
、稀疏矩阵
、信号和图像处理
、最优化问题
、快速傅里叶变换
等。Seaborn
:Seaborn
是基于matplotlib
的图形可视化工具,直接使用matplotlib
虽然可以定制出漂亮的统计图表,但是总体来说还不够简单方便,Seaborn
相当于是对matplotlib
做了封装,让用户能够以更简洁有效的方式做出各种有吸引力的统计图表。Scikit-learn
:Scikit-learn
最初是SciPy
的一部分,它是python
数据科学运算的核心,提供了大量机器学习可能用到的工具,包括:数据预处理
、监督学习(分类、回归
)、无监督学习(聚类)
、模式选择
、交叉检验
等。Statsmodels
:包含了经典统计学
和经济计量学算法
的库。如果希望快速开始使用python
处理数据科学相关的工作,建议大家直接安装Anaconda
,它是工具包最为齐全的python科学计算
发行版本。对于新手来说,先安装官方的python解释器,再逐个安装工作中会使用到的库文件会比较麻烦,尤其是在Windows
环境下,经常会因为构建工具
或DLL
文件的缺失导致安装失败,而一般新手也很难根据错误提示信息采取正确的解决措施,容易产生严重的挫败感。
对于个人用户来说,可以从
Anaconda
的官方网站下载它的“个人版(Individual Edition)”安装程序
安装完成后,你的计算机上不仅拥有了python
环境和Spyder
(类似于PyCharm
的集成开发工具),还拥有了与数据科学工作相关的近200个工具包,包括我们上面提到的那些库。除此之外,Anaconda
还提供了一个名为conda
的包管理工具,通过这个工具不仅可以管理python
的工具包,还可以用于创建运行python
程序的虚拟环境。
可以通过Anaconda
官网提供的下载链接选择适合自己操作系统的安装程序,建议大家选择图形化的安装程序,下载完成后双击安装程序开始安装,如下所示。
一次点击next
安装完成即可。
conda命令
如果希望使用conda
工具来管理依赖项或者创建项目的虚拟环境,可以在终端或命令行提示符中使用conda
命令。
Windows
用户可以在“开始菜单”中找到“Anaconda3”,然后点击“Anaconda Prompt”来启动支持conda
的命令行提示符。
macOS
用户建议直接使用“Anaconda-Navigator”中的“Environments”,通过可视化的方式对虚拟环境和依赖项进行管理。
版本和帮助信息。
虚拟环境相关。
conda env list
conda create --name venv
conda create --name venv python=3.7
conda create --name venv python=3.7 numpy pandas
conda create --name venv2 --clone venv
conda env export > environment.yml
conda env create -f environment.yml
conda activate venv
conda deactivate
conda remove --name venv --all
说明:上面的命令中,
venv
和venv2
是虚拟环境文件夹的名字,可以将其替换为自己喜欢的名字,但是强烈建议使用英文且不要出现空格或其他特殊字符。
包(三方库或工具)管理。
conda list
conda search matplotlib
conda install matplotlib
conda update matplotlib
conda remove matplotlib
说明:在搜索、安装和更新软件包时,默认会连接到官方网站进行操作,如果觉得速度不给力,可以将默认的官方网站替换为国内的镜像网站,推荐使用清华大学的开源镜像网站。将默认源更换为国内镜像的命令是:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
。如果需要换回默认源,可以使用命令conda config --remove-key channels
。
安装和启动Notebook
如果已经安装了Anaconda
,macOS
用户可以按照上面所说的方式在“Anaconda-Navigator
”中直接启动“Jupyter Notebook
”(以下统一简称为Notebook
)。
Windows
用户可以在“开始菜单”中找到Anaconda
文件夹,接下来选择运行文件夹中的“Jupyter Notebook
”就可以开始数据科学的探索之旅。
对于安装了python
环境但是没有安装Anaconda
的用户,可以用python的包管理工具pip来安装jupyter
,然后在终端(Windows系统称之为命令行提示符)中运行jupyter notebook
命令来启动Notebook
,如下所示。
安装Notebook:
pip install jupyter
安装三大神器:
pip install numpy pandas matplotlib
运行Notebook:
jupyter notebook
Notebook
是基于网页的用于交互计算的应用程序,可以用于代码开发
、文档撰写
、代码运行
和结果展示
。简单的说,你可以在网页中直接**编写代码**
和**运行代码**
,代码的运行结果也会直接在代码块下方进行展示。
如在编写代码的过程中需要编写说明文档
,可在同一个页面中使用Markdonw
格式进行编写,而且可以直接看到渲染后
的效果。此外,Notebook
的设计初衷是提供一个能够支持多种编程语言的工作环境,目前它能够支持超过40
种编程语言,包括python
、R
、Julia
、Scala
等。
首先,我们可以创建一个用于书写python
代码的Notebook
,如下图所示。
你同样可以使用其他IDE去书写notebook, 也是特别的好用。
Notebook使用技巧
如果使用python做工程化的项目开发,PyCharm肯定是最好的选择,它提供了一个集成开发环境应该具有的所有功能,尤其是智能提示、代码补全、自动纠错这类功能会让开发人员感到非常舒服。如果使用python做数据科学相关的工作,Notebook并不比PyCharm逊色,在数据和图表展示方面Notebook更加优秀。这个工具的使用非常简单,大家可以看看Notebook菜单栏,相信理解起来不会有太多困难,在知乎上有一篇名为《最详尽使用指南:超快上手Jupyter Notebook》的文章,也可以帮助大家快速认识Notebook。
下面我为大家介绍一些Notebook的使用技巧,希望能够帮助大家提升工作效率。
Tab
键会获得代码提示。?
并运行代码, 窗口下方会显示出对应的信息,帮助我们了解该对象,如下所示。*
并配合?
进行搜索,如下所示。调用命令。可以在Notebook中使用!
后面跟系统命令的方式来执行系统命令。
魔法指令。Notebook中有很多非常有趣且有用的魔法指令,例如可以使用%timeit
测试语句的执行时间,可以使用%pwd
查看当前工作目录等。如果想查看所有的魔法指令,可以使用%lsmagic
,如果了解魔法指令的用法,可以使用%magic
来查看,如下图所示。
常用的魔法指令有:
魔法指令 | 功能说明 |
---|---|
%pwd |
查看当前工作目录 |
%ls |
列出当前或指定文件夹下的内容 |
%cat |
查看指定文件的内容 |
%hist |
查看输入历史 |
%matplotlib inline |
设置在页面中嵌入matplotlib输出的统计图表 |
%config Inlinebackend.figure_format='svg' |
设置统计图表使用SVG格式(矢量图) |
%run |
运行指定的程序 |
%load |
加载指定的文件到单元格中 |
%quickref |
显示IPython的快速参考 |
%timeit |
多次运行代码并统计代码执行时间 |
%prun |
用cProfile.run 运行代码并显示分析器的输出 |
%who / %whos |
显示命名空间中的变量 |
%xdel |
删除一个对象并清理所有对它的引用 |
快捷键。Notebook中的很多操作可以通过快捷键来实现,使用快捷键可以提升我们的工作效率。Notebook的快捷键又可以分为命令模式下的快捷键和编辑模式下的快捷键,所谓编辑模式就是处于输入代码或撰写文档状态的模式,在编辑模式下按Esc
可以回到命令模式,在命令模式下按Enter
可以进入编辑模式。
命令模式下的快捷键:
快捷键 | 功能说明 |
---|---|
Alt + Enter(Option + Enter) | 运行当前单元格并在下面插入新的单元格 |
Shift + Enter | 运行当前单元格并选中下方的单元格 |
Ctrl + Enter(Command + Enter) | 运行当前单元格 |
j / k、Shift + j / Shift + k | 选中下方/上方单元格、连续选中下方/上方单元格 |
a / b | 在下方/上方插入新的单元格 |
c / x | 复制单元格 / 剪切单元格 |
v / Shift + v | 在下方/上方粘贴单元格 |
dd / z | 删除单元格 / 恢复删除的单元格 |
l / Shift + l | 显示或隐藏当前/所有单元格行号 |
ii / 00 | 中断/重启Notebook内核 |
Space / Shift + Space | 向下/向上滚动页面 |
编辑模式下的快捷键:
快捷键 | 功能说明 |
---|---|
Shift + Tab | 获得提示信息 |
Ctrl + ](Command + ])/ Ctrl + [(Command + [) | 增加/减少缩进 |
Alt + Enter(Option + Enter) | 运行当前单元格并在下面插入新的单元格 |
Shift + Enter | 运行当前单元格并选中下方的单元格 |
Ctrl + Enter(Command + Enter) | 运行当前单元格 |
Ctrl + Left / Right(Command + Left / Right) | 光标移到行首/行尾 |
Ctrl + Up / Down(Command + Up / Down) | 光标移动代码开头/结尾处 |
Up / Down | 光标上移/下移一行或移到上/下一个单元格 |
温馨提示:如果记不住这些快捷键也没有关系,在命令模式下按
h
键可以打开Notebook的帮助系统,马上就可以看到快捷键的设置,而且可以根据实际的需要重新编辑快捷键,如下图所示。