检查数据
- 空值检查
#查看数据是否有空 notnull
df.isnull().sum()#每一列的缺失值总和
df.isnull().any()#检查哪一列有空值
df[df.isnull().values==True]#显示有空值的行
- 整体情况
#查看行是否有重复
df.duplicated()
#查看整个表结构
df.info()
#查看数据基本情况,平均值,最大值等
df.describe()
#查看每列数据类型
df.dtypes
- 其他
#唯一值与计数
df.apply(pd.Series.value_counts)
#取列
df["a"]#Series
df[["a"]]#DataFrame
数据清洗
1.替换删除
替换
df.replace('--',np.nan)#数据替换
df.replace({"英语":"作弊"},0)#将英语列中的作弊替换为0
df.replace({"英语","语文"},{"English","Chinese"})#将英语,语文替换为"English","Chinese"
删除
df.apply(lambda x:x.strip())#去除空格
df.astype(str).strip()
#重复
df.drop_duplicates(keep='first').reset_index #两行相同时保留第一行
df.drop_duplicates(['value1'],keep='last')#value1列相同则去重复
#nan
df.dropna(axis=0,thresh=4,inplace=True )#删除非nan的数量小于4的行
df.dropna(how='all',axis=1)#删除所有值为nan的列
df.dropna(how='any',axis=0)#删除有nan的行
#增删
df.loc['d']=[2,2,2]#增加行,直接方法
df = df.append(df2)#直接在下面拼接,增加行
df['four']=6#增加列,自动长度匹配
df.assign(ln_one = lambda x: np.log(x.one), abs_two = lambda x: np.abs(x.two))#按指定要求增加列
df.drop