【小白从小学Python、C、Java】

【Python全国计算机等级考试】

【Python数据分析考试必会题】

● 标题与摘要

Python中缺失值删除

pd.dropna()函数

● 选择题

以下关于dropna()函数说法错误的是:

A 用于删除缺失数据

B axis=0:若某列有空值,则删除该列

C axis=1:若某列有空值,则删除该列

D how=all:该行/列全为空值,就删除该行/列

​● 问题解析

1.dropna()方法,用于找到DataFrame类型数据的空值(缺失值),将空值所在的行/列删除后,将新的DataFrame作为返回值返回。A正确。

2.dropna()函数的参数:dropna([axis=0][,how='any'][,thresh='None'][,subset='None'][,inplace='False'])。

(1)axis:当axis取0或'index',即axis=0或axis='index',index表示行索引,若某行有空值,则删除该行;当axis取1或'column',即axis=1或axis='column',column表示列索引,若某列有空值,则删除该列。默认值为0。B错误,C正确。

(2)how:筛选方式。‘any',表示该行/列只要有一个以上的空值,就删除该行/列;‘all',表示该行/列全部都为空值,就删除该行/列。默认值为‘any’。D正确。

(3)thresh:删除条件(int整数型):行/列中非空元素个数小于thresh,该行/列会才会被删除。可以理解为:行/列中空值太多了(非空值太少了)才启动删除行/列。

​(4)subset:子集,参数表示行或列的一部分,用列表表示。默认值为None。

如果axis=0或者‘index',subset中元素为列的索引,如d.dropna(axis='index', how='all', subset=[0,5,6])),表示当某行的0,5,6列均为空时,则删除该行。

如果axis=1或者‘column',subset中元素为行的索引,如d.dropna(axis='column', how='all', subset=[0,5,6])),表示当某列的0,5,6行均为空时,则删除该列。

(5)inplace:是否直接在原dataframe进行缺失值删除。布尔值,默认为False,即不在原DataFrame上进行缺失值删除操作,dropna()函数返回值为缺失值删除操作后的结果。如果为True,则在原DataFrame上进行缺失值删除操作,dropna()函数返回值为None。

​● 附图 

图1 验证axis=0,how='any'的实验

图2 验证axis=0,how='all'以及thresh参数用法的实验

图3 验证subset,inplace参数用法的实验

● 附图代码

import numpy as np

import pandas as pd

a = np.ones((6,5))

for i in range(len(a)):

a[i,:i] = np.nan

d = pd.DataFrame(data=a)

print(d)

# 按行删除:存在空值,即删除该行

print(d.dropna(axis=0, how='any'))

# 按行删除:所有数据都为空值,即删除该行

print(d.dropna(axis=0, how='all'))

# 按列删除:该列非空元素小于2个的,即删除该列

print(d.dropna(axis='columns', thresh=2))

# 设置子集:删除第1、2、3列都为空的行

print(d.dropna(axis='index', how='all', subset=[1,2,3]))

print(d.dropna(axis=0, how='any', inplace=True))

print("==============================")

print(d)

● 正确答案

B

欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐