查看原文
其他

从零开始学Python数据分析【4】-- numpy

2017-10-15 刘顺祥 Python爱好者社区

作者:刘顺祥

个人微信公众号:每天进步一点点2015


前文传送门:

从零开始学Python数据分析【1】--数据类型及结构

从零开始学Python数据分析【2】-- 数值计算及正则表达式

从零开始学Python数据分析【3】-- 控制流与自定义函数


前面3期介绍完Python的基础知识后,我们需要进入数据分析领域的Python实现,首先我们从Numpy模块讲起。该模块主要有这几个功能:数学领域的线性代数、傅里叶变换;统计学领域的统计计算、随机数生成等。这里我们就针对统计里面的计算和随机数生成作讲解。


使用numpy构建矩阵


数组的创建可以使用numpy模块中的array函数实现,一维数组只需要给array函数传入一个列表或元组,二维数组则是传入嵌套的列表或元组。具体举例可知:



arr1和arr2为一维数组,arr3为二维数组,返回一个数组的行数和列数可使用shape方法,即




元素的获取


使用索引的方式,查询一维数组和二维数组的元素。一维数组的索引与列表、元组的索引完全一致,这里就不在赘述;二维数组的索引就稍微有点复杂,我们可以通过例子来说明:



print函数中的'\n',目的用来换行,使打印出来的结果不显得那么拥挤。



咦?报告,你最后一个返回的结果错了,你不是要返回由第一行、第三行、第三列和第四列组成的2×2矩阵吗?为什么是一个1×2的一维数组?如果像上面红框中使用索引的话,将获取【0,2】和【2,3】对应的两个值。那该如何返回想要的2×2的矩阵呢?我们可以这样写:




数学函数

# 取绝对值

np.abs

np.fabs


# 算术平方根

np.sqrt


# 平方

np.square


# 指数

np.exp


# 对数

np.log2

np.log10

np.log(x,base)


# 符号函数(大于0的数返回1、小于0的数返回-1、0返回0值)

np.sign


# 向上取整

np.cell


# 向下取整

np.floor


# 返回最近的整数

np.rint


# 判断是否缺失

np.isnan


# 判断是否有限

np.isfinite


# 判断是否无限

np.isinf


# 幂运算

np.power


# 余数

np.mod


统计函数


# 最大值

np.max


# 浮点型的最大值

np.fmax


# 最小值

np.mim


# 浮点型的最小值

np.fmin


# 求和

np.sum


# 均值

np.mean


# 标准差

np.std


# 方差

np.var


# 中位数

np.median


映射函数


apply_along_axis


apply_along_axis函数与R语言中的apply函数用法一致,可以针对某个轴的方向进行函数操作,同样,而且在pandas模块中的DataFrmae对象中,可以使用apply函数达到相同的效果。我们举一个例子来说明一下apply_along_axis函数的应用:



随机数生成


numpy模块中的子模块random提供了很多产生随机数的方法,帮我们产生伪数据带来了极大的方便,这里就介绍几种常用的分布随机数。有时候为了使每次产生的随机数都相同,就需要设置固定的随机种子,设置随机种子可以调用seed函数实现。


离散分布


二项分布:在概率论和统计学中,二项分布是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。



size参数可以用来控制生成的随机数的形状,r1就是一个10个长度的一维数组;r2就是一个3×5的矩阵。


泊松分布该分布适合于描述单位时间(或空间)内随机事件发生的次数。如某一服务设施在一定时间内到达的人数,电话交换机接到呼叫的次数,汽车站台的候客人数,机器出现的故障数。



生成3列泊松分布的数据,lamda参数分别取10,50,20,表示单位时间内某件事发生的频次。


连续分布


正态分布:该分布也成高斯分布,呈现两头低,中间高,左右对称的倒钟形状,是连续分布中使用最频繁的一种分布。



其他常用分布:



数据加载


numpy模块还提供了读取数据与写数据的函数,方便我们将外部数据文件读入到Python的工作环境中。这里推荐两个读数据的函数:



fname:指定外部文件的路径

delimiter:指定文件中数据列的分隔符

skiprows:指定读数时跳过的行数

skip_header:指定跳过首行

usecols:指定读取的数据列


这里个人比较推荐使用genfromtxt函数进行外部数据的读取。切记,loadtxt函数和genfromtxt函数读入数据形成数组,故必须要求读进来的数据一定是数值型数据,否则会报错。


数据写出


通过使用numpy模块中的savetxt函数实现python数据的写出,函数语法如下:


np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ')

fname:指定数据写出的路径

X:指定需要写出的数据

fmt:指定输出数据的格式,默认科学计算法

delimiter:指定数据列之间的分隔符,默认空格符

newline:指定新行的标识符,默认换行

header:指定输出数据首行值

footer:指定输出数据的末行值

comments:指定注释符,默认“#”


今天我们的内容就介绍到这边,欢迎大家拍砖。下期我们来聊聊Python数据框操作--pandas。

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

1.崔老师爬虫实战案例免费学习视频。

2.丘老师数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存