注意:
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