题目
假设df为有缺失值的一个DataFrame,如果想平均数填充k2列的缺失值,我们不可以用以下哪一代码?A df.fillna(df.mean())['k2']B df.fillna(df.model())['k2']C df.fillna(df.average())['k2']D df.fillna(df.median())['k2']
假设df为有缺失值的一个DataFrame,如果想平均数填充k2列的缺失值,我们不可以用以下哪一代码?
A df.fillna(df.mean())['k2']
B df.fillna(df.model())['k2']
C df.fillna(df.average())['k2']
D df.fillna(df.median())['k2']
题目解答
答案
答案为BC,下面进行逐项分析:
1. 分析选项A: `df.fillna(df.mean())['k2']`
这会使用整个DataFrame的平均数来填充NaN,但是在最后使用['k2']定位到该列。这是有效的。
2. 分析选项B: `df.fillna(df.model())['k2']`
`model()`不是pandas DataFrame的一个方法。因此,这个代码会引发错误。
3. 分析选项C: `df.fillna(df.average())['k2']`
虽然numpy有一个average()函数,但pandas的DataFrame对象并没有直接的average()方法。
4. 分析选项D: `df.fillna(df.median())['k2']`
这会使用整个DataFrame的中位数来填充NaN,然后使用['k2']定位到该列。尽管中位数不等于平均数,但这是一个有效的pandas调用。
综上所述,答案是B和C。这两个选项中的方法不适用于pandas DataFrame对象。
解析
步骤 1:分析选项A: `df.fillna(df.mean())['k2']`
- `df.mean()`计算整个DataFrame的平均值,然后`fillna()`使用这些平均值填充NaN值。最后,`['k2']`选择k2列。这是有效的。
步骤 2:分析选项B: `df.fillna(df.model())['k2']`
- `model()`不是pandas DataFrame的一个方法。因此,这个代码会引发错误。
步骤 3:分析选项C: `df.fillna(df.average())['k2']`
- 虽然numpy有一个average()函数,但pandas的DataFrame对象并没有直接的average()方法。因此,这个代码会引发错误。
步骤 4:分析选项D: `df.fillna(df.median())['k2']`
- `df.median()`计算整个DataFrame的中位数,然后`fillna()`使用这些中位数填充NaN值。最后,`['k2']`选择k2列。尽管中位数不等于平均数,但这是一个有效的pandas调用。
- `df.mean()`计算整个DataFrame的平均值,然后`fillna()`使用这些平均值填充NaN值。最后,`['k2']`选择k2列。这是有效的。
步骤 2:分析选项B: `df.fillna(df.model())['k2']`
- `model()`不是pandas DataFrame的一个方法。因此,这个代码会引发错误。
步骤 3:分析选项C: `df.fillna(df.average())['k2']`
- 虽然numpy有一个average()函数,但pandas的DataFrame对象并没有直接的average()方法。因此,这个代码会引发错误。
步骤 4:分析选项D: `df.fillna(df.median())['k2']`
- `df.median()`计算整个DataFrame的中位数,然后`fillna()`使用这些中位数填充NaN值。最后,`['k2']`选择k2列。尽管中位数不等于平均数,但这是一个有效的pandas调用。