整个流程可以大概分成四部分。
1. 数据获取:①本地获取,用户手工输入,或者以文本文件的形式读取,又或读取某个数据库;②网络获取,比如爬取信息,对信息解析,保存到文件,或者网站直接提供了api与数据下载。
2.数据整理:把数据获取的部分,按我们需要的方式给整理完成,包括数据格式,数据的取舍,数据计算等等,又可以称为“数据清洗”,其目的是为了之后的数据分析,减轻分析的难度。
3.数据分析:在整理的基础上,按照我们想要的方式对数据进行分析,统计
4.数据展示:完成分析后,把结果展示出来,又可以细分为传统的控制台展示;以图形化的形式展示(数据可视化);也可以不展示,把分析结果保存到文件里。
尽管用其他程序语言也可以完成相同的工作,但python的简易性,众多的第三方库已经对类似的工作,进行了大量的“奠基”,站在前人的肩膀上,能够大大减少开发难度与时间。
同时,因为python的第三方太多,这就造成了数据分析的整个流程中,同一个功能,很可能许多库都能完成,而多个流程,也可能由一个库就能解决,存在重叠性。
Anaconda 是一个第三方提供的开源免费工具集平台,它支持800多个python第三方库,包含多个主流工具,特别适合数据计算领域开发,跨平台能在Windows/linux/os x 等系统上使用。
工具集平台:Anaconda IDE,包括conda,spyder,IPython三个核心。
工具之一:conda 包管理和环境管理,包管理与pip类似,管理python的第三方库;环境管理能够允许用户使用不同版本的python,灵活在它们之间切换。conda工具将其他工具,第三方库,python版本,与conda自己都当成包,同等对待。
工具之一:Spyder 编写和调试python源代码的工具,Windows有一个spy++工具,两者完全不同,不要混淆
工具之一:IPython interactive扩展的交互环境,在python基础的交互环境(黑框框shell)之上增强了很多功能,使得输入输出更加清晰,适合可视化和GUI相关应用。在这个交互环境中,使用?能直接显示变量类型,%run demo.py 直接运行py程序。
以上都是通用领域的开发工具,还有两个特别适合科学技术与数据分析领域:
canopy是收费滴,SO…………
首先认识numpy库,它是一个开源的python科学计算基础库,它提供了以下功能:
1.一个强大的N维数组对象ndarray
2.广播功能函数,用来在数组间进行计算
3.整合c/c++/fortran代码的工具
4.线性代数,傅立叶变换,随机数生成等
数据纬度:一组数据的组织形式,向一维方向展开,就是一维数据,向N个纬度上展开,就是N维数据。
一维数据:我们日常使用的数组,python对应的列表,集合等概念。
二维数据:由多个一维数据组成,是一维数据的组合形式,典型“表格”,其中表头可以是二维数据的一部分,也可以单独存在。
多维数据:由一维或二维数据在新的纬度上扩展,比如书本。
高维数据:和多维不同,仅使用简单的二元关系来表示复杂的数据,典型就是“字典”这种键值对。
既然python基础已经提供了列表这样的复杂数据结构,能够表示多维,为什么还需要额外引入ndarray呢?
例子:使用基础python方法
这样的计算方法,思维重点还是在单个元素上,而numpy提供了更接近科学计算的思想模式
代码量并没有减少,但是它编程的方式符合科学计算思想。
ndarry特点:
①数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。
②设置专门的数组对象,经过优化,可以提升这类应用的运算速度。
③经过观察,在科学计算中,一个纬度的所有数据类型往往相同,数组对象采用相同的数据类型,有助于节省运算和存储空间。
换句话说,python基础的列表结构,尽管提供了灵活性,但同时也在运算速度和存储空间方面做了取舍。
ndarry由两部分构成:
①实际的数据
②描述这些数据的元数据(数据纬度,数据类型等)
因为元数据需要一些额外信息,所以轴(axis)保存数据的纬度,秩(rank)表示轴的数量。
实例:
int32是numpy自己定义的,不属于python基本类型
为什么ndarray要支持这么多复杂的类型呢?
对比python仅有bool,整数,浮点数和复数4种基础类型。
因为科学计算设计数据较多,对存储和性能都有较高要求,元素类型精细定义,有助于numpy合理使用存储空间并优化性能。
同时对元素类型精细定义,有助于程序员对程序规模有合理评估。