空枝|使用Pandas数据处理与分析( 三 )


#筛选出任何含有缺失值的数据data[data.isnull().values==True]#统计某一列缺失值的数量data['现价'].isnull().value_counts()#筛选出某一列含有缺失值的数据data[data['原价'].isnull().values==True]3.删除缺失值:
data.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)#删除月销量中的缺失值 data.dropna(axis=0,subset=["月销量"]) 可以利用subset和thresh参数来删除你需要删除的缺失值 , inplace则表示是否在原表上替代 。
4.填充缺失值:
固定值填充:
data.fillna(value=http://kandian.youth.cn/index/None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)#利用月销量的均值来对NA值进行填充data["月销量"].fillna(data["月销量"].mean())#利用月销量的中位数来对NA值进行填充data["月销量"].fillna(data["月销量"].median())当然 , 缺失值的处理方法远不止这几种 , 这里只是简单的介绍一般操作 , 还有其他更高级的操作 , 比如:随机森林插值、拉格朗日插值、牛顿插值等等 。 针对这些高难度的插值方法 , 有兴趣可以自我去了解了解 。
重复值处理
定位重复值:
#找出"店铺名称"存在重复的数据data[data.duplicated(subset=["店铺名称"], keep='first')]删除重复值:#删除“店铺名称”存在重复的数据data.drop_duplicates(subset=["店铺名称"], keep='first', inplace=False)异常值处理:
在进行异常值处理之前 , 需先进行异常值检验 , 比较常用的有两种方法:
数据服从正态分布 , 采用3σ原则 。
数据不服从正太分布 , 采用箱线图检验 。
3σ原则:
#插入一列three_sigma又来表示是否是异常值data['three_sigma'] = data['月销量'].transform( lambda x: (x.mean()-3*x.std()>x)|(x.mean()+3*x.std() upper) #筛选异常数据data[data['qutlier'] ==True]#过滤掉异常数据qutlier_data=http://kandian.youth.cn/index/data[data['qutlier'] ==False]细心的你可能会发现 , 采用两种方法来处理异常数据的结果往往是不同的 , 箱线图法更为严格(有兴趣的话 , 你可以去了解了解其中的原理) 。
多余行/多余列删除
data.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')该操作主要用于不需要的行(默认删除行)或者列进行删除 , 从而有利于数据精简 。
(3) 数据变换数据变换主要有以下几点内容:
1.简单函数变换 。 例如对数据开方、平方、取对数、倒数、差分、指数等 。 目的是为了后续分析提供想要的数据和方便分析(根据实际情况而定) 。
#由于“累计评价”的值太大 , 我们新增一列对“累计评价”取对数处理data['对数_累计评价']=np.sqrt(data['累计评价'])#插入一列 , 计算“优惠力度”data['优惠力度']=data1['现价']/data1['原价']2.数据标准化 。 数据标准化是为了消除数据的量纲影响 , 为后续许多算法分析必要条件 。 常见的标准化方法很多 , 这里只是简单介绍一下:Min-Max标准化