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

3 篇文章 0 订阅
2 篇文章 0 订阅

本文全部来自我(小麦)的《大数据公选》课程讲义,包括三篇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横坐标更加密集,这样你就可以绘出更好看的图像。

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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值