书籍《利用Python进行数据分析》
Numpy--数组及矩阵,矢量计算
1、ndarray多维数组, matrix矩阵
2、针对整组数据进行快速运算的标准数学(统计)函数,(与list区别:无需循环编写程序)
3、用于读写磁盘数据工具及操作内存映射文件工具
4、线性代数、随机数生成及傅里叶变换
5、基于C语言API,具有良好的运行速率
array | 输入数据转换成ndarray(dtype可选) |
arrange | 内置range返回ndarray |
zeros/zeros_like | 根据指定shape和dtype返回全0数组或参考其他数组的shape和dtype |
eye | 创建N*N单位矩阵 |
ones/ones_like | 根据指定shape和dtype返回全1数组或参考其他数组的shape和dtype |
empty/empty_like | 只分配空间但不填充任何值 |
dtype |
|
shape | |
reshape | |
ravel | |
transpose/T | 数组转置 |
stack/hstack/vstack/dstack/concatenate/ | |
ix_ | 选取方形区域的索引器,花式索引x[ix_([0,1],[0,1])]=x[[0,1]][:,[0,1]] |
sqrt/square/log/sign/abs | |
min/max/ptp/sum | |
mean/var/std | |
argmin/argmax | 最小最大值索引 |
any/all | 数组中是否存在一个或多个True/数组中是否全是True |
average | |
median | |
sort | |
in1d | 测试一个数组中的值是否在另一个数组中的成员资格,返回bool数组 |
unique/intersect1d/union1d/setdiff1d/setxor1d |
loadtxt/savetxt | |
save/load | 将数组以二进制格式保存磁盘或读取(npy) |
savez | 保存多个数组至压缩文件 |
dot | 矩阵内积XTX |
qr | QR分解 |
inv | 逆矩阵 |
svd | 奇异分解SVD |
eig | 特征值和特征向量 |
det | 矩阵行列式 |
normal(shape) | 以shape规格正态分布数组 |
randint/rand/randn | |
seed |
注:不同shape数组之间的运算叫做广播
Pandas--基于Numpy构建,提供高级数据结构和操作工具
Series是一种类似于一维数组的对象,由一组数据(Numpy数据类型)以及一组与之相关的数据标签组成。
values/index | 表现形式和索引,index不允许修改 |
isnull/notnull/fillna/dropna() | 检测是否缺失/填充缺失值/过滤缺失值 |
name/index.name | |
Series(data, index=) | 创建Series对象 |
reindex([], fill_value=,method=) | 创建新索引,ffill、pad/bfill、backfill(前/后填充/搬运) |
drop | 丢弃指定索引上的项 |
sort_index()/order() | |
rank(method=,ascending=) | method参数破坏平级关系:max/min/first/average |
corr/cov,corrwith | 相关系数、协方差 |
unique,value_counts | 唯一值,计算各值出现的频率 |
isin | Series各值是否存在于输入的值序列中,返回布尔数组 |
iget_value | 根据位置的索引查值 |
DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型。
DataFrame(data, columns=, index=) | 创建DataFrame对象 |
ix() | 用过索引字段获取行 |
reindex([],method=,columns=) | 相比较Series,可修改行列索引 |
add(df,fill_value=,axis=) sub,div,mul | |
reindex(columns=,fill_value=) | |
apply(f,axis=) f=lambda x: x.max()-min() | 将函数应用到各行或各列形成的一维数组上 |
applymap | 针对元素级的python函数 |
sort_index(axis=,ascending=,by=) | by参数可根据多列排序 |
sum(axis=,level=),cumsum/cummin/cummax/cumprod | 求和(,根据级别),cumsum为累计求和函数 |
mean(axis=,skipna=)/median/mad/var/std/quantile | skipna参数表示是否忽略NA |
idxman/idxmin/argmin/argmax | 达到最大或最小的索引或索引位置(整数 |
describe | 列计算汇总统计 |
dropna(how=‘all’,axis=,thresh) /fillna(inplace=,limit=,axis=,method=) | 过滤缺失值(all仅丢弃全NA的行或者列,thresh筛选)/填充缺失值(是否返回新对象,,,) |
set_index(,drop=)/reset_index | 将其中一个或多个列转换成行索引(是否允许列从原dataframe移除) |
数据为缺失值或者NA值时,表示为NaN
可以输入给DataFrame构造器的数据
类型 | 说明 |
二维ndarray | 数据矩阵,可传入行列标 |
数组、列表、元组或字典 | 每个序列会编程DataFrame的一列,长度必须相同 |
Numpy的结构化/记录数组 | 由数组组成的字典 |
Series组成的字典 | 每个Series都会成为一列, |
由字典组成的字典 | 各内层字典会成为一列,键会合并成结果的行索引 |
字典或Series的列表 | 各项会成为DataFrame的一行,键索引值会成为列索引 |
列表或元组组成的列表 | 类似“二维ndarray” |
另一个DataFrame | 沿用该索引 |
Numpy的MaskedArray | 类似“二维ndarray”,掩码值变成缺失值或者NA值 |
DataFrame索引选项
类型 | 说明 |
obj[val] | 选取DataFrame单列或一组列 |
obj.ix[val] | 选取DataFrame单行或者多行 |
obj.ix[:,val] | 选取单列或多列 |
obj.ix[val1,val2] | 同时选取行列 |
reindex | 将1轴或多轴重新匹配索引 |
xs | 根据标签选取单行或单列,返回Series |
icol,irow | 根据整数位置选取单列或单行,返回Series |
get_value,set_value |
根据行列标签选取/设置单个值 |
层次化索引:
MultiIndex
exp: data = Series(np.random.randn(10), index=[['a',a','a','b','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,2,3]])
data.unstack() 数据被重新安排到DataFrame ;stack() 逆运算
swaplevel(调整某条轴上各级别的顺序),sortlevel(根据指定级别上的值对数据进行排序)
注:DataFrame和Series之间的运算和广播效果一样
axis = 1----行,axis = 0 -----列
Panei数据结构(待补充。。。)