高级训练营 / 训练 8:Python Pandas数据清洗实战100题
训练 8 Python Pandas数据清洗实战100题.csv

Python Pandas数据清洗实战100题

共 100 道题  · 已完成 0
0%
完成率
1
读取CSV并查看前5行 初级 0%

读取ds_titanic.csv并返回前5行数据。 数据集:ds_titanic 函数:pd.read_csv, head()

2
统计行列数和数据类型 初级 100%

统计titanic.csv的行数和列数。 数据集:titanic 函数:shape

3
数值列基本统计量 初级

返回heart.csv中数值列的统计摘要。 数据集:heart 函数:describe()

4
检查缺失值数量 初级

统计titanic.csv各列缺失值数量。 数据集:titanic 函数:isnull().sum()

5
统计唯一值数量 初级 100%

统计german_credit_risk.csv中各列唯一值数量。 数据集:german_credit_risk 函数:nunique()

6
识别内存占用 初级

统计titanic.csv内存占用。 数据集:titanic 函数:memory_usage()

7
读取前N行 初级

读取ds_titanic.csv的前10行。 数据集:ds_titanic 函数:nrows

8
检测完全重复行 初级

统计pandas_transactions.csv中完全重复的行数。 数据集:pandas_transactions 函数:duplicated().sum(...

9
查看缺失率并排序 初级

统计ds_employees.csv各列缺失率并降序排列。 数据集:ds_employees 函数:isnull().mean().sort_values()

10
生成数据质量报告 初级

生成german_credit_risk.csv的数据质量报告(行数、列数、缺失总数)。 数据集:german_credit_risk

11
删除有缺失的行 初级

删除titanic.csv中任意列有缺失值的行,返回剩余行数。 数据集:titanic 函数:dropna()

12
删除全缺失的行 初级

删除titanic.csv中所有列都缺失的行,返回行数。 数据集:titanic 函数:dropna(how='all')

13
保留缺失少于N列的行 初级

只保留titanic.csv中缺失值少于3列的行,返回行数。 数据集:titanic 函数:dropna(thresh)

14
用均值填充数值缺失 初级

用Age列均值填充titanic.csv的Age缺失值,返回填充后缺失数量。 数据集:titanic 函数:fillna(mean)

15
用中位数填充 初级

用titanic.csv的中位数填充Age列缺失值,返回缺失总数。 数据集:titanic 函数:fillna(median)

16
用众数填充分类列 初级

用german_credit_risk.csv分类列的众数填充缺失,返回填充后缺失总数。 数据集:german_credit_risk 函数:mode()[0...

17
前向填充时间序列 初级

用前向填充(ffill)处理ds_stocks.csv的缺失值,返回剩余缺失数。 数据集:ds_stocks 函数:ffill()

18
后向填充 初级

用后向填充(bfill)处理ds_stocks.csv的缺失值,返回剩余缺失数。 数据集:ds_stocks 函数:bfill()

19
线性插值填充 初级

用线性插值填充pandas_stock_prices.csv的缺失值,返回剩余缺失数。 数据集:pandas_stock_prices 函数:interpol...

20
按分组均值填充 初级

按Pclass分组计算均值填充titanic.csv的Age缺失,返回填充后缺失数。 数据集:titanic 函数:groupby + transform

21
缺失标记为独立类别 初级

将german_credit_risk.csv分类列的缺失值标记为'Unknown',返回标记数量。 数据集:german_credit_risk 函数:fi...

22
删除缺失率超阈值列 初级

删除titanic.csv中缺失率超过50%的列,返回删除的列数。 数据集:titanic 函数:drop(columns=)

23
字符串转整数 初级

将german_credit_risk.csv的Age列转为整数类型,返回dtype。 数据集:german_credit_risk 函数:astype(in...

24
字符串转浮点无效值变NaN 初级

将titanic.csv的Age列转为浮点,无效值变NaN。 数据集:titanic 函数:pd.to_numeric(errors='coerce')

25
对象转Categorical 初级

将titanic.csv的Sex列转为Categorical类型,返回dtype。 数据集:titanic 函数:astype('category')

26
字符串日期转datetime 初级

将ds_stocks.csv的date列从字符串转为datetime。 数据集:ds_stocks 函数:pd.to_datetime()

27
从文本提取数字 初级

从文本中提取数字部分。 数据集:start_times 函数:str.extract

28
计算日期差 初级

计算两个日期之间的天数差。 数据集:ds_stocks 函数:日期相减

29
布尔转0/1整数 初级

将titanic.csv的Survived列转为0/1整数,返回唯一值列表。 数据集:titanic 函数:astype(int)

30
连续数值分箱 初级

将titanic.csv的Fare列分箱为3个等宽区间。 数据集:titanic 函数:pd.cut()

31
字符串标签映射为数字 初级

用map将german_credit_risk.csv的Sex列映射为0/1。 数据集:german_credit_risk 函数:map()

32
混合类型安全转换 初级

将heart.csv的trestbps列转为数值,无效值变NaN。 数据集:heart 函数:pd.to_numeric(errors='coerce')

33
删除完全重复行 初级

删除pandas_transactions.csv中完全重复的行,返回删除的行数。 数据集:pandas_transactions 函数:drop_dupli...

34
按指定列去重 初级

按pandas_employees.csv的姓名列去重,返回删除的行数。 数据集:pandas_employees 函数:drop_duplicates(su...

35
去重保留最后一条 初级

按交易ID去重pandas_transactions.csv保留最后一条,返回行数。 数据集:pandas_transactions 函数:keep='las...

36
IQR法检测异常值 初级

用IQR方法检测titanic.csv的Fare列异常值数量。 数据集:titanic 函数:quantile(), IQR

37
Z-score检测异常值 初级

用Z-score方法检测heart.csv的chol列异常值数量(阈值=3)。 数据集:heart 函数:(x-mean)/std

38
clip截断极端值 初级

将titanic.csv的Fare列截断到[0, 200]范围,返回min和max。 数据集:titanic 函数:clip()

39
异常值替换为边界值 初级

将titanic.csv的Fare异常值替换为边界值,返回总行数。 数据集:titanic 函数:clip()替换

40
异常值替换为NaN再填充 初级

将heart.csv的chol异常值替换为NaN后再用中位数填充,返回缺失数。 数据集:heart 函数:replace + fillna

41
箱线图分位数异常阈值 初级

计算titanic.csv的Age列箱线图异常阈值(lower, upper)。 数据集:titanic 函数:describe + IQR

42
按分组检测异常 初级

按Pclass分组用IQR法检测titanic.csv的Age异常值数量。 数据集:titanic 函数:groupby + apply

43
去除首尾空格 初级

去除pandas_employees.csv中所有字符串列的首尾空格,返回行数。 数据集:pandas_employees 函数:str.strip()

44
统一大小写 初级

将german_credit_risk.csv所有字符串列统一为小写,返回第一行。 数据集:german_credit_risk 函数:str.lower()

45
替换特殊字符 初级

替换german_credit_risk.csv中的特殊字符为空格,返回行数。 数据集:german_credit_risk 函数:str.replace()

46
正则提取数字 初级

从ds_employees.csv的salary列提取第一个数字。 数据集:ds_employees 函数:str.extract

47
过滤包含特定字符串 初级

过滤ds_employees.csv中部门包含'Tech'的行数。 数据集:ds_employees 函数:str.contains()

48
分割字符串为多列 初级

将ds_titanic.csv的name列按逗号分割为姓和名,返回第一个姓。 数据集:ds_titanic 函数:str.split + expand

49
合并字符串列 初级

将ds_titanic.csv的name和sex列合并为一列,返回第一个值。 数据集:ds_titanic 函数:str.cat()

50
提取时间格式 初级

从start_times.csv提取时间格式HH:MM。 数据集:start_times 函数:str.split

51
str.contains过滤 初级

过滤ds_titanic.csv中Name列包含'Mr'的行数。 数据集:ds_titanic 函数:str.contains()

52
字符串长度筛选 初级

筛选german_credit_risk.csv中Checking account列长度大于10的行数。 数据集:german_credit_risk 函数:...

53
Min-Max归一化 初级

对titanic.csv的Fare列进行Min-Max归一化到[0,1],返回归一化后的前5个值。 数据集:titanic 函数:(x-min)/(max-m...

54
Z-Score标准化 初级

对heart.csv的chol列进行Z-Score标准化,返回标准化后的均值。 数据集:heart 函数:(x-mean)/std

55
对数变换 初级

对titanic.csv的Fare列进行对数变换(加1避免log0),返回变换后的均值。 数据集:titanic 函数:np.log1p()

56
Box-Cox变换 中级

对titanic.csv的Fare列进行Box-Cox变换,返回变换后的偏度。 数据集:titanic 函数:scipy.stats.boxcox

57
离散化/分箱 初级

将titanic.csv的Age列分为4个等频箱,返回每个箱的数量。 数据集:titanic 函数:pd.qcut()

58
排名与百分位 初级

计算titanic.csv的Fare列的百分位排名,返回最高排名值。 数据集:titanic 函数:rank(pct=True)

59
One-Hot编码 初级

对titanic.csv的Embarked列进行One-Hot编码,返回编码后新增的列数。 数据集:titanic 函数:pd.get_dummies()

60
标签编码 初级

对titanic.csv的Sex列进行标签编码,返回唯一编码值。 数据集:titanic 函数:factorize/LabelEncoder

61
自定义函数应用map 初级

对titanic.csv的Age列应用自定义函数(年龄分组),返回分组后的唯一值。 数据集:titanic 函数:map + lambda

62
apply逐元素操作 初级

对german_credit_risk.csv的Age列应用lambda计算年龄平方,返回前3个值。 数据集:german_credit_risk 函数:ap...

63
横向拼接concat 初级

将两个DataFrame横向拼接(axis=1),返回拼接后的列数。 数据集:titanic 函数:pd.concat(axis=1)

64
纵向拼接concat 初级

将titanic.csv分成两部分再纵向拼接,返回行数。 数据集:titanic 函数:pd.concat(axis=0)

65
内连接merge 初级

对titanic.csv自身进行内连接(on=pclass),返回行数。 数据集:titanic 函数:merge(how='inner')

66
左连接merge 初级

左连接保留左表所有行,返回行数。 数据集:titanic 函数:merge(how='left')

67
外连接merge 初级

外连接保留两表所有行,返回行数。 数据集:titanic 函数:merge(how='outer')

68
按多列连接 初级

按多列进行merge连接,返回行数。 数据集:titanic 函数:on=[col1, col2]

69
带后缀的连接 初级

连接时处理重名列(suffixes),返回列名列表。 数据集:titanic 函数:suffixes参数

70
join索引连接 初级

使用join进行索引级别的连接,返回行数。 数据集:titanic 函数:join()

71
交叉验证风格分割 初级

将数据集按8:2比例分割为训练集和测试集,返回训练集行数。 数据集:titanic 函数:iloc切片

72
追加新行 初级

创建新行并追加到DataFrame末尾,返回总行数。 数据集:titanic 函数:concat或append

73
长宽格式转换pivot 初级

将长格式数据转换为宽格式(pivot)。 数据集:titanic 函数:pd.pivot_table()

74
melt宽转长 初级

将宽格式数据转换为长格式(melt)。 数据集:ds_titanic 函数:pd.melt()

75
交叉表crosstab 初级

创建Pclass和Survived的交叉表。 数据集:titanic 函数:pd.crosstab()

76
堆叠stack 初级

对DataFrame进行堆叠操作,返回结果的形状。 数据集:titanic 函数:stack()

77
取消堆叠unstack 初级

对Series进行取消堆叠操作。 数据集:titanic 函数:unstack()

78
透视表多聚合函数 初级

创建透视表同时使用多个聚合函数。 数据集:titanic 函数:aggfunc=[func1, func2]

79
透视表填充缺失值 初级

创建透视表并用0填充缺失值。 数据集:titanic 函数:fill_value参数

80
多层索引操作 初级

创建多层索引的DataFrame并查询。 数据集:titanic 函数:set_index多列

81
pivot_table margins 初级

创建带总计行的透视表。 数据集:titanic 函数:margins=True

82
swaplevel层级交换 初级

交换多层索引的层级顺序。 数据集:titanic 函数:swaplevel()

83
单列分组求均值 初级

按Pclass分组计算Fare均值。 数据集:titanic 函数:groupby().mean()

84
多列分组聚合 初级

按Pclass和Sex分组计算Age均值。 数据集:titanic 函数:groupby([col1,col2])

85
多聚合函数agg 初级

同时对Fare列计算多个统计量。 数据集:titanic 函数:agg([func1, func2])

86
自定义聚合函数 初级

使用自定义聚合函数计算极差(max-min)。 数据集:titanic 函数:agg(lambda)

87
过滤分组filter 初级

过滤出组大小>200的组。 数据集:titanic 函数:groupby().filter()

88
分组转换transform 初级

用组内均值标准化Fare列。 数据集:titanic 函数:transform(mean)

89
分组排名rank 初级

在每组内对Fare进行排名。 数据集:titanic 函数:groupby().rank()

90
累积求和cumsum 初级

计算Fare列的累积求和,返回最后一个值。 数据集:titanic 函数:cumsum()

91
滚动窗口rolling 初级

计算Fare列的3日滚动均值,返回非NaN数量。 数据集:titanic 函数:rolling().mean()

92
expanding累积窗口 初级

计算expanding窗口的累积最大值。 数据集:titanic 函数:expanding().max()

93
完整数据清洗流程 中级

执行完整的ETL流程:读取->缺失处理->类型转换->保存统计。 数据集:titanic 综合练习

94
数据质量评分 中级

计算数据集的质量评分(完整性、唯一性等)。 数据集:german_credit_risk 综合练习

95
特征工程基础 中级

从现有列创建新特征(家庭规模、是否独自旅行等)。 数据集:titanic 综合练习

96
数据脱敏处理 中级

对ds_titanic.csv的name列进行部分遮蔽处理。 数据集:ds_titanic 综合练习

97
异常值自动处理管道 中级

构建自动化的异常值检测和处理管道。 数据集:heart 综合练习

98
多表关联数据整合 中级

模拟从多个数据源整合数据的场景。 数据集:titanic 综合练习

99
自动化数据报告生成 中级

生成包含基本统计信息的自动化数据报告。 数据集:titanic 综合练习

100
数据导出与保存 初级

将清洗后的数据导出为不同格式。 数据集:titanic 综合练习