Pandas数据清洗
在数据处理的过程中,很多数据集存在数据缺失、错误、异常等情况,这些数据被称为脏数据,数据清洗的过程就是处理这些脏数据的过程。如无特殊说明,本章所使用数据为 尿检结果.xls:
异常处理
缺失数据处理
- isnull/isna
Pandas 的isnull
方法等于isna
方法(推荐用isna
),是用来判断缺失值的,如果返回True
则该单元格为空,返回False
则该单元格非空。
|
|
- notnull/notna
Pandas 的notnull
方法等于notna
方法(推荐用notna
),是用来判断非缺失值的,如果返回True
则该单元格为非空,返回False
则该单元格空。
|
|
-
dropna
本方法主要用于删除缺失值所在的行/列,函数原型为DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
,其中主要参数:参数 类型 解释 how
{any, all}
,默认any
any
代表删除所有存在缺失值的行/列,all
表示删除全部为缺失值的行/列thresh
int
某行/列的非空值超过 thresh
时不删除subset
array
允许我们 drop
的行/列索引 -
fillna
本方法主要用于填充缺失值所在的行/列,函数原型为DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
,其中主要参数:参数 类型 解释 value
{scalar, dict, Series, DataFrame}
用于填充空单元格的值( scalar
),或者指定为每个索引(Series
)或列(DataFrame
)使用哪个dict/Serise/DataFrame
的值,不在dict/Serise/DataFrame
的值不会填充method
{'bfill','ffill', None}
用缺失值后面( bfill
)或前面(fill
)的值填充limit
int
最大填充次数
重复数据处理
-
duplicated
本方法主要用于查找重复值所在的行/列,函数原型为DataFrame.duplicated(subset=None, keep='first')
,将重复的数据设置为True
,其中主要参数:参数 类型 解释 subset
index 检查的列索引,默认检查所有 keep
{'first','last',False}
第一次/最后一个重复值不设置为 True
;所有重复值设为True
-
drop_duplicated 本方法主要用于删除重复值所在的行/列,函数原型为
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
,其中主要参数:参数 类型 解释 subset
索引 同上 keep
{'first','last',False}
同上 inplace
bool, default False
是否在原数据上修改
数据合并
contact
本方法主要用于合并不同Pandas数据,函数原型为pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, names=None, erify_integrity=False, copy=True)
,其中主要参数1:
参数 | 类型 | 解释 |
---|---|---|
objs |
DataFrame/Series |
需要合并的对象 |
join |
{'inner','outer'} |
联合或交集 |
keys |
索引 | 使用传递的键作为最外层构建层次索引 |
merge
本方法主要用于合并不同Pandas数据,函数原型为pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False)
,其中主要参数2:
参数 | 类型 | 解释 |
---|---|---|
left |
DataFrame |
需要合并的对象 |
right |
DataFrame |
需要合并的对象 |
how |
{left, right, outer, inner} |
数据融合的方法 |
on |
label or list |
连接的列名 |
left_on |
label or list, or array-like |
左表对齐的列 |
right_on |
label or list, or array-like |
右表对齐的列 |
left_index |
bool |
将左侧的行索引用作其连接键 |
right_index |
bool |
类上 |
sort |
bool |
合并后是否排序,关闭后效率更高 |
suffixes |
list |
列名重复时重命名的后缀 |
join
本方法主要用于合并不同Pandas数据(与merge类似),函数原型为DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
,其中主要参数:
参数 | 类型 | 解释 |
---|---|---|
other |
DataFrame |
另一个DataFrame对象 |
lsuffix |
str |
列名重复时重命名左表的后缀 |
rsuffix |
str |
列名重复时重命名右表的后缀 |
append
本方法主要用于合并不同Pandas数据,函数原型为DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)
,是concat
的简略形式,只能在axis=0
上进行合并
contact
合并时直接在行/列方向拼接数据(并集);merge
通过一个或者多个键将两张表在行/列方向合并在一起(语法类似SQL
语言,交集);join
根据索引进行列方向拼接(外联);append
用于行方向拼接数据。参考
-
很吵请安青争. pandas 表的合并 merge/join/contact. CSDN. [2019-01-09] ↩︎
-
Yale曼陀罗. Pandas拼接操作(concat,merge,join和append)的区别. CSDN. [2019-05-22] ↩︎

