本篇介绍操作Series和DataFrame的基本手段。
1. 对DataFrame的列进行赋值
- 将列表、数组、元组赋值为DataFrame的列,长度匹配即可
- 将Series赋值给DataFrame的列,二者的索引会精确匹配(索引不会合并,依旧是DataFrame的索引)
- 若被赋值的列不存在,则会创建一个新列
2. 删除DataFrame的列(del)
3. DataFrame的name和values属性
- DataFrame.index.name
- DataFrame.columns.name
- DataFrame.values(会以二维ndarray的形式返回DataFrame中的数据,如果DataFrame中各列数据类型不同,则会返回能兼容所有列的数据类型)
4. 重新索引(reindex)
创建一个适应新索引的新对应(copy)
- Series的重新索引
1). 根据新索引进行重排
2). 索引不存在,则会引入缺失值
2.1) 通过fill_value参数(scaler),填充缺失值
2.2) 通过method参数,进行插值处理(注意:原Series的index需为单调递增或者单调递减,否则无法进行差值处理,通常用于时间序列)
- DataFrame的重新索引
1) 通过index参数对行进行重新索引
2) 通过columns参数对列进行重新索引
3) 也可同时进行索引
4) 采用loc方法
5. 丢弃指定轴上的项(drop)
- 参数1:索引数据or索引列表
- 参数2:axis(0 or 1)
6. 算术运算与数据对齐
- Series与Series之间的算术运算(+、-、*、/)
直接运算:
合并
不重叠的索引处引入NaN
传播
间接运算:
add()、sub()、mul()、div()
fill_value填充缺失值
- DataFrame与DataFrame之间的算术运算(+、-、*、/)
直接运算:
合并(同时发生在index和columns上)
不重叠的索引处引入NaN
缺失值在运算过程中会传播
间接运算:
add()、sub()、mul()、div()
参数fill_value填充缺失值
- DataFrame与Series之间的算术运算(+、-、*、/)
直接运算:
默认:Series的索引将会匹配到DataFrame的列上,沿着行向下传播
索引之间进行合并
不重叠的索引处引入NaN
缺失值在运算过程中会传播
间接运算:
add()、sub()、mul()、div()
参数fill_value填充缺失值
axis确定所匹配的轴
7. 函数应用和映射
- Numpy的ufuncs(元素级数组操作方法,也可用于操作pandas对象)
- DataFrame.apply():针对DataFrame中的一整行或者一整列进行运算
- DataFrame.applymap():针对DataFrame中的每个元素进行运算
8. 排序和排名
- 按索引排序(sort_index())
- axis:按行索引或列索引进行排名
- ascending:升序or降序
- inplace:是否替换
- kind:排序方法
- na_position:控制排在开头or末尾
- by:根据值排序,现在还可用,但是FutureWarning: by argument to sort_index is deprecated, please use .sort_values(by=...)
- 按值排序
- Series:按值排序
- DataFrame:按一个或者多个列进行排序(也有axis参数,按照行排序,但是前提是依据排序的行是可比较的)
- 获得排名(rank)
- method选项:average、min、max、first
- Series排名
- DataFrame排名
示例1(sort_index):
示例2(sort_values):
示例3(rank):
9. 带有重复值的轴索引
Pandas数据结构可以带有重复索引值。对于带有重复值的索引,数据选取的行为将会有所不同