Python数据分析与应用
第4章 数据预处理
本章共 26 题,可按题型筛选。
在使用 Pandas 处理缺失值时,若想检测数据集中哪些位置 不是 缺失值,应使用以下哪个 函数?
调用 df.dropna(how='all') 时,Pandas 会执行以下哪种操作?
在 fillna() 方法中,如果设置参数 method='ffill',其填充逻辑是:
关于 duplicated(keep='last') 方法的描述,正确的是:
$3\sigma$ 原则(拉依达原则)在检测异常值时,主要适用于以下哪种分布的数据集?
在箱形图检测中,判定为“异常值”的数值通常位于以下哪个区间之外?
使用 concat() 函数进行合并时,若想实现“纵向堆叠”且仅保留“共有列”,正确的参数配置 是:
merge() 函数中,参数 how='left' 代表的含义是:
将一个分层索引的 DataFrame 对象的列“旋转”为行,应使用以下哪个方法?
哑变量(Dummy Variables)处理中,常用 0 和 1 来表示类别。这里的 1 通常代表:
在 Pandas 中,缺失值通常使用 Python 的 None 或 NumPy 的 ________ 来表示,统一标 记为 NaN。
dropna() 方法中的 axis 参数默认值为 ________,表示删除包含缺失值的行。
fillna() 方法的 ________ 参数可以限制连续填充缺失值的最大数量。
根据 $3\sigma$ 原则,数值落在区间 $(\mu - 3\sigma, \mu + 3\sigma)$ 内的概率约为 ________。
箱形图中的 $IQR$(四分位距)计算公式为:$IQR = $ ________。
replace() 方法中,如果想同时将多个异常值 $[23, 50]$ 替换为 $[3, 2]$,需要传入两个 ________ 类型的对象。
如果数据中包含“¥”等货币符号导致无法运算,应先清洗符号,再利用 ________ 方法或 to_numeric() 函数转换类型。
concat() 函数进行合并时,参数 join 的默认值是 ________,表示取并集。
pivot() 方法包含三个主要参数:index(新行索引)、columns(新列索引)和 ________ (填充值)。
cut() 函数执行面元划分后,返回的对象类型是 ________ 类对象。
原理推导 :请简述为什么在机器学习预处理中,箱形图相比 $3\sigma$ 原则在检测异常值 时具有更强的普适性?
逻辑辨析 :请解释 stack() 与 unstack() 在重塑分层索引时的具体区别。
统计含义 :在进行面元划分(cut)时,参数 bins 传入一个整数与传入一个列表(如 [18, 30, 50, 100])在逻辑上有何不同?
数学表达 :已知一组数据的下四分位数为 $Q1$,上四分位数为 $Q3$。请写出判断一个数 值 $x$ 为异常值的逻辑数学条件。
实际应用 :为什么类别型特征(如“职业”)在输入大多数机器学习算法模型前,必须进行 哑变量(One-hot)处理?
应用场景 :你收到一份关于二手房成交的数据 house_df,包含三列:price(单价)、area(面 积)、status(装修状态:'简装', '精装')。请补全代码,完成以下预处理任务: 1. 检测并删除 price 列中的缺失值。 2. 使用 $3\sigma$ 原则剔除 price 列的异常值。 3. 将 status 列转换为哑变量矩阵,并与原数据拼接。 import pandas as pd import numpy as np # 假设 house_df 已经加载 # 1. 删除 price 中的缺失值 house_df.________(subset=[ 'price' ], inplace= True ) # 2. 定义 3-sigma 过滤逻辑 def filter_sigma(df, col): mean_val = df[col].________() std_val = df[col].________() # 逻辑:保留在 (mean-3*std, mean+3*std) 范围内的行 rule = (df[col] > mean_val - 3 * std_val) & (df[col] < mean_val + 3 * std_val) return df[rule] house_clean = filter_sigma(house_df, 'price' ) # 3. 哑变量处理 status_dummies = pd.________(house_clean[ 'status' ], prefix= '装修' ) # 拼接回原表 final_df = pd.________([house_clean, status_dummies], axis= 1 )