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

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']})

df

	name	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	male

df.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

#为方便演示,新构建一下df
	name	mark	gender
0	zhao	150.0	female
1	qian	122.0	NaN
2	sun		NaN		NaN
3	li		32.0	male
4	NaN		NaN		NaN

df.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:指定当一行或一列存在多少非空值时,保留该行或该列

df
	name	mark	gender
0	zhao	150.0	female
1	qian	122.0	NaN
2	sun		NaN		NaN
3	li		32.0	male
4	NaN		NaN		NaN

df.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	male

df.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搭配。

df
	name	mark	gender
0	zhao	150.0	female
1	qian	122.0	NaN
2	sun		NaN		NaN
3	li		32.0	male
4	NaN		NaN		NaN

df.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”

df
	name	mark	gender
0	zhao	150.0	female
1	qian	122.0	NaN
2	sun		NaN		NaN
3	li		32.0	male
4	NaN		NaN		NaN

df.dropna(inplace=True) #df已重新赋值
df
	name	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		NaN
	
df.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=”。可以传入单个标签或是一个列表。

df
	name	mark	gender
0	张三	120		male
1	李四	111		female
2	王二	135		female
3	麻子	150		male
4	杜甫	151		NaN

df.drop(index= 1)#这里等价于df.drop(1,axis=0)
	name	mark	gender
0	张三	120		male
2	王二	135		female
3	麻子	150		male
4	杜甫	151		NaN

df.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#构建一个df
				0	1	2
class1	class2			
A		x1		6	6	6
		x2		1	8	6
B		y1		3	6	2
		y2		5	9	2
		y3		9	8	1
	
df1.drop(index = ['y1','y2','x1'],level=1)#删除多级索引,从0开始,第二个,所以level=1
				0	1	2
class1	class2			
A		x2		1	8	6
B		y3		9	8	1

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

df
	name	mark	gender
0	张三	120		male
1	李四	111		female
2	王二	135		female
3	麻子	150		male
4	杜甫	151		NaN

df.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

转载于:https://blog.csdn.net/lisnyuan/article/details/106560468?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165483095816782350984195%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165483095816782350984195&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-106560468-null-null.142v12control,157v13control&utm_term=dropna%E5%92%8Cdrop%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas 是一个强大的数据分析工具,提供了很多常用的函数来处理数据,下面是一些常用的函数及其用法: 1. read_csv():读取 CSV 文件并返回一个 DataFrame 对象。 2. head():返回 DataFrame 的前几行数据,默认为前 5 行。 3. tail():返回 DataFrame 的后几行数据,默认为后 5 行。 4. info():返回 DataFrame 的基本信息,包括每列的数据类型、非空值数量等。 5. describe():返回 DataFrame 的基本统计信息,包括计数、均值、标准差、最小值、最大值等。 6. shape:返回 DataFrame 的行数和列数。 7. columns:返回 DataFrame 的列名。 8. index:返回 DataFrame 的行索引。 9. loc[]:根据行标签和列标签访问 DataFrame 中的元素。 10. iloc[]:根据行索引和列索引访问 DataFrame 中的元素。 11. dropna():删除 DataFrame 中的缺失值。 12. fillna():用指定的值或方法填充 DataFrame 中的缺失值。 13. groupby():按照指定的列对 DataFrame 进行分组。 14. apply():对 DataFrame 的每一列应用指定的函数。 15. pivot_table():根据指定的列计算 DataFrame 的透视表。 16. merge():将两个 DataFrame 按照指定的列进行合并。 17. sort_values():按照指定的列对 DataFrame 进行排序。 18. drop_duplicates():去除 DataFrame 中的重复行。 19. value_counts():统计 DataFrame 中每个元素出现的次数。 20. isnull():判断 DataFrame 中的元素是否为空值。 这些函数覆盖了 Pandas 中的很多常用操作,掌握它们对于数据分析和处理非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值