python数据分析总结

利用python进行数据分析(其一)

  • NumPy基础
    • NumPy的ndarray:一种多维数组对象
    • ndarray的数据类型
    • NumPy数组的运算
    • 通用函数:快速的元素及数组函数
    • 利用数组进行数据处理
    • 用于数组的文件输出输入
    • 线性代数
    • 为随机数生成
    • 随机漫步

本文实验环境、工具:anoconda,Jupyter notebook,python3.6

NumPy基础

NumPy (Numerical Python) 是Python关于数值计算最重要的基础包,可以构建科学计算的库包。
NumPy主要功能:
1.ndarry,具有矢量算数运算和复杂广播能了的多维数组。
2.对整组数据进行快速运算(无需编写循环)
3.用来读写磁盘数据以及操作内存映射文件
4.线性代数、随机数生成和傅里叶变换功能
5.集成由C、C++和Fortran等编写代码的API

其中,NumPy本身没有提供高级的数据分析能力,对于大部分数据分析应用来说,笔者主要研究以下功能:
1.用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算。
2.常用的数组算法:排序、唯一化、集合运算等。
3.高效的描述统计和数据聚合/摘要运算。
4.用于异构数据集的合并/连接运算的数据对齐和关系型数据运算。
5.将条件逻辑表述为数组表达式(非if-elif-else分支循环)。
6.数据的分组运算(聚合、转换、函数应用)

NumPy的ndarray:一种多维数组对象

ndarray[N维数组对象]是NumPy最重要的一个特点,它是一个快速且灵活的大数据集容器。据此,可以对整块数据做一些数学运算。

Numpy的标准使用是import NumPy as np,可以使用from numpy import * 。但由于numpy的命名空间大,包含大量的函数,且其中一些与Python内置函数重名,因此不建议后者写法。

ndarray是一个通用的同构数据多维容器,因此所有元素必须是相同类型,且每个数组都有一个shape(一个表示个维度大小的元祖)和一个dtype(一个用于说明数组类型的对象)



其中表1-1是一些数组创建函数:

函数 说明
array 将输入数据(列表、元组、数组或者其他序列类型)转换成ndarray
asarray 将输入转换成ndarray,如果输入本身是一个ndarray就不进行复制
arange 类似于内置的range,返回的是ndarray
one,ones_like 根据指定的形状和dtype创建一个全1的数组。one_like以另一个数组为参数,并根据其形状和dtye创建一个全1的数组
zeros,zeros_like 类似于ones和one_like,产生全0 数组
empty,empty_like 创建新数组,只分配内存空间不产生任何数值
full,full_like 用fill value的所有制,产生一个数组
eye,identity 创建一个正方的N X N的单位矩阵

ndarray的数据类型

ndarray的数据类型如下:
python数据分析总结_第1张图片
python数据分析总结_第2张图片

NumPy数组的运算

Numpy的数组运算:切片运算、布尔型索引、花式索引;数组转置和轴对换。

通用函数:快速的元素及数组函数

通用函数是一种对ndarray中的数据执行元素集运算的函数,常见的函数如图所示:python数据分析总结_第3张图片
python数据分析总结_第4张图片
python数据分析总结_第5张图片

利用数组进行数据处理

NumPy数组可以将许多种数据处理任务表述为间接的数组表达式(否则需要编写循环)。用数组表达式代替循环一般称作为矢量化
以下给出全部的基本数组统计方法:
python数据分析总结_第6张图片python数据分析总结_第7张图片
同时列出NumPy的集合函数:
python数据分析总结_第8张图片

用于数组的文件输出输入

NumPy能够读写磁盘上的文本数据或二进制数据,其中主要读写磁盘数组数据的是np.save和np.load两个函数。

In [213]: arr = np.arange(10)
In [214]: np.save('some_array', arr)
In [215]: np.load('some_array.npy')
Out[215]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

线性代数

线性代数(如矩阵乘法、矩阵分解、行列式以及其他方针数学)是任何数组库的重要组成部分,NumPy提供一个用于矩阵乘法的dot函数

In [223]: x = np.array([[1., 2., 3.], [4., 5., 6.]])
In [224]: y = np.array([[6., 23.], [-1, 7], [8, 9]])
In [227]: x.dot(y)
Out[227]:
array([[ 28., 64.],
[ 67., 181.]])

常用的numpy.linalg函数
python数据分析总结_第9张图片

为随机数生成

numpy.random模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数,以下列出其中的部分函数:
python数据分析总结_第10张图片
python数据分析总结_第11张图片

随机漫步

这部分通过模拟随机漫步来说明如何运用数组运算:通过内置的random模块来模拟随机漫步:

In [247]: import random
.....: position = 0
.....: walk = [position]
.....: steps = 1000
.....: for i in range(steps):
.....: step = 1 if random.randint(0, 1) else -1
.....: position += step
.....: walk.append(position)
.....:

python数据分析总结_第12张图片
以上书关于NumPy的数组和矢量计算,欢迎交流。

你可能感兴趣的:(数据分析,python数据分析,Numpy)