fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(20, 8), dpi=100)
axes[0][0] # 坐标系
设置刻度
set_xticks([number])
set_xticklabels([str_list])
折线图
能够显示数据的变化趋势
plt.plot()
散点图
两个量之间是否存在线性关系
plt.scatter()
柱状图
对比不同类别(个体)之间某一个量的大小关系
plt.bar(x,y, width= )
直方图
连续性的数据展示一组数据的分布状况(统计)
plt.hist(x, bins=)
42
区间:[160, 180]
2cm
[160, 165, 170, 180]
饼图
分类数据的占比情况(占比)
plt.pie(x, labels=)
numpy:
开源的Python科学计算库
快速处理任意维度的数组
Numpy支持常见的数组和矩阵操作
ndarray对象
n d array
n维数组
类型:
大小
(都有哪些操作)
numpy快的原因:
1 ndarray在底层存储的风格是元素级别的顺序表(要求所有的元素的类型是一直的)
2 numpy底层用C/C++ 的线性运算加速库
3 numpy不受python解释器的全局解释器锁 限制
ndarray的属性
.shape
.ndim (形状的数字个数就是维度)
.size (元素个数)
.dtype
.itemsize
1.1 生成0和1的数组
np.ones([3,4,5,6])
np.zeros()
1.2 从现有数组生成
np.array(ndrray)
np.asarray(ndarray)
1.3 生成固定范围的数组
np.arange(start, stop, step)
np.array(range(start, stop, step))
np.linspace(start, stop, num)
np.logspace(start, stop, num, base=)
1.4 生成随机数组
正态分布
注意:咱们的标准差越小,正态分布的图形越瘦高;标准差越大,正态分布的图形越扁平
np.random.normal(loc=0.0, scale=1.0, size=None)
均匀分布
np.random.uniform(low=0.0, high=1.0, size=[2,3])
2 数组的索引、切片
0,1,2
(2,3,4)
ndarray[ :, 0:2 , 0:2 ]
ndarray[ 0, 0:2 , 0:2 ]
ndarray[ 0, 0:2 , [0,2] ]
3 形状修改
ndarray.reshape(shape) # 产生新的ndarray,不修改原本的ndarray
ndarray.resize(shape) # 不产生新的ndarray,修改原本的ndarray
ndarray.T # ndim=2 行列互换
4 类型修改
ndarray.astype(np.int64) # 返回一个新的ndarray
5 序列化
ndarray.tostring()
反序列化
np.frombuffer(bytes, dtype=) # 必须手写类型
序列化和反序列化会丢失形状信息
6 数组的去重
np.unique(ndarray)
4.4 ndarray运算
ndarray > 60 产生bool的ndarray,可以当作bool索引
np.all(bool_ndarray) # 全True才True, 一个False就是False
np.any(bool_ndarray) # 全False才False,一个True就是True
3 np.where(三元运算符)
1 if cond else 0
np.where(bool_ndarray, 1, 0)
np.logical_and(temp > 60, temp < 90)
(temp > 60) & (temp < 90) # 结果还是一个bool_ndarray
np.logical_or(temp > 90, temp < 60)
(temp < 60) | (temp > 90)
a = np.array([900, 2012, 2014])
a > 2000
array([False, True, True])
np.where( a > 2000, a, 2000)
np.array([0, 1, 1])
4 统计运算
np.
min(ndarray, axis=)
max
mean
median # 中位数
mode # 众数
std
var
.argmax # 返回最大值的位置下标
.argmin # 返回最小值的位置下标
1数组与数的运算
ndarray +/-/*/div number
list * number # 原生的list不支持元素级别的数学运算
2 数组与数组的运算
arr1 arr2
.shape
.shape
形状靠右对齐,对应位置的数字(轴的长度)要不然相等,要不然其中一个是1
broadcast# 广播
arr1 = np.array([[0],[1],[2],[3]])
(4, 1)
arr2 = np.array([1,2,3])
(3,)
(4, 1)
(3,)
(2,6)
(2,1)
(2,6)
(6,)
3,3
9 7 8
21 19 20
15 22 23
m,n n,l m,l
(3,3) * ( 3,3) = (3, 3)
9 7 8
第i行第j列的元素 = 前矩阵的第i行和后矩阵的第j列的元素对象相乘的和
矩阵就是特殊的二维数组
矩阵乘法的规律 (m,n) * (n,l) = (m,l)
np.matmul(ndarray, ndarray) # 矩阵相乘
np.dot(ndarray, ndarray) # 点乘 点积
np.dot(ndarray, [0.7, 0.3]) # 这个也支持
向量
1 Pandas介绍
数据挖掘的开源python库
Numpy,matplotlib
独特的数据结构(类型)
2 为什么使用Pandas
表格处理神器
pandas中的类型
series
dataframe
panel(3维数据对象,已弃用)
series:
.values
.index
pd.Series(data=, index=)
pd.Series({key:value})