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

.dataframe thead tr:only-child th {
text-align: right;
}

.dataframe thead th {
text-align: left;
} .dataframe tbody tr th {
vertical-align: top;
}
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.

.dataframe thead tr:only-child th {
text-align: right;
}

.dataframe thead th {
text-align: left;
} .dataframe tbody tr th {
vertical-align: top;
}
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,跟上面的相反就是了

.dataframe thead tr:only-child th {
text-align: right;
}

.dataframe thead th {
text-align: left;
} .dataframe tbody tr th {
vertical-align: top;
}
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()

.dataframe thead tr:only-child th {
text-align: right;
}

.dataframe thead th {
text-align: left;
} .dataframe tbody tr th {
vertical-align: top;
}
col_1 col_2 col_3
0 1 125.0 1389.0
4 1480 300.0 0.0

ing~~~

上一篇:DOM 基础


下一篇:火狐浏览器URL中传中文参数乱码问题