
任务描述
本关任务:根据所学知识完成右侧选择题。
相关知识
本关卡主要介绍Pandas自带的几个处理缺失值的工具的用法,该系列Pandas实训的缺失值主要有三种形式:null、NaN或NA。
选择处理缺失值的方法
一般情况下可以分为两种:一种方法是通过一个覆盖全局的掩码表示缺失值,另一种方法是用一个**标签值(sentinel value)**表示缺失值。
-
掩码方法中掩码可能是一个与原数组维度相同的完整布尔类型数组,也可能是用一个比特(
0或1)表示有缺失值的局部状态; -
标签方法中,标签值可能是具体的数据(例如用
-9999表示缺失的整数),也可能是些极少出现的形式。
Pandas缺失值
综合考虑各种方法的优缺点,Pandas最终选择用标签方法表示缺失值,包括两种Python原有的缺失值:浮点数据类型的NaN值,以及 Python的None对象。
-
None:Python对象类型的缺失值Pandas可以使用的第一种缺失值标签是None,它是一个Python单体对象,由于None是一个Python对象,所以不能作为任何NumPy / Pandas数组类型的缺失值,只能用于'object'数组类型(即由Python对象构成的数组)。np.array([1, None, 3, 4])Out: array([1, None, 3, 4], dtype=object)
-
NaN:数值类型的缺失值
另一种缺失值的标签是NaN(全称Not a Number),是一种按照IEEE浮点数标准设计、在任何系统中都兼容的特殊浮点数:vals2 = np.array([1, np.nan, 3, 4])vals2.dtypeOut: dtype('float64')
-
*注意:**
NumPy会为这个数组选择一个原生浮点类型,这意味着和之前的object类型数组不同,这个数组会被编译成C代码从而实现快速 *** 作。你可以把NaN看作是一个数据类病毒——它会将与它接触过的数据同化。**无论和NaN进行何种 *** 作,最终结果都是NaN**:1 + np.nan0 * np.nan #这两个的结果都为nan
虽然这些累计 *** 作的结果定义是合理的(即不会抛出异常),但是并非总是有效的:
vals2 = np.array([1, np.nan, 3, 4])vals2.sum(), vals2.min(), vals2.max()Out:(nan, nan, nan)
NumPy也提供了一些特殊的累计函数,它们可以忽略缺失值的影响:np.nansum(vals2), np.nanmin(vals2), np.nanmax(vals2)Out: (8.0, 1.0, 4.0)
谨记,
NaN是一种特殊的浮点数,不是整数、字符串以及其他数据类型。
Pandas中NaN与None的差异
虽然NaN与None各有各的用处,但是Pandas把它们看成是可以等价交换的:pd.Series([1, np.nan, 2, None])Out:0 1.01 NaN2 2.03 NaNdtype: float64
Pandas会将没有标签值的数据类型自动转换为NA。例如我们将整形数组中的一个值设置为np.nan时,这个值就会强制转换成浮点数缺失值NA,下表表示Pandas对不同类型缺失值的转换规则:
| 类型 | 缺失值转换规则 | NA标签值 |
|---|---|---|
| floating 浮点型 | 无变化 | np.nan |
| object 对象类型 | 无变化 | np.nan或None |
| integer 整数类型 | 强制转换为 float64 | np.nan |
| boolean 布尔类型 | 强制转换为 object | np.nan或None |
编程要求
本关无编程任务,要求完成右侧代码编辑区内相应的选择题。
测试说明
平台会对你的选择题答案结果进行测试,对比你的答案与实际正确的答案,只有所有答案全部正确才能进入下一关。
DE
-
1、
根据相关知识,计算
A、1 + np.nan、1 + None、np.nan + None的结果。'TypeError'、'TypeError'、'TypeError'
B、
C、nan、1、'TypeError''TypeError'、'TypeError'、'nan'
D、
E、nan、'TypeError'、'TypeError'nan、'1'、'nan' -
2、
假设
A、a = [1 ,2 ,None,4],data1 = pd.Series(a),data2 = pd.Series(np.array(a)),data1和data2的结果分别是什么?data1:
B、
0 1.0
1 2.0
2 NaN
3 4.0
dtype: object
data2:
0 1
1 2
2 None
3 4
dtype: objectdata1:
C、
0 1.0
1 2.0
2 None
3 4.0
dtype: float64
data2:
0 1
1 2
2 None
3 4
dtype: objectdata1:
D、
0 1.0
1 2.0
2 NaN
3 4.0
dtype: float64
data2:
0 1.0
1 2.0
2 NaN
3 4.0
dtype: float64data1:
E、
0 1
1 2
2 NaN
3 4
dtype: float64
data2:
0 1
1 2
2 None
3 4
dtype: objectdata1:
F、
0 1.0
1 2.0
2 NaN
3 4.0
dtype: float64
data2:
0 1
1 2
2 None
3 4
dtype: objectdata1:
0 1.0
1 2.0
2 NaN
3 4.0
dtype: float64
data2:
0 1.0
1 2.0
2 None
3 4.0
dtype: float64
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)