六、pandas模块:(5)删除(dropna()函数)

#df.dropna 用于删除缺少值,即数据集中空缺的数据列或行。
"""
去除缺失值:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

参数
axis : {0 or ‘index’, 1 or ‘columns’}, default 0(默认0)
#确定删除缺失值所在行还是列
0, or ‘index’ : #0或者'index',删除缺失值所在行
1, or ‘columns’ : #1或者'columns',删除缺失值所在列
    
how : {‘any’, ‘all’}, default ‘any’(默认'any'
#当行或列至少有一个缺失值,是否将其删除
‘any’ : #存在任何缺失值,就将该行或列删除
‘all’ : #只有当该行或列所有值都为缺失值,才删除该行或列

thresh : int, optional
#只保留至少有规定的(thresh的值)非na值的行。

subset : array-like, optional
#沿着其他轴的标记要考虑,例如如果要删除行,则这些列将包含要包含的列。
inplace : bool, default False如果为True,则直接在原数据改动

"""
import pandas as pd
import numpy as np
df = pd.DataFrame({'name': ['Alfred', 'Batman', 'Catwoman', np.nan],
                  'toy': [np.nan, 'Batmobile', 'Bullwhip', np.nan],
                  'born': [pd.NaT, pd.Timestamp('1940-06-25'), pd.NaT, np.nan]})

print(df)
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-06-25
2  Catwoman   Bullwhip        NaT
3       NaN        NaN        NaT
#默认删除所有有缺失值的行
df.dropna()
name toy born
1 Batman Batmobile 1940-06-25
#删除所有含有缺失值的列
df.dropna(axis=1)
0
1
2
3
df.dropna(axis='columns')
0
1
2
3
#只删除所有都为缺失值的行
df.dropna(how='all')
name toy born
0 Alfred NaN NaT
1 Batman Batmobile 1940-06-25
2 Catwoman Bullwhip NaT
#只删除指定列中含有缺失值的行
df.dropna(subset=['name', 'toy'])
name toy born
1 Batman Batmobile 1940-06-25
2 Catwoman Bullwhip NaT
print(df)
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-06-25
2  Catwoman   Bullwhip        NaT
3       NaN        NaN        NaT
#以上操作均不改动原数据,inplace=True直接在原数据改动
df.dropna(inplace=True)
print(df)
     name        toy       born
1  Batman  Batmobile 1940-06-25

你可能感兴趣的:(python学习笔记)