什么是数据分析?
数据分析:就是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律.
数据分析三剑客:Numpy,Pandas,Matplotlb
NumPy简介
NumPy(Numerical python)是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.
NumPy的前身Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。
NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:
- 一个强大的N维数组对象ndarray
- 广播功能函数
- 整合 c/c++/Fortran 代码的工具
- 线性代数, 傅里叶变换、随机数生成等功能
NumPy应用
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。
入门
NumPy的主要对象是同构多维数组.他是一个元素表(通常是数字),都是相同的类型,有正整数元组索引,在NumPy维度中成为轴.
例如,3D空间中的点的坐标[1,2,1]具有一个轴,该轴有三个元素,所以说它的长度为3,在下面所示的例子中,数组有两个轴,第一个轴长度为2,第二个轴的长度为3.
[[ 1., 0., 0.],
[ 0., 1., 2.]]
NumPy的数组类被调用ndarray
。它也被别名所知 array
。请注意,numpy.array
这与标准Python库类不同array.array
,后者只处理一维数组并提供较少的功能。ndarray
对象更重要的属性是:
ndarray.ndim --- 数组的轴数(尺寸)
ndarray.shape --- 数组的大小,这是一个整数元组,表示每个维度中数组的大小,对于具有n行和m列的矩阵,shape将是(n,m).shape因此元组的长度是轴的数量ndim
ndarray.size --- 数组的元素总数。这等于元素的乘积shape
ndarray.itemsize --- 数组中每个元素的大小(以字节为单位)。例如,类型的元素数组float64
有itemsize
8(= 64/8),而其中一个类型complex32
有itemsize
4(= 32/8)。它相当于ndarray.dtype.itemsize
。
ndarray.data --- 包含数组实际元素的缓冲区。通常,我们不需要使用此属性,因为我们将使用索引工具访问数组中的元素。
例子:
>>> import numpy as np >>> a = np.arange(15).reshape(3, 5) # 创建一个二维数组 >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) >>> a.shape # 查看每个维度中数组的大小 (3, 5) # 3行5列 >>> a.ndim # 数组的轴数,二维数组 2 >>> a.dtype.name # 描述数组中元素类型的对象 'int64' >>> a.itemsize # 数组中每个元素的大小为8字节 8 >>> a.size # 数组的元素总数 15 >>> type(a) <type 'numpy.ndarray'> >>> b = np.array([6, 7, 8]) >>> b array([6, 7, 8]) # 创建一个数组 >>> type(b) <type 'numpy.ndarray'>
>>> np.array([[1,2,3],['a','b',1.1]]) # 创建一个二维数组
array([['1', '2', '3'], ['a', 'b', '1.1']], dtype='<U11')
注意:
- numpy默认ndarray的所有元素的类型是相同的
- 如果传进来的列表中包含不同的类型,则统一为统一类型,优先级 str > float > int