本章内容
- 理解数据
- 认识数据分析
- 数据分析工具Python
- 集成开发环境和文本编辑器
- 使用Jupter Notebook
理解数据
需要分析的数据一般是结构化的、半结构化的、非结构化的数据集合。
大部分数据集都能够被转化为更加适合分析和建模的结构化形式。
主要的结构化数据
- 表格型数据,其中各列可能是不同的类型(字符串、数值、日期等),比如报讯在关系型数据库中或以制表符/逗号为分隔符的文本文件中的那些数据。
- 多维数组(矩阵) 一维、二维、三维等多种形式
- 通过关键列相互联系的多个表,如sql中的主外键
- 间隔平均或不平均的时间序列
认识数据分析
数据分析的概念
数据分析是指用适当地统计分析方法对收集来的大量数据进行分析,提取有用的信息和形成结论而对数据加以详细研究和概括总结的过程。
数据分析方法
- 描述型分析:描述发生了什么
- 诊断型分析:得出发生的原因
- 预测型分析:预测事件未来发生的可能性
- 指令型分析:应该采取什么措施
数据分析的一般流程
需求分析——数据获取——数据预处理——数据分析与建模——模型评价和优化——部署
- 需求分析:数据分析中的需求分析也是数据分析环节的第一步和最重要的步骤之一,决定了后续的分析的方向、方法。
- 数据获取:数据获取是数据分析工作的基础,是指根据需求分析的结果提取,收集数据。
- 数据预处理:数据预处理是指对数据进行数据合并,数据清洗,数据变换和数据标准化,数据变换后使得整体数据变为干净整齐,可以直接用于分析建模吗这一过程的总称。
- 分析与建模:分析与建模是指通过对比分析、分组分析、交叉分析、回归分析等分析方法和聚类、分类、关联规则、职能推荐等模型与算法发现数据中的有价值信息,并得出结论的过程。
- 模型评价与优化:模型评价是指对已经建立的一个或多个模型,根据其模型的类别,使用不同的指标评价其性能优劣的过程。
- 部署:部署是指将通过了正式应用数据分析结果与结论应用至实际生产系统的过程。
数据分析工具Python
目前主流的数据分析语言右R、Python 程序语言
功能对比
- Python与R相比速度快
- 统计理论研究、前沿科学研究,R比Python更胜一筹
- Python的工程化应用强于R
- Python的应用场景大于R
- Python处理大数据的速度快于R
应用场景对比
- 使用Python进行数据预处理、数据清洗,特别针对于非结构化数据(如网页,图像,文本等),极强的灵活性,能够从自由文本、网站和社交媒体网站提取信息,便于图像挖掘和为分析准备数据
- 使用R进行分析、数据可视化于建模:为分析提供了极好的灵活性;R使你在分析的时候更容易思考;由于有着十分活跃的统计与数学社区,可以持续的更新和增强分析功能优秀的数据可视化工具
Python的优势
- 优雅、简单、明确:它是一种代表简单思想的语言,有简单的语法,容易上手
- 强大的标准库:完善的基础代码库,覆盖了网络通信、文件处理、数据库接口、图形系统、XML处理等大量内容,被形象地称为“内置电池”
- 良好的扩展性:大量的第三方模块,覆盖了众多领域,开发的代码通过很好的封装,也可以作为第三方模块给别人使用
- “胶水语言”:免费开源,可移植,还可以嵌入到C,C++等程序
重要的Python数据分析类库
NumPy
Numerical Python的简称,是Python科学计算的基础包
- 提供了快速高效的多维数组对象ndarry
- 提供了对数组执行元素级计算以及直接对数组执行数学运算的函数
- 提供了读写硬盘上基于数组的数据集的工具
- 提供了线性袋鼠运算、傅立叶变换、随机数生成功能
- 提供了成熟的C API,用于Python插件和原生C、C++、Fortran代码访问NumPy的数据结构和计算工具
- 为Python提供快速的数组处理能力
- 在数据分析方面作为在算法和库之间传递数据的容器
- 对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python数据结构高效得多
- 由低级语言(比如C和Fortran)便携的库可以直接操作NumPy数组中的数据,无需进行任何数据复制工具
pandas
pandas是Python的一个数据分析包,最初被作为金融数据分析工具而开发出来
- 为时间序列分析提供了很好的支持
- 是基于NumPy的一种工具,是为了解决数据分析任务而创建的
- 纳入了大量的库和一些标准的数据模型,提供了高效地操作大型数据集所需要的工具
- 提供了大量能够使我们快速便捷地处理数据的函数和方法
- 是使Python成为强大而高效的数据分析环境的重要因素之一
Matplotlib
Matplotlib是Python的一个2D会图库
- 以各种硬拷贝格式和跨平台的交互式环境,生成用于出版质量级别的图形
- 操作简单,开发者仅需要几行代码,便可以生成折线图、直方图、功率谱图、条形图、错误图、散点图等
- 提供了pylab的模块,其中包括了NumPy和pyplot中许多常用的函数,方便用户快速进行计算和绘图
SciPy
SciPy是一组专门解决科学计算中各种标准问题域的包的集合
- scipy.integrat 数值积分例程和微分方程求解器
- scipy.linalg 扩展了由numpy.lunalg提供的线性代数例程和矩阵分解功能
- scipy.optimize 函数优化器(最小化器)以及根查找算法
- scipy.signal 信号处理工具
- scipy.sparse 稀疏矩阵和稀疏线性系统求解器
- scipy.special SPECFUN(这是一个实现了许多常用数学函数如伽马函数的Fortran库)的包装器
- scipy.stats 标准连续和离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计检验方法,以及更好地描述统计法
scilit-learn
scikit-learn是最为流行的Python的通用机器学习工具包
- 简单有效,可以供用户在各种环境下重复使用
- 封装了一些常用的算法方法
- 基本模块主要由数据预处理、模型选择、分类、聚类、数据降维和回归6个,在数据量不大的情况下,scikit-learn可以解决绝大部分问题
stats models
stats modls是一个统计分析包,包含经典统计学和经济计量学的算法
- 回归模型:线性回归,广义线性模型,健壮线性模型,线性混合效应模型等等
- 方差分析(ANOVA)
- 时间序列分析:AR、ARMA、ARIMA、VAR和其它模型
- 非参数方法:核密度估计、核回归
- 统计模型结果可视化
集成开发环境和文本编辑器
- IPython + Jupyter Notebook
- PyDev(免费),基于Eclipse平台的IDE
- JetBrains的PyCharm(商业用户需要订阅,开源开发者免费)
- Visual Studio(Windows用户)的Python Tools
- Spyder(免费),Anaconda附带的IDE
- komodo IDE(商业)
- Others...
文本编辑器
Sublime Text3、Atom
使用Jupyter Notebook
- Jupyter Notebook 是一个交互式笔记本,支持运行40多种编程语言
- 本质是一个支持实时代码、数学方程、可视化和markdown的Web 应用程序
- 需要与内核互动,内核是Jupyter与其它编辑语言的交互编程协议
- Python的Jupyter内核是使用IPython
启动Jupyter Notebook
Window
- 打开windows中的命令提示符或Linux中的命令行终端
- 输入jupyter notebook命令启动
Mac
安装Anaconda进入
新建一个Nootbook文件
-
Text File :纯文本型
-
Folder :文件夹
- Python3 : Python运行脚本
可以先建一个Folder文件夹,再建一个Python3脚本,也可以直接新建Python3脚本。
选择Python3
输入python代码
按 shift + enter 运行,也可以点击工具栏的Run(运行按钮)运行
保存notebook
File菜单下的选择Save and Checkpoint,会创建一个后缀名为ipynb的文件
修改文件名
默认文件名是Untitled,点击图中红框可以修改
输入新的文件名
也可以关闭脚本后再文件列表页进行文件名的修改
Tab补全
- 输入表达式时,按下Tab,会搜索已输入变量(对象、函数等等)的命名空间
- 可以补全任何对象的方法和属性
- 可以补全模块
- 可以补全文件路径
常用快捷键
“Shift + Enter”组合键 |
运行代码 |
“Esc”键 |
进入命令模式 |
“Y”键 |
切换代码单元 |
“M”键 |
切换到Markdown单元 |
“B”键 |
在本单元的下方增加一单元 |
“H”键 |
查看所有快捷键命令 |
Markdown单元
markdown是一种使用普通文本编辑器编写的标记语言,通过简单的标记语法,可以使普通文本内容具有一定的格式
Markdown 文本操作---设置标题
- 在标题文字的前面加一个“#”,代表一级标题;加两个“#”,代表二级标题,依次类推
- 文字与井号之间要加空格
点击运行后显示各级标题
Markdown文本操作---设置列表
列表是一种由数据项构成的有限序列,分为无序列表和有序列表
在文字的前面使用*、+、-作为列表标记,符号与文字之间加空格
在文字前面使用数字+“、.”作为序号,符号与文字之间加空格
运行后显示列表
Markdown文本操作---设置文字
为了使文档中的内容更加醒目,可以对文字使用加粗或斜体格式
在文字的前后使用两个星号**或下划线“_ _”
在文字前后使用三个星号***或下划线“_ _ _”
运行后结果显示字体加粗或字体倾斜
Markdown文本操作---绘制表格
- 代码的第一行表示表头
- 第二行分隔表头和主体部分
- 从第三行开始,每一行代表一个表格行
- 列与列之间用符号“|”隔开
- 表格每一行的两边也要有符号“|”
Markdown文本操作---导出功能
- 可以将Notebook到处为多种格式,如HTML、Markdown、reST、PDF(通过LaTex)等格式
- 导出功能可通过选择“File”——“Download as”级联菜单中的命令实现