drop和dropna的用法详解

进行数据清洗时,经常会遇到缺失值。
处理缺失值的一种方式是,直接删除

dropna篇

官方文档:

DataFrame.dropna(self, axis=0, how=‘any’, thresh=None, subset=None, inplace=False)

参数:

0.构建实例

import pandas as pd
import numpy as np
df = pd.DataFrame({'name':['zhao','qian','sun','li'],'mark':[150,122,np.nan,32],'gender':['female',np.nan,np.nan,'male']})
dfname  mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male

1.axis: axis=0、index,删除所在行,axis=1、columns,删除所在列。默认为行。default

df.dropna(axis=0) #删除空值所在行,1,2行被删掉name   mark    gender
0   zhao    150.0   female
3   li      32.0    maledf.dropna(axis='columns')#删除空值所在列,mark、gender都被删掉name
0   zhao
1   qian
2   sun
3   li

2.how:选择删除的模式,有any和all两种。

  • any:只要存在空值即删除所在行列,默认为any。default
  • all:所在行或列如果全是空值,则删除
df.dropna(axis=0,how='any')#any模式name    mark    gender
0   zhao    150.0   female
3   li      32.0    male#为方便演示,新构建一下dfname   mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male
4   NaN     NaN     NaNdf.dropna(axis=0,how='all')#all模式,第5行被删除name  mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male

3.thresh:指定当一行或一列存在多少非空值时,保留该行或该列
thresh 美 [θrεʃ] vt.打(谷);翻来覆去vi.打谷脱粒

dfname   mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male
4   NaN     NaN     NaNdf.dropna(axis=0,thresh=1) #当df中每行有至少1个非空值是,保留该行name    mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    maledf.dropna(axis=0,thresh=2)#当df中,每行至少有2个空值,保留该行name  mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
3   li      32.0    male

4.subset:传入一个列表,指定相应的列名,如果指定列内有空值,则删除所在行,可以和how搭配。

dfname   mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male
4   NaN     NaN     NaNdf.dropna(how='all',subset=['name','gender'])#name和gender列同为空值是,删除对应的行。name   mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male

5.inplace:执行操作后,将返回值赋值给df。default=“False”

dfname   mark    gender
0   zhao    150.0   female
1   qian    122.0   NaN
2   sun     NaN     NaN
3   li      32.0    male
4   NaN     NaN     NaNdf.dropna(inplace=True) #df已重新赋值
dfname  mark    gender
0   zhao    150.0   female
3   li      32.0    male

drop篇

官方文档:

DataFrame.drop**(self,** labels=None**,** axis=0**,** index=None**,** columns=None**,** level=None**,** inplace=False**,** errors='raise’)

参数

0.构建实例

import pandas as pd
import numpy as np
df = pd.DataFrame({'name':['张三','李四','王二','麻子','杜甫'],'mark':[120,111,135,150,151],'gender':['male','female','female','male',np.nan]})
df #构建出df实例name mark    gender
0   张三  120     male
1   李四  111     female
2   王二  135     female
3   麻子  150     male
4   杜甫  151     NaN

1.labels:按照标签删除对应的行或列,接受单个标签或是一个列表

df.drop('name',axis=1)#删除列需加上axis参数mark   gender
0   120     male
1   111     female
2   135     female
3   150     male
4   151     NaNdf.drop([1,3])#传入多个参数需使用列表name   mark    gender
0   张三  120     male
2   王二  135     female
4   杜甫  151     NaN

2.axis:指出需要删除的是行(0或index,)还s是列(1或columns),default = 0.默认为0

#效果同上,此处不演示了

3.index\columns:0.21.0版本之后,可以通过直接指定index= 来代替“label= ,axis=”。可以传入单个标签或是一个列表。

dfname   mark    gender
0   张三  120     male
1   李四  111     female
2   王二  135     female
3   麻子  150     male
4   杜甫  151     NaNdf.drop(index= 1)#这里等价于df.drop(1,axis=0)name   mark    gender
0   张三  120     male
2   王二  135     female
3   麻子  150     male
4   杜甫  151     NaNdf.drop(columns= ['name','gender'])#这里等价于df.drop(['name','gender'],axis=2)mark
0   120
1   111
2   135
3   150
4   151

4.level:针对多级标签。多级标签计算时,从0开始

m_index1=pd.Index([("A","x1"),("A","x2"),("B","y1"),("B","y2"),("B","y3")],name=("class1","class2"))
#创建多级标签
df1=pd.DataFrame(np.random.randint(1,10,(5,3)),index=m_index1)
df1#构建一个df0 1   2
class1  class2
A       x1      6   6   6x2     1   8   6
B       y1      3   6   2y2     5   9   2y3     9   8   1df1.drop(index = ['y1','y2','x1'],level=1)#删除多级索引,从0开始,第二个,所以level=10    1   2
class1  class2
A       x2      1   8   6
B       y3      9   8   1

5.inplace:同dropna中效果一样,删除数据后自动赋值。
6.errors:如果传入的标签不存在,会报错,KeyError,errors可以忽略报错。可选择raise和ignore,default=raise

dfname   mark    gender
0   张三  120     male
1   李四  111     female
2   王二  135     female
3   麻子  150     male
4   杜甫  151     NaNdf.drop(columns= ['name','number'])#没有number列,结果会报错,keyerror
KeyError                                  Traceback (most recent call last)in
----> 1 df.drop(columns= ['name','number'])df.drop(columns= ['name','number'],errors='ignore')#忽略报错,删除参数中有的列mark gender
0   120     male
1   111     female
2   135     female
3   150     male
4   151     NaN

pandas学习之drop和dropna篇相关推荐

  1. pandas数据清洗:drop函数案例详解、dropna函数案例详解、drop_duplicates函数案例详解

    pandas数据清洗:drop函数.dropna函数.drop_duplicates函数详解 1 drop函数简介 1.1 构建学习数据 1.2 删除行两种方法 1.3 删除列两种方法 2 dropn ...

  2. Python之pandas:pandas中缺失值与空值处理的简介及常用函数(drop()、dropna()、isna()、isnull()、fillna())函数详解之详细攻略

    Python之pandas:pandas中缺失值与空值处理的简介及常用函数(drop().dropna().isna().isnull().fillna())函数详解之详细攻略 目录 pandas中缺 ...

  3. 【pandas drop()和dropna()函数使用详解】

    drop和dropna的用法详解 进行数据清洗时,经常会遇到缺失值. 处理缺失值的一种方式是,直接删除 dropna使用 DataFrame.dropna(self, axis=0, how='any ...

  4. 数据分析之pandas学习笔记(六)(层次化索引、重塑、轴向旋转、行列变换、合并表数据)

    数据分析之Pandas学习笔记(六)(层次化索引.重塑.轴向旋转.行列变换.合并表数据) level层次化索引 unstack()与stack()进行重塑,即:行列索引变换 swaplevel()交换 ...

  5. pandas python2_Python数据分析之pandas学习(二)

    有关pandas模块的学习与应用主要介绍以下8个部分: 1.数据结构简介:DataFrame和Series 2.数据索引index 3.利用pandas查询数据 4.利用pandas的DataFram ...

  6. pandas学习笔记之DateFrame

    pandas学习笔记之DateFrame 文章目录 pandas学习笔记之DateFrame 1.DateFrame的创建 1)认识DataFrame对象 2)由二维列表创建(默认index和colu ...

  7. python数据分析-pandas学习

    文章目录 一.pandas环境的搭建 1.pandas 简介 2.pandas安装和调用 二.pandas学习 1.pandas简介 2.pandas学习资源 3.pandas核心数据结构 4.Ser ...

  8. Pandas学习(三)---数值运算

    Pandas学习--数值运算 数值计算和统计基础 常用数学.统计方法 基本参数:axis.skipna 主要数学计算方法,可用于Series和DataFrame(1) 主要数学计算方法,可用于Seri ...

  9. 基于Anaconda的pandas学习

    基于Anaconda的pandas学习 Pandas安装 创建对象 创建Series对象 创建DataFrame对象 创建date_range 查看数据 获取数据 直接获取 索引获取 增删改数据 索引 ...

最新文章

  1. CNN在Keras中的实践|机器学习你会遇到的“坑”
  2. C++中为何构造函数不可是虚函数,而析构函数可以?
  3. centos查看网关地址
  4. 有几个人会用计算机,怎么知道我家的wifi有几个人在使用
  5. sqli-labs\Less 25~30
  6. OpenFileDialog 打开文件对话框
  7. css入门之head区设置
  8. 笑跪!博士写论文解释科学擀面,学霸们每天都在想些啥…
  9. map slice综合示例 go语言
  10. java中构造器的调用顺序
  11. 聊聊spring cloud的HystrixCircuitBreakerConfiguration
  12. 雷神开机logo更改_升级BIOS/更换开机logo教程
  13. java高级工程师认证考试_Java高级软件工程师人才缺口巨大
  14. 在Windows 2008中使用winvnc
  15. 微信小程序 常用组件
  16. 2022软件测试技能 Mysql数据库必会知识点总结
  17. vim 重新编译,支持lua (compile vim with lua)
  18. python画苹果标志图片_替换/绘制/分享:让所有 App 拥有 macOS 11 Big Sur 风格的图标...
  19. 【Java字符串分割[split()]和截取[substring()]】
  20. ASFG - AI可以帮你自动生成字幕文件

热门文章

  1. 查询起止时间为同一天,需要查到当天数据
  2. Google新版第三方登录(Javascript SDK)
  3. DoNet开源项目-基于jQuery EasyUI的后台管理系统
  4. 百度账号因安全问题被限制登录,该如何申诉?
  5. 查看当前Ubuntu系统的版本
  6. win10 docker部署gpu项目
  7. 计算机网络常见的面试题(牛客网总结)
  8. jxTMS--web界面定义
  9. 敏捷之路:如何开好迭代评审会
  10. 使用node读取文件内容并且替换文件中的内容