好友
阅读权限10
听众
最后登录1970-1-1
|
2.常用Python数据分析开源库介绍
-
NumPy(Numerical Python)
- 它是 Python 语言的一个扩展程序库。是一个运行速度非常快的数学库.
- 主要用于数组计算
- 包含:
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
-
Pandas
- Pandas是一个强大的分析结构化数据的工具集
- 它的使用基础是Numpy(提供高性能的矩阵运算)
- 用于数据挖掘和数据分析,同时也提供数据清洗功能
- Pandas利器之 Series,是一种类似于一维数组的对象
- Pandas利器之 DataFrame,是Pandas中的一个表格型的数据结构
-
Matplotlib
- 它是一个功能强大的数据可视化开源Python库
- Python中使用最多的图形绘图库
- 可以创建静态, 动态和交互式的图表
-
Seaborn
- 它是一个Python数据可视化开源库, 建立在matplotlib之上,并集成了pandas的数据结构
- Seaborn通过更简洁的API来绘制信息更丰富,更具吸引力的图像
- 面向数据集的API,与Pandas配合使用起来比直接使用Matplotlib更方便
-
Sklearn
- scikit-learn 是基于 Python 语言的机器学习工具
- 简单高效的数据挖掘和数据分析工具
- 可供大家在各种环境中重复使用
- 建立在 NumPy ,SciPy 和 matplotlib 上
-
jupyter notebook
1.1属性
-
Numpy简介
- NumPy(Numerical Python)是Python数据分析必不可少的第三方库
- NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身要高效
- 本身是由C语言开发,NumPy被Python其它科学计算包作为基础包
-
重要功能如下
- 高性能科学计算和数据分析的基础包
- ndarray,多维数组,具有矢量运算能力,快速、节省空间
- 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
-
Numpy的属性
NumPy的数组类被称作ndarray,通常被称作数组。
<table>
<tr>
<td>.ndim</td><td>数组轴的个数</td>
</tr>
<tr>
<td>.shape</td> <td>数组的维度</td>
</tr>
<td>.size</td><td>数组元素个数</td>
<tr>
<td>.dtype</td><td>数组元素类型</td>
</tr>
<tr>
<td>.itemsize</td><td>数组每个元素的占用字节数</td>
</tr>
</table>
> 数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排 m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性。
-
函数写法
# shape, ndim, size属性 可以 函数写法 实现.
# 格式: np.函数名(数组)
print(f'数组的维度: {np.shape(arr)}') # (3, 5) 3个元素(一维数组), 每个元素(一维数组)又有5个元素(值)
print(f'数组轴的个数: {np.ndim(arr)}') # 几维数组, 轴就是几, 2
print(f'数组元素个数: {np.size(arr)}') # 15
print(f'数组类型: {type(arr)}') # <class 'numpy.ndarray'>
1.2 创建Numpy对象-ndarry
-
ndarray介绍
- NumPy数组是一个多维的数组对象(矩阵),称为ndarray(N-Dimensional Array)
- 具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点
- 注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。
-
数组形式
import numpy as np
arr1 = np.array([2, 3, 4])
arr2 = np.array([1.1, 2.3, 3.5])
-
zeros() /ones()/empty()
函数zeros创建一个全是0的数组,
>
> 函数ones创建一个全1的数组,
>
> 函数empty创建一个内容随机并且依赖于内存状态的数组。默认创建的数组类型(dtype)都是float64
zero1 = np.zeros((3, 4)) # 3个一维数组, 每个长度为: 4
print('数组zero1: ', zero1)
ones1 = np.ones((2, 3, 4)) # 2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中
print('数组one1: ', ones1)
empty1 = np.empty((2, 3))
print('数组empty1: ', empty1)
print(zero1.dtype, ones1.dtype, empty1.dtype)
-
arange(), 类似 python 的 range() ,创建一个一维 ndarray 数组。
np_arange = np.arange(10, 20, 5,dtype=int) # 起始, 结束, 步长, 类型
print("arange创建np_arange:", np_arange)
print("arange创建np_arange的元素类型:", np_arange.dtype)
print("arange创建np_arange的类型:", type(np_arange))
-
matrix() or mat(), 是 ndarray 的子类,只能生成 2 维的矩阵
matrix类型是 ndarray类型的 子类型.
x1 = np.mat("1 2;3 4")
print(x1)
x2 = np.matrix("1,2;3,4")
print(x2)
x3 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
print(x3)
-
创建随机数矩阵
- random.rand() 生成指定维度大小 的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
- random.randn() 生成正态分布
- random.randint(size=(数据区间)) 生成指定维度大小 的随机多维整型数据(二维), 可指定区间
- random.uniform(size=(数据区间)) 生成指定维度大小 的随机多维浮点型数据(二维), 可以指定区间(1, 5)产生1到5之间均匀分布的样本值
import numpy as np
# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
print(arr)
print(type(arr))
# 生成指定维度大小(3行4列)的随机多维整型数据(二维), randint()可指定区间(-1, 5)
arr = np.random.randint(-1, 5, size=(3, 4))
print(arr)
print(type(arr))
#生成指定维度大小(3行4列)的随机多维浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
arr = np.random.uniform(-1, 5, size=(3, 4))
print(arr)
print(type(arr))
-
ndarray的数据类型转换 astype() dtype属性
np.zeros((3,4),dtype=np.float64)
数组对象.astype(数据类型)
1.2.1 数列
与数学中的数列不一样 两个函数不能指定 公差和公比 输入 起始值和结束值 并指定数列中的数值个数
公共参数
endpoint=True 默认是True(即: 包括结束值)
(起始点,结束点,等比数列个数) [起始点,结束点]
-
等比数列 logspace()
logspace(起始点,结束点,等比数列个数,base=底数) 开始点和结束点是10的幂 [起始点,结束点]
# np.logspace 等比数列, logspace中,开始点和结束点是10的幂
# 我们让开始点为0,结束点为0,元素个数为10,看看输出结果。
print(np.logspace(1,4,4)) # [ 10. 100. 1000. 10000.]
# 假如,我们想要改变基数,不让它以10为底数,我们可以改变base参数,将其设置为2
print(np.logspace(1,4,4,base=2)) #[ 2. 4. 8. 16.
-
等差数列
np.linspace(起始点,结束点,数列个数) [起始点,结束点]
# np.linspace等差数列
# np.linspace是用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数。
# 第一个例子,用到三个参数,第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数。
print(numpy.linspace(1,4,4)) # [1. 2. 3. 4.]
1.3 Numpy的内置函数
# 基本函数如下
np.ceil(): 向上最接近的整数,参数是 number 或 array
np.floor(): 向下最接近的整数,参数是 number 或 array
np.rint(): 四舍五入,参数是 number 或 array
np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array
np.multiply(): 元素相乘,参数是 number 或 array
np.divide(): 元素相除,参数是 number 或 array
np.abs():元素的绝对值,参数是 number 或 array
np.where(condition, x, y): 三元运算符,x if condition else y
# 注意: 需要注意multiply/divide 如果是两个ndarray进行运算 shape必须一致
# 示例代码
arr = np.random.randn(2, 3)
print(arr)
print(np.ceil(arr))
print(np.floor(arr))
print(np.rint(arr))
print(np.isnan(arr))
print(np.multiply(arr, arr))
print(np.divide(arr, arr))
print(np.where(arr > 0, 1, -1))
-
统计函数
np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array
np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array
np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array
-
比较函数
np.any(): 至少有一个元素满足指定条件,返回True
np.all(): 所有的元素满足指定条件,返回True
# 实例代码
arr = np.random.randn(2, 3)
print(arr)
print(np.any(arr > 0)) # True
print(np.all(arr > 0)) # False
-
去重函数
np.unique():找到唯一值并返回排序结果,类似于Python的set集合
# np.unique():找到唯一值并返回排序结果,类似于Python的set集合
# 实例代码
arr = np.array([[1, 2, 1], [2, 3, 4]])
print(arr)
print(np.unique(arr)) # [1,3,4]
-
排序函数
np.sort()函数排序, 返回排序后的副本
ndarray.sort(), 在原数据上进行修改
arr = np.array([1, 2, 34, 5])
print("原数组arr:", arr)
# np.sort()函数排序, 返回排序后的副本
sortarr1 = np.sort(arr)
print("numpy.sort()函数排序后的数组:", sortarr1)
# ndarray直接调用sort, 在原数据上进行修改
arr.sort()
print("数组.sort()方法排序:", arr)
1.3Numpy运算
|
免费评分
-
查看全部评分
|