df.dropna()python
df.fillna()函数
df.isnull()spa
df.isna()3d
空值:在pandas中的空值是""code
缺失值:在dataframe中为nan或者naT(缺失时间),在series中为none或者nan便可blog
DataFrame.
dropna
(axis=0, how='any', thresh=None, subset=None, inplace=False)函数做用:删除含有空值的行或列ip
axis:维度,axis=0表示index行,axis=1表示columns列,默认为0pandas
how:"all"表示这一行或列中的元素所有缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列it
thresh:一行或一列中至少出现了thresh个才删除。ast
subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行仍是列)
inplace:刷选过缺失值得新数据是存为副本仍是直接在原数据上进行修改。
例子:
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'], "toy": [np.nan, 'Batmobile', 'Bullwhip'], "born": [pd.NaT, pd.Timestamp("1940-04-25"),pd.NaT]}) print df
默认参数:删除行,只要有空值就会删除,不替换。
print df.dropna() print df
print "delete colums" print df.dropna(axis=1) #delete col
print "全部值全为缺失值才删除" print df.dropna(how='all')
print "至少出现过两个缺失值才删除" print df.dropna(thresh=2)
print "删除这个subset中的含有缺失值的行或列" print df.dropna(subset=['name', 'born'])
DataFrame.
fillna
(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)函数做用:填充缺失值
value:须要用什么值去填充缺失值
axis:肯定填充维度,从行开始或是从列开始
method:ffill:用缺失值前面的一个值代替缺失值,若是axis =1,那么就是横向的前面的值替换后面的缺失值,若是axis=0,那么则是上面的值替换下面的缺失值。backfill/bfill,缺失值后面的一个值代替前面的缺失值。注意这个参数不能与value同时出现
limit:肯定填充的个数,若是limit=2,则只填充两个缺失值。
示例:
df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [np.nan, 3, np.nan, 4]], columns=list('ABCD')) print df print "横向用缺失值前面的值替换缺失值" print df.fillna(axis=1,method='ffill') print "纵向用缺失值上面的值替换缺失值" print df.fillna(axis=0,method='ffill')
print df.fillna(0)
不一样的列用不一样的值填充:
对每列出现的替换值有次数限制,此处限制为一次
DataFrame.
isna
()判断是否是缺失值:
isnull同上。
替换空值:
df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, "", 1], [np.nan, np.nan, np.nan, 5], [np.nan, 3, "", 4]], columns=list('ABCD')) print df
如上,缺失值是NAN,空值是没有显示。
替换空值代码:须要把含有空值的那一列提出来单独处理,而后在放进去就好。
clean_z = df['C'].fillna(0) clean_z[clean_z==''] = 'hello' df['C'] = clean_z print df