Pandas 数据清洗常用篇
Posted wyy1480
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas 数据清洗常用篇相关的知识,希望对你有一定的参考价值。
一.缺失值
sklearn中的preprocessing下游imputer,可进官方文档参考。这里主讲pandas。
拿到数据,一般先检查是否有缺失值,用isnul()或notnull().
再决定dropna(),还是fillna()。
1.1 检查是否有缺失值 isnull()、notnull()
import pandas as pd
import numpy as np
df = pd.DataFrame({"col_1":[1, 2, 3, 666, 1480],
"col_2":[125, 999, 110, np.nan, 300],
"col_3":[1389, np.nan, np.nan, np.nan, 0]})
df
col_1 | col_2 | col_3 | |
---|---|---|---|
0 | 1 | 125.0 | 1389.0 |
1 | 2 | 999.0 | NaN |
2 | 3 | 110.0 | NaN |
3 | 666 | NaN | NaN |
4 | 1480 | 300.0 | 0.0 |
df.isnull() #询问每一个值是不是为NaN.
col_1 | col_2 | col_3 | |
---|---|---|---|
0 | False | False | False |
1 | False | False | True |
2 | False | False | True |
3 | False | True | True |
4 | False | False | False |
df.notnull() #询问每一个值是不是不为NaN,跟上面的相反就是了
col_1 | col_2 | col_3 | |
---|---|---|---|
0 | True | True | True |
1 | True | True | False |
2 | True | True | False |
3 | True | False | False |
4 | True | True | True |
1.2 假设要删除缺失值dropna()
考虑如何删,删行?删列?还是缺失多少个才删?
DataFrame.dropna(axis=0, how=‘any‘, thresh=None, subset=None, inplace=False)
- axis:决定删行删列,默认axis=0,删行;删列要修改axis=1.
- how:决定怎么删,至少有一个NaN就删,还是全是NaN才删。default "any",只要有NA,马上删掉该行或该列。"all",全是NA时才删掉这一行或一整列。
- thresh : 设置该行或列至少有多少个非NA值才能保留下来,有点拗口。输入整数,这个参数有必要才设置,没有就不用管。
- subset : array-like, optional
Labels along other axis to consider, e.g. if you are dropping rows these would be a list of columns to include. - inplace : 是否直接取代原数据框,默认False,所以我们真要除去行列,会inplace=True,或者给它新赋值到一个变量中。
df.dropna()
col_1 | col_2 | col_3 | |
---|---|---|---|
0 | 1 | 125.0 | 1389.0 |
4 | 1480 | 300.0 | 0.0 |
ing~~~
以上是关于Pandas 数据清洗常用篇的主要内容,如果未能解决你的问题,请参考以下文章
100天精通Python(数据分析篇)——第69天:Pandas常用数据筛选方法(betweenisinlociloc)
100天精通Python(数据分析篇)——第68天:Pandas数据清洗函数大全(判断缺失删除空值填补空值替换元素分割元素)