python 删掉某一列_对比Excel学习python数据分析-学习笔记4

  • 一对一替换
  • 多对一替换
  • 多对多替换
  • 参考一列数值进行排序
  • 参照有缺失值的列排序
  • 参考多数值列排序
  • 数值排名
  • 删除列
  • 删除行
  • 删除特定列行
  • 数值计数
  • 唯一值获取
  • 数值查找
  • 区间切分
  • 插入新的行或列
  • 行列互换
  • 索引重塑
  • 长宽表转换
  • apply( )和applymap( )函数

1.数值替换

  • 一对一替换

replace(A,B)-用B替换A;

replace(A,B,inplace=True)-用B替换A,元数据也将被替换掉;

replace(np.NaN,0)-用0替换空值,相当于fillna();

efc837b522b9d3e0a9b337de9cebcdf3.png
  • 多对一替换

多对一替换即对多个不同的值替换成同一个值,比如原始数据的年龄列中有异常数值230和240,需要把230和240都替换成33。

Excel中需要用函数来实现,思路是先判断年龄列中的数据等于230或者240,如果成立,则替换成33,如果不成立则是原来的数据;

b45368bf905b073ce8ae4dc2a48ec316.png

Python中同样也是用replace实现-replace([A,B],C)-用C来替换A和B;

50f960a4872d5ad260d6701fa3020899.png
这里最后一列是我用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;

b852af84da014622e00d0d0cb869e7c3.png

python中的实现方法:使用字典的形式进行一对一的替换;

bf0c3acbd1684a22d889093893c009e2.png

2.数值排序

  • 参考一列数值进行排序

Excel中的操作是直接选中需要参照排序的一列-选择排序和筛选-升序/降序即可;但是这里有个问题,是我自己以前没有搞明白的地方:扩展选定区域和以当前选定区域排序的区别是什么。

“扩展选定区域”指的是将扩展区域(近乎整个表格)都进行相应排序。其余都会随参照列的顺序变化而全部发生相对应的变化;

“以当前选定区域排序”指的是的只将选定的区域进行排序。而其余数据不随参照列的顺序变化而发生变化;

16a30f6cc6b3a0d6e45fbda83ec03878.png
原始数据

bdb28683cde94e14f24175982de2e8ec.png
对年龄列扩展选定区域升序之后的数据,可以看到其余数据都随之发生了变化

863810e8e44519cd75fef9a0961d01b2.png
对年龄列以当前选定区域升序之后的数据,可以看到E列之前的数据都没有变化,F列发生变化的原因是F列使用了公式,单元格都是随E的数据变化的

python中实现的方式是使用sort_values(by=" ",ascending=True/False)方法;默认是升序的方式,因此如果是降序排列,只需指定是ascending=False即可;

5d8afb6854606687055e626886147a3b.png
这里参照单个列排序的话年龄可以不用加[]
  • 参照有缺失值的列排序

在排序的方法中传入参数na="first"/"last";默认是last;

63053be75e66beec0bcebf02554a8389.png

e6bc8037d262ab4146c229c45bad37fa.png
  • 参考多数值列排序

Excel中实现方式:选中自定义排序再按顺序操作即可

86602103318ac79c303d223150d61603.png
排序之前的数据

682e5f737434fea1130e95dfa45a37d1.png

cdedae892cef390b5c909db1f0f8bbe7.png
排序之后的数据

Python实现方式:

e29e94ba2990e2515520ce9bc2351a6c.png

3.数值排名

Excel实现方式:使用公式RANK.AVG( )或者RANK.EQ( );第一个参数是需要排序的数值,第二个参数是数据所在的范围,第三个参数是

e1c06cd31d8de1b9193d987209a907f5.png
平均排名1用的公式RANK.AVG( );平均排名2用的公式RANK.EQ( )

Python实现方式:rank(method="first"/"min"/"max"/"average")

first-按值在所有的待排列数据中出现的先后顺序排名;

min-与excel中的RANK.EQ一样;

max-与min相反;

average-与excel中的RANK.AVG一样;

d5904360f8ff6bfc08cf0d7ec0eb66c6.png

ac4182f09efec8002cb799d721221079.png

f5f7e52965a6771ad8fa4a4e877d9378.png

4.数值删除

  • 删除列

方式一:drop([ 列名 ],axis=1)

方式二:drop(df.colums[],axis=1)

方式三:drop(columns=["",""])

1e07efac9d13ebd792525d85fe024ae1.png

a20deea531c2e1c850daebc88f82d52d.png

51d457d2ab11e6074f8215119f1d2989.png
  • 删除行

方法和删除列的方式对应;

方法一:drop(["",""],axis=0)

方法二:drop(df.index[ ],axis=0)

方法三:drop(index=[ ])

a20aeed8bcf89a386ae9620d22dc8b6a.png

21e8a8d6ce57c733a3e1f18e34727ad1.png
  • 删除特定行

将相反部分提取出来即可。

5.数值计数

Excel实现-COUNTIF函数;

Python实现-value_counts(),normalize表示不同值出现的占比,sort=False实现不按计数数值降序排列;

b42d4a85b137e0b89945dcf9c0b747d7.png

6.唯一值获取-unique()

a23816733628efaaa2692aa241a38ce7.png

7.数值查找 -isin()

判断某一列

5972e515c355ab570a320ef54d72e420.png

判断整个表

6ac0a31f2f5601703259e8b42955f186.png

8.区间切分

Excel实现方式是通过嵌套多个IF函数实现,主要是把IF函数的用法搞明白即可。

575531a483aee422ff0cce9f09e0ad0c.png

Python中实现方式:cut( )和qcut( )

方式一:cut(划分列,划分区间的点-列表)

这样子的参数输入才是正确的,我导入了新的df数据【在excel新建了一个sheet,重新导入数据】默认是左开右闭的情形;

758411aa94212b77bc2493311ced5794.png

方式二:qcut(划分列,划分区间的个数)- 原则是每个组里面的数据个数尽可能相等,从而把待切分数据切成几份;默认也是左开右闭;

e0df252663f2891f05d46cd1194e6f5e.png

9.插入新的行或列

方式一:依靠insert()实现,参数需要插入的位置、插入新列的列名、以及要插入的数据。

5df945f759f994c4fc5958a8ef03d804.png

方式二:直接以索引的方式进行列的插入,让新列等于某列值即可。

43dbbb2f7cc3edc4c2ada8563b703fcc.png

10.行列互换

直接调用.T即可

178824f0fc13532ba6b18bcd1e3fdcc4.png

11.索引重塑

首先应该理解索引重塑是什么意思。DataFrame其实是相当于Excel中的二维表,如下所示:

666069ffa6c105b4d4a5e4becf53f04f.png

该表格也能对应一个树形结构的图,这样的话就是一维表,如下所示:

e3f4dbe5b9ccd097be655917ad1b038f.png

从表格型数据转换到树形数据的过程叫做重塑,即相当于在excel中从二维表向一维表转换的过程。

python中对应的用法是.stack(),与之相反的从树形结构到表格型数据DataFrame的用法是.unstack()。

09072894c30490a84510f3a609857b98.png

12.长宽表转换

长宽表转换就是将比较长(很多行)的表转换为比较宽(很多列)的表,或者将比较宽的表转换为比较长的表。

  • 宽表转换成长表

bf250f3c21bf62b3eaa1d5338436c898.png

以该表为例

方式一:通过stack( )方法;

先固定不变的列,比如这里的Company和Name就是固定不变的列,然后要将Sale2013-Sale2016变成列,同时对应的值也要变成列,这样子就将原来后面的四列转换成了两列。

67ca6926c3e651fd2d9490a0692f5e37.png

724220718020732db529c3fc7f34d438.png

dc8c761d439b0861b095efd4f01014ac.png

方式二:通过melt( )方法;id_var指宽表转换成长表时保持不变的列,var_name指原来的列索引转化为行索引以后对应的列名,value_name指新索引对应的值的列名。

87e2ead41c825a2ae803deec452727d4.png
  • 长表转换成宽表

长表转换成宽表的常用方法是使用数据透视表。

bc79139fd22b1d63e1dc41fc9848c344.png

e71cb83c69d6647a6ea63918e8e1a7c4.png

13.apply( )和applymap( )函数

apply( )-对DateFrame中的某一列或者某一行中的元素执行相同的函数操作;

applymap( )-对DataFrame中的每一个元素执行相同的函数操作;

3457852fb9091ef80f5180e70a1e35be.png

bca9f5faae226eec346125d9d96ca9dd.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值