- 缺失值
- 缺失值的操作
- 数据替换
- 重复值及删除数据
- NumPy格式转换
缺失值
#None和NA表示缺失值 #将无穷值设置为缺失值 pd.options.mode.use_inf_as_na = True #缺失值的判断 df.isna() df.isnull() df.notna() #缺失值的统计 df.isnull().sum() #每列 df.isnull().sum(1) #每行 #输出有缺失值的行 df.loc[df.isnull().any(1)] df.loc[df[''].isnull().any(1)]#单列不可以这么输出 df[''][df[''].isnull()]#这样也能 #输出有缺失值的列 df.loc[:,df.isnull().any()] df.loc[:,df[''].isnull().any()]#单列不可以这么输出 #NA标量 ''' Pandas 1.0以后的版本中引入了一个专门表示缺失值的标量pd.NA,它代表空整数、空布尔、空字符,这个功能目前处于实验阶段。pd.NA的目标是提供一个“缺失值”指示器,该指示器可以在各种数据类型中一致使用(而不是np.nan、None或pd.NaT,具体取决于数据类型)。 ''' #时间数据的缺失值:NaT #插入缺失值 df.loc[0]=None df.loc[1]=np.nan df.A = pd.NA缺失值的操作
#填充
df.fillna(0)
df.fillna('missing')
df.fillna(0, limit=1) #只替换第一个
#字典{}指定不同列,value=values
df.fillna(method = '') #参数值:pad/fill向前、bfill/backfill向后
#填充计算后的值
df.fillna(dff.mean())
#插值填充
df.interpolate(method='')
#数据为线性'linear'线性方法
#数据增长速率越来越快'quadratic'二次
#累积分布'pchip'
#填补默认值,以平滑绘图为目标'akima'
#这些都需要你的环境中安装了SciPy库。
#缺失值删除,一般在数据缺失比例较高时删除
df.dropna() #删除有缺失值的行
df.dropna(1) #删除有缺失值的列
df.dropna(
axis=,
how='all',
thresh=2,
subset=['name','born'],#指定判断缺失值的列范围
inplace=True)
#缺失值参与计算
加法会忽略缺失值,按0处理
累加会忽略缺失值,但NA会保留在结果中,不认为是加的0,skipna=False跳过有缺失值的计算并返回缺失值
count计数时,不计
分组聚合操作时,自动忽略,如果需要计入有空值的分组,可将dropna=False传给df.groupby()
数据替换
df.replace()
df.replace([],method='pad')
#字符替换
df.replace(to_replace='bat', value='new')
#正则
df.replace(to_replace=r'^ba.$', value='new',regex=True)
df.replace(regex=[r'^ba.$','foo'], value='new')
#缺失值替换
df.replace('.',np.nan)
df.replace(r's*.s*',np.nan,regex=True)
df.replace(['a','.'],['b',np.nan])
#数字修剪
df.clip(lower, upper) #当数据大于upper时使用upper的值,小于lower时用lower的值
#对单元格进行修减
c = pd.Series([-1, 1, 3])
df.clip(c, c+1, axis=0)
重复值及删除数据
#检测重复值的方法 df.duplicated(subset=None, keep='first') # #subset指定列,keep用来确定要标记的重复值, #first将除第一次出现的重复值为True,last将最后一次标为True,False将所有标为True #删除重复值 df.drop_duplicates( subset=None, keep='first', inplace=False, ignore_index=False) #重新分配索引 #删除数据 df.drop(labels=None, #要删除的列或行 axis-0, #0为行,1为列 index=None, columns=None, level=None, #索引层级,删除此层 inplace=False, errors='raise') #ignore/raiseNumPy格式转换
#从Pandas对象中获取NumPy数组的新方法 ds.to_numpy() #可以用在Index、Series和DataFrame s.array #为PandasArray,用在Index和Series,它封装了numpy.ndarray接口 #DF转为ndarray df.values df.to_numpy() #他俩返回一个array类型 #Series转为ndarray 同上 #df.to_records(),转为NumPy record array np.array(df.to_records()) #转为array #np.array读取 np.array(df)



