pandas(3)缺失值重复值以及时间类型的处理

注意:
drop和concat系方法axis=0,axis=1列,其它大多数与之相反
1、描述统计:
(1)查看整体描述统计describe()
(2)数据分组pd.cut()

2、缺失值的表现形式:不区分大小写 NAN nan NaN 都是空
3、怎么创建缺失值:None 或者np.nan
4、pandas处理缺失值

判断

isnull()检测整张表中的缺失值的数据
df.isnull().any(axis=1)判断哪行中有空值 因为是按列的数据统计的 所以axis=1
df.isnull().any(axis=0)判断哪列中有空值。。
df.notnull().all(axis=1)判断哪些行中有非空值。。
df.notnull().all(axis=0)判断哪些列中有非空值。。
df.notnull() True 是非空 False是空值

删除

根据drop函数进行删除
首先要取索引 然后再删除
index=df[df.isnull().any(axis=1)].index
df.drop(labels=index,axis=0)
dropna()直接删

通过布尔取值

df[df.isnull().any(axis=1)] dataframe数据
df[df.notnull().all(axis=1)] 结果是行的结果  但是数据是按列统计的 所以axis=1

dropna() 函数

axis 维度 axis=0 表示行 axis=1 表示列 columns默认为0
how all 表示这一行或者列中全都是空值(nan)才删除
	any表示这一行或者列中至少有一个nan 就删除
thresh 保留至少n个非nan 的行或者列 注意是保留
inplace 筛选以后的新数据是否存为副本 True就是在原数据中直接保存

填充缺失值

fillna()
	value
		用户自己定义值进行空值的填充
	axis参数
		一般和method参数联用 axis=0 表示行 axis=1 表示列
	inplace
		True 表示对元数据进行修改
		False表示不修改 默认是False
	method 
		注意这个参数不能与value同时出现
		method参数的取值 pad/ffill backfill/bfill, None
		pad/ffill:用前一个非缺失值填充到该缺失值
		backfill/bfill:用下一个非空值填充该空值

缺失值的计算

nan可以计算得,缺失值+任何数都等于缺失值nan

替代值 replace

data.replace(‘背包’,‘挎包’) 一对一的替换
data.replace([‘背包’,‘挎包’,‘...’,...],‘挎包’) 多对一的替换
data.replace({‘背包’:‘大大大包’,16:3600,30:5000})多对多替换

删除重复值

df.duplicated()判断重复数据记录 行与行之间进行的比较
df.drop_duplicated()删除的是为True的那一行数据
df.drop_duplicated(‘列名’) 删除列名中值相同的记录
df.drop_duplicated([‘列名1’,‘列名2’]) 删除这两列中数据重复的记录(一整行)
keep 参数
	df.drop_duplicated(‘列名’,keep=‘last’) 如果有重复的话保留最后一个重复值 默认是保留第一个重复值
	df.drop_duplicated(keep=False)删除所有的重复值

获取唯一值

df[‘列名’].unique()
df[‘列名’].nunique()返回的是唯一值的个数

排序
data.sort_valuse(by=‘列名’)默认是升序
data.sort_valuse(by=‘列名’,ascending=False)默认是降序
data.sort_index(ascending=False)
数据类型转换

astype
	df['b'].astype(int)把float类型转换为int类型(b列是float类型)
	有些时候列中数据类型不一致 怎么做数据类型转换
	to_numeric() 可以把特殊的类型数据变成nan
	然后再做空值填充 
	最后使用astype进行类型转换

时间类型的操作

to_datatime
修改日期格式
	data[‘列名’]=pd.to_datatime(data[‘列名’])这个列中的数据一定是可以转换成时间的数据才行
将日期设置成索引
	data.set_index(‘列名’,inplace=True)
进行布尔值判断
	data.index < '2017-3-1'
	或者
	from datatime import datatime
	data.index < datatime(2017,3,1)		
提取整月的数据
	data[data.index.month==1]
转成月或者年或者日
	data.to_period('M') Y D 

猜你喜欢

转载自blog.csdn.net/zml194849/article/details/123431448