匆忙之间在CSDN上连载博客已有三年之久,现在已临近毕业。回顾大学的四年尽是不甘,意难平。有时反思良久,或许是我对自己的定位还不够明确,还不知道自己想要的是如此模糊,也许接受现实是对理想主义者最大的冲击。
以上是博主突然有感而言,现在回归博客主题。
使用Pandas进行数据预处理时需要了解Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的三篇博客详细介绍这两种数据结构的处理方法:
一文速学-数据分析之Pandas数据结构和基本操作代码
DataFrame行列表查询操作详解+代码实战
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示
以上三篇很容易学会,没有比较难的实战。此篇博客基于Jupyter之上进行演示,本篇博客的愿景是希望我或者读者通过阅读这篇博客能够学会方法并能实际运用,而且能够记录到你的思想之中。当然个人不是数学专业对一些专业性的知识可能不是很了解,希望读者看完能够提出错误或者看法,博主会长期维护博客做及时更新。纯分享,希望大家喜欢。
此博客用到的数据集为:
isnull函数可以显示为空的值,使用False和True替换原数据集
df1.isnull()
一般在加上sum()统计各个特征空值数:
df1.isnull().sum()
计数空值的话也可以通过info()函数对比其他列相减得到空值个数:
df1.info()
135968-107759=28209就是空值的个数。
检测完毕后可以我们可以筛选出没有空值的行数据:
df1.loc[df1['city_num'].notnull(),:]
也可以使用dropna()函数对空值进行删除:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:
df1.dropna(axis=0,how='any',inplace=False)
关于填充上偏文章有讲述过fillna()函数可以将空值统一替换为想要的数值(也可以设定为均值填充dataFrame.mean(),inplace = True、向上填充method=‘ffill’、向下填充method=‘bfill’、对应值填充df.replace({np.nan:‘aa’}))
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
参数说明:
为方便展示这里另外创建数据集:
例如我想把年龄为空值的数据替换为10:
df2.loc[:,'old'].fillna(value=10,inplace=True)
填充为上一个数据:
df2.loc[:,'old'].fillna(method='ffill',inplace=True)
向下填充数据:
df2.loc[:,'old'].fillna(method='bfill',inplace=True)
填充为均值:
df2.loc[:,'old'].fillna(value=df2.loc[:,'old'].mean(),inplace=True)
填充为众数:
df2.loc[:,'old'].fillna(value=df2.loc[:,'old'].median(),inplace=True)
填充为最大值:
df2.loc[:,'old'].fillna(value=df2.loc[:,'old'].max(),inplace=True)
填充为最小值:
df2.loc[:,'old'].fillna(value=df2.loc[:,'old'].min(),inplace=True)