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

判断空值:

pd.isnull()
np.isnan()
a.info()

设置空值:

ser[1]=pd.NaT
df.iloc[:4,1]=np.nan

定位空值行:

  1. 1索引
  2. data.loc[data['runtime'].isnull()=True]
  3. 2
  4. data[data['release_date'].isnull()]
  5. 3
  6. pd.isnull(data['release_date'])=True

删除空行|列:

1.dropna(how=’any’,axis=0,inplace=False):默认按行删除,删除只要有空就全行删除, inplace默认不原地删除
subset=[ ]

  1. frame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

删除空行:

  1. frame.dropna(how='all',inplace=False)

2.删除空值列:

  1. # 删除空列
  2. frame.dropna(axis=1,how='all')

填充空值数据:

fillna({‘a’:0},axis=0|1,)

可以指定某行某列填充为什么

data[‘runtime’].fillna({2656:113,4140:81},axis=0,inplace=True)
构建数据:

  1. df = pd.DataFrame(np.random.randn(7,3))
  2. df.iloc[:4,1]=np.nan
  3. df.iloc[:2,2]=np.nan
  4. df
  5. 0 1 2
  6. 0 1.652813 NaN NaN
  7. 1 -2.830003 NaN NaN
  8. 2 0.968372 NaN 0.005485
  9. 3 1.613678 NaN -1.727929
  10. 4 1.668419 -1.285250 -0.383332
  11. 5 -0.017941 0.615747 -0.802976
  12. 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 参数最重要(删除几列)

  1. # 按照某一列删除重复值
  2. data.drop_duplicates(['k1'],keep='first')

map映射与apply()函数

map()
apply()
replace()

先去掉空值