- 一对一替换
- 多对一替换
- 多对多替换
- 参考一列数值进行排序
- 参照有缺失值的列排序
- 参考多数值列排序
- 数值排名
- 删除列
- 删除行
- 删除特定列行
- 数值计数
- 唯一值获取
- 数值查找
- 区间切分
- 插入新的行或列
- 行列互换
- 索引重塑
- 长宽表转换
- apply( )和applymap( )函数
1.数值替换
- 一对一替换
replace(A,B)-用B替换A;
replace(A,B,inplace=True)-用B替换A,元数据也将被替换掉;
replace(np.NaN,0)-用0替换空值,相当于fillna();
- 多对一替换
多对一替换即对多个不同的值替换成同一个值,比如原始数据的年龄列中有异常数值230和240,需要把230和240都替换成33。
Excel中需要用函数来实现,思路是先判断年龄列中的数据等于230或者240,如果成立,则替换成33,如果不成立则是原来的数据;
Python中同样也是用replace实现-replace([A,B],C)-用C来替换A和B;
这里最后一列是我用excel操作之后,在python中又重新导入进去的,可忽略
- 多对多替换
多对多属于一种比较复杂的情况,主要是要把逻辑搞清楚。
Excel中则是使用多个IF进行嵌套,思路就是按顺序判断年龄是否等于230,是的时候结果等于32,不是的话就嵌套一个IF再判断,是否等于240,是的话等于33,不是的话再嵌套一个IF,判断是否等于250,是的话等于34,不是的话就说明都不是230,240,250中的任意一个,那最后就是等于原来的数据,这里采用的单元格直接就是E列。如果使用单元格E2:E7的话应该是&E&2:&E$7,不然的话使用下拉框是会出现问题的,因为默认就是下拉的话,第二个单元格判断的原始数据就不是E2:E7了,而是E3:E8;
python中的实现方法:使用字典的形式进行一对一的替换;
2.数值排序
- 参考一列数值进行排序
Excel中的操作是直接选中需要参照排序的一列-选择排序和筛选-升序/降序即可;但是这里有个问题,是我自己以前没有搞明白的地方:扩展选定区域和以当前选定区域排序的区别是什么。
“扩展选定区域”指的是将扩展区域(近乎整个表格)都进行相应排序。其余都会随参照列的顺序变化而全部发生相对应的变化;
“以当前选定区域排序”指的是的只将选定的区域进行排序。而其余数据不随参照列的顺序变化而发生变化;
原始数据
对年龄列扩展选定区域升序之后的数据,可以看到其余数据都随之发生了变化
对年龄列以当前选定区域升序之后的数据,可以看到E列之前的数据都没有变化,F列发生变化的原因是F列使用了公式,单元格都是随E的数据变化的
python中实现的方式是使用sort_values(by=" ",ascending=True/False)方法;默认是升序的方式,因此如果是降序排列,只需指定是ascending=False即可;
这里参照单个列排序的话年龄可以不用加[]
- 参照有缺失值的列排序
在排序的方法中传入参数na="first"/"last";默认是last;
- 参考多数值列排序
Excel中实现方式:选中自定义排序再按顺序操作即可
排序之前的数据
排序之后的数据
Python实现方式:
3.数值排名
Excel实现方式:使用公式RANK.AVG( )或者RANK.EQ( );第一个参数是需要排序的数值,第二个参数是数据所在的范围,第三个参数是
平均排名1用的公式RANK.AVG( );平均排名2用的公式RANK.EQ( )
Python实现方式:rank(method="first"/"min"/"max"/"average")
first-按值在所有的待排列数据中出现的先后顺序排名;
min-与excel中的RANK.EQ一样;
max-与min相反;
average-与excel中的RANK.AVG一样;
4.数值删除
- 删除列
方式一:drop([ 列名 ],axis=1)
方式二:drop(df.colums[],axis=1)
方式三:drop(columns=["",""])
- 删除行
方法和删除列的方式对应;
方法一:drop(["",""],axis=0)
方法二:drop(df.index[ ],axis=0)
方法三:drop(index=[ ])
- 删除特定行
将相反部分提取出来即可。
5.数值计数
Excel实现-COUNTIF函数;
Python实现-value_counts(),normalize表示不同值出现的占比,sort=False实现不按计数数值降序排列;
6.唯一值获取-unique()
7.数值查找 -isin()
判断某一列
判断整个表
8.区间切分
Excel实现方式是通过嵌套多个IF函数实现,主要是把IF函数的用法搞明白即可。
Python中实现方式:cut( )和qcut( )
方式一:cut(划分列,划分区间的点-列表)
这样子的参数输入才是正确的,我导入了新的df数据【在excel新建了一个sheet,重新导入数据】默认是左开右闭的情形;
方式二:qcut(划分列,划分区间的个数)- 原则是每个组里面的数据个数尽可能相等,从而把待切分数据切成几份;默认也是左开右闭;
9.插入新的行或列
方式一:依靠insert()实现,参数需要插入的位置、插入新列的列名、以及要插入的数据。
方式二:直接以索引的方式进行列的插入,让新列等于某列值即可。
10.行列互换
直接调用.T即可
11.索引重塑
首先应该理解索引重塑是什么意思。DataFrame其实是相当于Excel中的二维表,如下所示:
该表格也能对应一个树形结构的图,这样的话就是一维表,如下所示:
从表格型数据转换到树形数据的过程叫做重塑,即相当于在excel中从二维表向一维表转换的过程。
python中对应的用法是.stack(),与之相反的从树形结构到表格型数据DataFrame的用法是.unstack()。
12.长宽表转换
长宽表转换就是将比较长(很多行)的表转换为比较宽(很多列)的表,或者将比较宽的表转换为比较长的表。
- 宽表转换成长表
以该表为例
方式一:通过stack( )方法;
先固定不变的列,比如这里的Company和Name就是固定不变的列,然后要将Sale2013-Sale2016变成列,同时对应的值也要变成列,这样子就将原来后面的四列转换成了两列。
方式二:通过melt( )方法;id_var指宽表转换成长表时保持不变的列,var_name指原来的列索引转化为行索引以后对应的列名,value_name指新索引对应的值的列名。
- 长表转换成宽表
长表转换成宽表的常用方法是使用数据透视表。
13.apply( )和applymap( )函数
apply( )-对DateFrame中的某一列或者某一行中的元素执行相同的函数操作;
applymap( )-对DataFrame中的每一个元素执行相同的函数操作;