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]
2
data[data['release_date'].isnull()]
3
pd.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.nan
df.iloc[:2,2]=np.nan
df
0 1 2
0 1.652813 NaN NaN
1 -2.830003 NaN NaN
2 0.968372 NaN 0.005485
3 1.613678 NaN -1.727929
4 1.668419 -1.285250 -0.383332
5 -0.017941 0.615747 -0.802976
6 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()
先去掉空值