总结一下数据分析三剑客(NumPy、Pandas 和 Matplotlib)的常用方法。
numpy
数组的创建形式
np.array(data=列表)
plt.imread(图片地址)
np.ones()
np.linspace()
:创建一个一维数组,指定范围和元素个数np.arange()
:创建一个一维数组,指定范围和步长np.random.randint()
:创建任意维度的随机数组
常用的属性
- shape:数组的形状
- ndim:数组的维度
- size:数组元素的个数
- dtype:数组元素的数据类型
修改数组数据类型
arr.dtype=赋值
astype(数据类型)
numpy 数组主要是用来存储和运算数值型的数据
- int,float
numpy 数组的索引
- 索引取行:
arr[行索引]
- 索引取列:
arr[:, 列索引]
- 索引取元素:
arr[行索引:列索引]
numpy 数组的切片
- 切行:
arr[行切片]
- 切列:
arr[:, 列切片]
级联:concatnate
- 将多个 numpy 数组进行横向或者纵向的拼接
变形
reshape()
将任意维度的数组进行任意维度的变形
基于切片操作翻转图片
arr[::-1,::-1]
- 基于切片裁剪图片
聚合函数
- max,min,mean,min
统计函数
- std:标准差
- var:方差
矩阵操作
- 矩阵转置:
.T
- 将行变成列,列变成行
- 矩阵乘法:
np.dot
pandas
两个常用的类
- Series,DataFrame
Series(一维的数据结构)
创建形式
Series(data=[1,2,3])
Series(data=np数组)
Series(data=字典)
isnull,notnull
检测 Series 的元素是否为空或者是否为非空
unique()
对 Series 元素去重
nunique()
统计 Series 去重后的元素个数
Series 的运算法则
- 如果两个 Series 之间进行算数运算的话,则只可以对索引一致的元素进行算数运算,否则补空。
显式索引
可以通过 index 设置 Series 的显式索引,显式索引不会覆盖默认的隐式索引。
DataFrame(二维的数据结构)
创建方式
- DataFrame(data=二维列表)
- DataFrame(data=二维的numpy数组)
- DataFrame(data=字典)
显式索引
index,columns 设定 df 的显式索引
索引操作
- 索引取单列:
df[列索引]
- 索引取多列:
df[[col1,col2,col3]]
- 索引取单行:
df.iloc[行索引]
- 索引取多行:
df.iloc[[index1,index2]]
iloc[隐式索引]
,loc[显示索引]
- 索引取元素:
df.iloc[行索引,列索引]
切片操作
- 切行:
df[行切片]
- 切列:
df.iloc[:, 列切片]
时间类型的转换
pd.to_datetime(df['date'])
列转换为行索引
set_index(df['col'])
tushare 模块
财经数据接口包
df 的持久化存储
df.to_xxx()
df 数据的加载
pd.read_xxx()
指定数据的删除
drop()
将 Series 的元素整体上移或者下移
shift(1)
布尔值索引
可以直接将布尔值作为df源数据的行索引,可以取出 True 对应的行数据
数据的重新取样
resample('M').fist()
5 日均值的计算
rolling(5).mean()
排序
sort_index()
:根据索引排序
soert_value()
:根据值排序
df 的级联
concat()
匹配级联 & 不匹配级联
df 的合并
merge()
how:inner,outer,left,right
df 的运算法则
- 同Series
df 的条件查询
query()
df 的替换操作
replace()
单值替换
多值替换
指定列替换
映射
map(字典形式的映射关系表)
Series 的运算工具
map(func)
随机抽样
take()
:将 df 的行列打乱random.permutation(n)
:0 到 n - 1 之间的乱序的随机序列
运算工具
apply:d f的运算工具,是对 df 的行或者列进行某种形式的运算
applymap:df 的运算工具,是对 df 的每一个元素进行某种形式的运算
数据清洗
- 缺失值
- any,all,dropna,fillna
- 重复值
drop_duplicates(keep)
- 异常值
- 基于异常值判定的条件返回的布尔值去除异常值对应的行数据
分组操作
groupby()
分组聚合
agg(['max','mean'])
:分组后实现多种不同形式的聚合操作
高级聚合
- 自定义分组后的聚合函数
apply(func)
,transform(func)
透视表
- 参数:
- index
- value
- aggfunc
- columns
交叉表
- 了解即可
axis 轴向
- 在 drop,dropna,take 三个函数中,axis=0 表示行,axis=1 表示的是列
- 在其他函数中 axis=0 是列,axis=1 是行
matplotlib
- 线形图:
plt.plot()
- 柱状图:
plt.bar()
- 直方图:
plt.hist()
- 饼图:
plt.pie()
- 散点图:
plt.scatter()