http://localhost:8890/notebooks/3.%E7%A9%BA%E5%80%BC%E9%87%8D%E5%A4%8D%E5%80%BC%E5%A4%84%E7%90%86.ipynb
空值:None,NaT,NaN
ser=pd.Series([‘a’,datetime(2019,12,28),’c’,np.nan,None])
ser[1]=pd.NaT
判断空值:
设置空值:
ser[1]=pd.NaT
df.iloc[:4,1]=np.nan
定位空值行:
1索引data.loc[data['runtime'].isnull()=True]2data[data['release_date'].isnull()]3pd.isnull(data['release_date'])=True
删除空行|列:
1.dropna(how=’any’,axis=0,inplace=False):默认按行删除,删除只要有空就全行删除, inplace默认不原地删除
subset=[ ]
frame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
删除空行:
frame.dropna(how='all',inplace=False)
2.删除空值列:
# 删除空列frame.dropna(axis=1,how='all')
填充空值数据:
fillna({‘a’:0},axis=0|1,)
可以指定某行某列填充为什么
data[‘runtime’].fillna({2656:113,4140:81},axis=0,inplace=True)
构建数据:
df = pd.DataFrame(np.random.randn(7,3))df.iloc[:4,1]=np.nandf.iloc[:2,2]=np.nandf0 1 20 1.652813 NaN NaN1 -2.830003 NaN NaN2 0.968372 NaN 0.0054853 1.613678 NaN -1.7279294 1.668419 -1.285250 -0.3833325 -0.017941 0.615747 -0.8029766 1.531804 -0.609657 -1.753818
填充函数:fillna(method=””,limit= inplace=False)
向前填充:
前向填充通常在时间格式里填充
df1.fillna(method=”ffill”)
向后填充:
df1.fillna(method=”bfill”)
限制填充:
df1.fillna(method=’ffill’,limit=1)
场景填充:
df1[1].fillna(df1[1].mean())#median( )#中位数 mode()#众数
重复值删除处理
链接
判断重复值: 所有列重复才判断为重复
duplicated()
删除重复值:删除多个重复.预览inplace=False, keep=’first’保留重复的第一个还是最后一个
drop_duplicates()
subset 参数最重要(删除几列)
# 按照某一列删除重复值data.drop_duplicates(['k1'],keep='first')
map映射与apply()函数
map()
apply()
replace()
先去掉空值
