[python之数据分析] 基础篇1- Numpy,Scipy,Matplotlib 快速入门攻略

本文全部来自我(小麦)的《大数据公选》课程讲义,包括三篇python和Numpy等数据分析包的相关教程,excel和SPSS的数据分析教程等等,作者是小麦以及懿文同学,是原创资料。本来是课程内部资料,现在开源出来,仅供大家学习。如要转载,请联系我,并尊重版权。

Python Data Analysis Fundamental Turtorial

Python 基本语法和数据结构

已在另一篇文章介绍

参见我的博文 http://blog.csdn.net/xiaomai_sysu/article/details/51103070

Python的模块——Module

与C/C++的头文件(.h)类似,一个python程序可以显式调用其他模块的函数/类。

目的:

1. 避免臃肿的客户程序,让使用者按需调用模块;

2. 模块化思维,使得模块之间高内聚、低耦合

方法:

文件开始处,使用import语句

例如:

导入整个模块的所有内容:

import MyModule

导入一个模块的某一个函数:

import MyModule.MyFunction

导入一个模块的某一个类:

import MyModule.MyClass

导入以后,就可以使用在其他文件里定义的函数

比如,可以这样直接使用Mymodule.py的文件里的函数MyFunction:

MyModule.MyFunction

当然,除了import语句外,你也可以使用from..import..语句

from MyModule import MyFunction

这种用法比起上面的用法更简便,因为你把命名空间设置成了MyModule

以后再调用这个MyFunction时,只需要直接用MyFunction即可,而不需要用MyModule.MyFunction

python科学数据包Anaconda2

Anaconda2是一键安装式的,内部已经先安装好了包括NumPy, SciPy, Matplotlib等数值计算的包,也包括其他网络扩展包

如果你之前没有使用和安装过python,那么强烈建议你到

https://www.continuum.io/downloads

在Windows版本下,选择32位/64位的python2.7进行下载。下载后双击安装即可,非常简单。

安装后,进入安装目录

Anaconda2\ Scripts\

单击ipython.exe,就可以进入python的命令行模式

(你可以右键-发送快捷方式到桌面,方便以后的运行)

交互式命令行窗口ipython

Ipython是交互式的命令行。

它比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

最前面有输入提示,In[1]: 表示现在是第一行输入

使用Ipython的最大好处在于,可以用交互式的命令,快速实现一个idea,并进行验证。

高度优化的多维数组的支持Numpy

Numpy一大用途在于,提高数值运算的速度。由于python是动态解释的,所以往往它内置的函数的运行效率并不高。特别是遇到大量迭代/循环的时候,原生的python语言速度往往不尽人意。

于是,NumPy应运而生,它的底层采用的是C语言实现,保证了语句执行的高效性。

NumPy中最基本的数据结构是narray(数组)。正如上面所言,原生的python是没有这个数据结构的,你必须从NumPy这个模块中导入。(import numpy as np)

示例如下:

我们看到,第二行这里的a被赋值成一个numpy的array类型

第三行,输出a的类型 :print type(a)

然后,在第四行,输出a :print a

显示a 是[1 2 3]

如果我们要输出a的第一个元素,可以:

如果我们要改变a的第一个元素,可以输入a[0]=2333

此时a已经被改变,再次输出a,可以看到

同样的方法,我们可以创建另外一个数组b=np.array([1,1,1])

输出C,发现C就是a+b的数值

类似的运算符还有

a+b a-b a*b(这里的是按位乘法,相当于matlab的.

正如之前提到的,NumPy的速度比原来的Python循环要快得多得多,可以做实验测试

与Matlab不同,Numpy一般不用“矩阵”,而是用多维数组表示矩阵

比如

(注意中括号是嵌套的)

就是一个二维数组,也就是一个矩阵

1 2 3

4 5 6

7 8 9

可以输出看一下效果:

如果你学过线性代数,那么你知道,对于矩阵,可以有矩阵乘法:

假如现在有上面的矩阵d,以及另外一个矩阵e:

那么,可以用下面的方法计算d和e的矩阵乘法:

或者你也可以这样:(这是等价的方法)

但是,你不应该使用d*e,因为d*e是按位乘法,是每个位置对应的乘积

【获取narray片段】

你可以使用下标,比如对于d

你可以使用d[0]获取矩阵(二维数组)的第一行

你也可以用d[0:2]获取矩阵的第一和第二行组成的新矩阵

用d[3]或者d[-1]获取矩阵的最后一行

除了手动创建一个新的数组(多维数组),你也可以用内置函数快速创建:

比如,用np.arange(x)创建从0~x-1的数组

用np.linspace(start,end,jump)来创建一个起于0,终于5,大小为10的线性的数组空间

用np.eye(x)来创建一个大小为x的单位矩阵

可以用np.zeros( (x,y) ) 来创建一个大小为x*y的零矩阵

注意这里是两个括号,里面的(3,5)是一个tuple元组,外面的是调用函数本身需要的括号

你可能注意到,上面的0和1都带个小数点,这是因为它默认是float类型,而不是整数类型,你可以手动设置类型。

注意:以上都只是演示显示,并没有把d[0]这个取出的数组赋值给某个变量,所以是没有保存的。在实际过程中应该保存到某个变量中,如new_array=d[-1]

数值分析方法库Scipy

有了np.array数组,你可以用SciPy提供的大量数值计算的函数方法。

它们全依赖numpy,但是每个之间基本独立。导入Numpy和这些scipy模块的标准方式是:

import numpy as np

from scipy import stats # 其它子模块相同

主scipy命名空间大多包含真正的numpy函数(尝试 scipy.cos 就是 np.cos)。这些仅仅是由于历史原因,通常没有理由在你的代码中使用import scipy

每个函数的使用方法不同,但是都可以很简单地调用和练习,效率也很高

http://reverland.org/python/2012/10/22/scipy/

有所有函数的使用方法实例,可以参考

图形绘制库 Matplotlib

与提供数组的NumPy,提供数值计算函数的Scipy不同,Matplotlib模块是用于绘图的一个模块。

当然,Matplotlib的绘图,依然依赖于NumPy的narray数据结构。

Matplotlib简单绘图事例:

第一步先导入模块

第二步,生成0~5 之间的自变量空间,间隔一共10次

第三部,生成因变量空间 只需令Y=f(x) 即可,例如y=3*x+8

最后,用plt.plot(x,y)即可绘图

这时,图片还在内存中,没有生成,你可以加上横坐标、纵坐标的名字和标题,输入

plt.xlabel(‘x axis label‘)
plt.ylabel(‘y axis label‘)
plt.title(‘Function y=3x+8‘)

其他部分都加入后,输入plt.show(),显示图片

得到下面的图片:(包括了横纵轴的名字、标题)

你也可以再次赋值y1,y2

然后,再次绘图

加上横纵坐标:

最后,输入plt. show ()得到图像:

这里的自变量取值不是非常合适(x范围太小,不够密集)。

你可以重新设计更好的X和Y的取值,并且让图像的X横坐标更加密集,这样你就可以绘出更好看的图像。

到此便告一段落,少侠可以踏上难度更高的旅途了!

时间: 2024-11-08 16:34:11

[python之数据分析] 基础篇1- Numpy,Scipy,Matplotlib 快速入门攻略的相关文章

64位Win7搭建Python开发平台(Python3++Ipython_Notebook+Numpy+Scipy+Matplotlib+PyQt4)

Life is short, you need Python! ------ Bruce Eckel(ANSI C++ Comitee member) Python[1]是一门很难让人拒绝学习的程序设计语言,我喜欢它是因为它能很快给人带来成就感,海量的扩展库几乎可以帮助你立刻完成许多看起来很困难的事情.Python的触角已经深入到学习.工作的各个领域,甚至是在科学计算领域也有不俗的表现,许多古老的fortran程序库(如lapack[2])都被封装成了Python的扩展库,继续散发着活力. Py

利用 Python 进行数据分析(五)NumPy 基础:ndarray 索引和切片

概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为array[index1:index2],意思是从index1索引位置开始,到index2索引(不包括index2)位置结束的一段数组.例如: 当把一个值赋值为一个切片时,该值会作用于此数组片段里每一个元素,例如: 二维数组 二维数组的索引 当以一维数组的索引方式访问一个二维数组的时候,获取的元素不在

利用 Python 进行数据分析(四)NumPy 基础:ndarray 简单介绍

一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 二.ndarray 是什么 ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点. ndarray 的一个特点是同构:即其中所有元素的类型必须相同. 三.ndarray 的创建 array() 函数 最简单的方法, 使用 NumPy 提供的

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

Python第一周基础篇

<感言:首先感谢alex老师精彩课程,第一周的第一天,随着金角大王的豪言壮语般的心灵鸡汤完美收场.此刻坐在电脑前的我仍是热血澎湃,下定决心好好跟着大王一起学好python> ----祝老师教师节快乐                                      Python第一周基础篇 博文结构: --1--python2.*与python3.*主要区别 --2--python安装与配置 --3--PyCharm开发工具的安装与配置 --4--变量的定义 --5--注释的使用 --

【Python地理数据处理】一、环境的搭建和准备(numpy,scipy,matplotlib)

本文主要总结<Python地理数据处理>一书中使用到的库及安装方法.在http://www.lfd.uci.edu/~gohlke/pythonlibs/可以下载到对应于python版本的各种库文件. 一.python 使用的为目前的最新版本3.6.2. 二.安装numpy,scipy,matplotlib,基于python3.6 (1)在上述网址中分别找到numpy,scipy,matplotlib进行下载.注意:win版本(32/64),python版本一定要匹配 例如:scipy?0.1

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python

[资料分享]Python视频教程(基础篇、进阶篇、项目篇)

Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一种入门程序员最适合掌握的优秀语言,因为它免费.面向对象.扩展性强同时执行严格的编码标准. Python视频教程(基础篇) 下载地址: 链接:http://pan.baidu.com/s/1nuHvpX3 密码:78fs

利用Python进行数据分析 基础系列随笔汇总

一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ,一共可以划分为三个大部分: 第一部分简单介绍数据分析,以一个小例子简单说明了什么是数据分析和 IPython 工具: 第二部分是 NumPy 的基础使用,NumPy 是 Python 包,提供科学计算功能,主要是 ndarray 数组对象: 第三部分是 pandas 的基础使用,主要是 Seri