numpy
基本属性
- n维数组;数值运算
- 创建数组: np.array(list,dtype=)
- 数组维度:array.ndim
- 数组形状:array.shape
- 数组元素个数:array.size
创建数组
- 普通创建:np.array(list)
- 全0数组:np.zeros((row,col))
- 全1数组:np.ones((row,col))
- 有序数列:np.arange(num); np.arange(start,end,by)
- 改变形状:array.reshape((row,col))
- 生成线段:np.linspace(start,end,num)
基础运算
a = np.array([1,2,3,4]).reshape((2,2))
b = np.arange(4).reshape((2,2))
- np.fun(array) 多数情况等于 arrary.fun()
- 加减乘除等运算都是作用于元素: a*b;sin(a);a<3:返回布尔值
- 矩阵相乘:np.dot(a,b); 有第一点,还可以表示为a.dot(b)
- 矩阵转置:np.transpose(a);a.T
- 随机矩阵(元素为0-1的随机数):np.random.rand(row,col)
- 随机矩阵(元素服从标准正态分布):np.random.randn(row,col)
- 数组求和:np.sum(a)
- 数组求最值:np.max(a);np.min(a)
- 行/列操作:np.sum(a,axis=0/1) 0表示跨行(垂直);1表示跨列(水平)
- 最值索引:np.argmin(a);np.argmax(a)
- 平均:np.mean(a)
- 中位数:np.median(a)
- 累加:np.cumsum(a)
- 累差:np.diff(a)
- 逐行排序:np.sort(a)
- 截取矩阵:np.clip(a,min,max) 所有小于min的数=min,大于max的数=max
索引切片
- i行:a[i]
- j列:a[:,j]
- i行j列:a[i][j];a[i,j]
- i行n-m列:a[i, n:m]
- 把数组展为1维数组:a.flatten()
合并
- 垂直合并: np.vstack((a,b))
- 水平合并:np.hstack((a,b))
- 多个数组合并:np.concatenate((a,b,c,d),axis=0/1)
分割
- 等量分割:np.split(a,n,axis=) (n表示分割成几块)
- 不等量分割:np.array_split(a,n,axis=)
- 竖直分割:np.vsplit(a,n)
- 水平分割:np.hsplit(a,n)
浅拷贝和深拷贝
- 浅拷贝:b复制a,修改a后b跟着改变;增加指针指向已存在的内存地址。b = a
- 深拷贝:b复制a,修改a后b不跟着改变;增加指针且申请了一个新的内存地址。b = a.copy()
pandas
基本属性
- 数据框;数据处理;基于numpy
- 创建df:pd.DataFrame(data,index,columns)
- df类型:df.dtypes
- df 行名/列名/值:df.index/df.columns/df.values
- df描述:df.describe()
- df转置:df.T
- 按索引排序:df.sort_index(axis=0/1,ascending=bool)
- 按值排序:df.sort_values(by=col_name,ascending)
选择数据
df = pd.DataFrame(data,columns=['A','B','C'],index=[1,2,3])
- 选择某列:df[‘A’];df.A
- 选择某行:df[i:i+1]
- 按标签选择:df.loc[ [1,2],[‘A’,'B’] ]
- 按位置选择:df.iloc[i,j];df.iloc[i:j,k:l];df.iloc[[1,2,4],1:4]
- 混合选择:df.ix[]
- 条件选择:df[df.A<3]
处理缺失值
- 丢弃:df.dropna(axis,how=‘any’/‘all’)
- 填充:df.fillna(value=0)
- 检查:df.isna().sum()
导入/导出数据
- 导入csv:pd.read_csv(’…csv’)
- 导出数据:df.to_csv(‘文件名’)
concat合并
concat([df1,df2,df3],axis,ignore_index,join,join_axes)
- axis: 0纵向/1横向
- ignore_index: True表示对旧index整合成新的index
- join:inner取交集;outer取并集
- join_axes:选择对齐的索引
df1.append([df2,df3])
- 纵向合并,将df2,df3添加到df1下面
merge合并
pd.merge(left,right,on=[‘key1’,‘key2’],how=‘inner’/‘outer’/‘left’/‘right’,indicator,suffixes)
- on:以某个列名作为连接键
- how:连接方式
- indicator:取值为True时,显示merge方式
- suffixes=[左表后缀名,右表后缀名]:为列名增添后缀
pd.merge(left,right,left_index=True,right_index=True,how=’’)
- left_index/right_index:取值为True时,按行名连接
matplotlib.pyplot
Series
data = pd.Series(...)
data.plot() / plt.plot(data)
plt.show()