pandas数据清洗数据清洗,排序排序,索引设置索引设置,数据选取方法数据选取方法
此教程适合有pandas基础的童鞋来看,很多知识点会一笔带过,不做详细解释
Pandas数据格式数据格式
Series
DataFrame:每个:每个column就是一个就是一个Series
基础属性shape,index,columns,values,dtypes,describe(),head(),tail()
统计属性Series: count(),value_counts(),前者是统计总数,后者统计各自value的总数
df.isnull() df的空值为True
df.notnull() df的非空值为True
修改列名修改列名
df.rename(columns = {'key':'key2'},inplace=True)
更改数据格式astype()
isin #计算一个“Series各值是否包含传入的值序列中”的布尔数组
unique #返回唯一值的数组
value_counts #返回一个Series,其索引为唯一值,值为频率,按计数降序排列
数据清洗数据清洗
丢弃值drop()
df.drop(labels, axis=1)# 按列(axis=1),丢弃指定label的列,默认按行。。。
丢弃缺失值丢弃缺失值dropna()
# 默认axi=0(行);1(列),how=‘any'
df.dropna()#每行只要有空值,就将这行删除
df.dropna(axis=1)#每列只要有空值,整列丢弃
df.dropna(how='all')# 一行中全部为NaN的,才丢弃该行
df.dropna(thresh=3)# 每行至少3个非空值才保留
缺失值填充缺失值填充fillna()
df.fillna(0)
df.fillna({1:0,2:0.5}) #对第一列nan值赋0,第二列赋值0.5
df.fillna(method='ffill') #在列方向上以前一个值作为值赋给NaN
值替换值替换replace()
# 将df的A列中 -999 全部替换成空值
df['A'].replace(-999, np.nan)
#-999和1000 均替换成空值
obj.replace([-999,1000], np.nan)
# -999替换成空值,1000替换成0
obj.replace([-999,1000], [np.nan, 0])
# 同上,写法不同,更清晰
obj.replace({-999:np.nan, 1000:0})
重复值处理重复值处理duplicated(),,unique(),,drop_duplictad()
df.duplicated()#两行每列完全一样才算重复,后面重复的为True,第一个和不重复的为false,返回true
#和false组成的Series类型
df.duplicated('key')#两行key这一列一样就算重复
df['A'].unique()# 返回唯一值的数组(类型为array)
df.drop_duplicates(['k1'])# 保留k1列中的唯一值的行,默认保留第一行
df.drop_duplicates(['k1','k2'], take_last=True)# 保留 k1和k2 组合的唯一值的行,take_last=True 保留最后一行