python数据预处理_Python数据预处理——缺失值、重复值
一、缺失值处理 isnull( ) 、fillna( ) 、dropna( )
(1)查看
- 缺失
查看数据集缺失,返回每列的缺失个数 df.isnull().sum()
查看某字段有缺失的行 df[df.a.isnull()]
查看某字段每行的缺失情况:返回T/F:df.score.isnull() 、返回0/1:df.score.isnull().astype(int)
- 缺失占比
返回每列的缺失占比:df.apply(lambda col:sum(col.isnull())/col.size)
行的缺失占比大于60%的列:data.ix[data.isnull().sum(axis=1)/data.shape[1]>0.6,:]
列的缺失占比大于60%的行:data.isnull().sum(axis=0)/data.shape[0]>0.6
- 可视化
import missingno as msno
msno.bar(Customer, color='IndianRed')
(2)填补 fillna
- 以指定值填补:
#填补一列:df.a.fillna(df.a.mean/median()),#mean:使用均值填补、median:使用中位数填补
#填补多列:
fill_cols=['a','b','c']
fill_values={col:df[col].mode()[0] for col in fill_cols} #使用每个字段的值的众数填补
df=df.fillna(fill_values)
- 通过字典调用fillna:df.fillna({'a': 0.55, 'b': 0.66} , inplace=True)
- df.fillna(method='ffill', limit=2) limit:对于前向和后向填充可以连续填充的最大数量
- 利用随机森林对缺失值预测填充函数
def set_missing(df):
# 把已有的数值型特征取出来
process_df = df.ix[:,[12,1,2,3,4,5,6,7,8,9,10,14,16]]
# 分成已知该特征和未知该特征两部分
known = process_df[process_df.StockMoney>0].as_matrix()
unknown = process_df[process_df.StockMoney==0].as_matrix()
# X为特征属性值
X = known[:, 1:]
# y为结果标签值
y = known[:, 0]
# fit到RandomForestRegressor之中
rfr = RandomForestRegressor(random_state=0,
n_estimators=200,max_depth=3,n_jobs=-1)
rfr.fit(X,y)
# 用得到的模型进行未知特征值预测
predicted = rfr.predict(unknown[:, 1:]).round(0)
print(predicted)
# 用得到的预测结果填补原缺失数据
df.loc[(df.StockMoney==0), 'StockMoney'] = predicted
return df
Data=set_missing(data07)
(3)删除 dropna
- df=df.dropna(subset=['a','b','c'],how='any'/'all',inplace=True)
- 删除缺失率超过80%的字段(首先筛选缺失超过80%的列):df.drop(columns=['a','b'])
- df.dropna(thresh=2) 这一行除去NA值,剩余数值的数量大于等于2,便显示这一行。
二、重复值处理duplicated( )、drop_duplicates( )
(1)查看
- 查看数据集重复,返回重复的行数
df.duplicated().sum()
(df.duplicated(subset=['a','b','c'])).sum()
- 查看指定字段有的重复的行
df[df.a.duplicated()]
df[df.duplicated(subset=['a','b','c'])] #isnull( )没有此用法
- 查看指定字段的重复情况,返回T/F:df.a.duplicated()、返回0/1:df.a.duplicated().astype(int)
(2)去重
- df.drop_duplicates()
df.drop_duplicates(subset=None, keep='first', inplace=False)
keep : {‘first’, ‘last’, False}, default first’删除重复项并保留第一次出现的项(duplicated和drop_duplicates默认保留的是第一个出现的值组合)
python数据预处理_Python数据预处理——缺失值、重复值相关推荐
- 如何用python进行数据预处理_Python数据预处理
数据预处理是指在对数据进行数据挖掘之前,先对原始数据进行必要的清洗.集成.转换.离散和规约等一系列的处理工作,已达到挖掘算法进行知识获取研究所要求的最低规范和标准.通常数据预处理包括:数据清洗.数据集 ...
- python数据预处理_Python数据预处理
1.缺失值处理 1.1缺失值查看 在Python中直接调用info()方法就会返回每一列的缺失情况. Python中缺失值一般用NaN表示,从用info()方法的结果来看,地区.销量跟销售额这三列是1 ...
- python的数据清理_Python数据清理,清洗
一.数据清洗与准备 1.缺失值 NaN(np.nan): 对数值型数据,浮点值NaN(not a number) NA(not available) None 均为缺失值,通过data.isnull( ...
- python 数据类_python数据类
前言 之前有写过一篇python元类的笔记,元类主要作用就是在要创建的类中使用参数metaclass=YourMetaclass调用自定义的元类,这样就可以为所有调用了这个元类的类添加相同的属性了. ...
- python matplotlib画数据分布图_Python数据可视化之matplotlib
数据可视化能让人们更直观的传递数据所要表达的信息.Python 中有两个专用于可视化的库,matplotlib 和 seaborn ,本文将介绍matplotlib. Matplotlib:基于Pyt ...
- python数据输出_python数据输出
下面的是我的code, 但是最后的结果全部都是others,有哪位大神能帮忙看产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个表达式.这个函数传递表达式转换为一个字符串,如下结果 ...
- python交互式数据可视化_python数据可视化工具
熟知python的人都知道,python上常用的一款数据可视化工具是Matplotlib,但是Matplotlib是静态的.那么,Python中除了matplotlib外,还有哪些数据可视化工具呢?其 ...
- python组合数据分类_Python 数据可视化:分类特征统计图
上一课已经体验到了 Seaborn 相对 Matplotlib 的优势,本课将要介绍的是 Seaborn 对分类数据的统计,也是它的长项. 针对分类数据的统计图,可以使用 sns.catplot 绘制 ...
- python客户画像_Python数据分析学习笔记05:用户画像
Python数据分析学习笔记05:用户画像 一.用户画像 用户画像是指根据用户的属性.用户偏好.生活习惯.用户行为等信息而抽象出来的标签化用户模型.通俗说就是给用户打标签,而标签是通过对用户信息分析而 ...
最新文章
- MySQL 微秒慢查询补丁
- Mybatis 3 返回布尔值,需要注意的地方
- CMT跟踪算法学习笔记
- C++多线程编程(入门实例)
- 局域网弱口令扫描工具_漏洞扫描软件AWVS的介绍和使用
- (推荐)jQuery性能优化指南
- poi设置自动换行后显示不全_抖音企业号权益之POI领多和地址内容编辑,视频编辑...
- php批量修改怎么实现,PinPHP购物分享系统2.2后台批量采集修改实现方法
- CC2530单片机入门学习
- 射频天线设计-窄带阻抗匹配电路设计
- maya 阿诺德水晶材质_Maya自带Arnold中的Ai Standard Surface材质如何渲染透明贴图?...
- java求方程的解_给定一个 n 元一次方程组,求方程组的解。(java8)
- C++后台开发面试常考
- 浅析文本挖掘(jieba模块的应用)
- 微信小程序 - 解决 rich-text 富文本解析图片无法自适应宽高问题(图片超出屏幕宽度且不受控)
- 软考高级-信息系统管理师之质量管理(最新版)
- 手把手带你用viewpager实现gallary效果,外加无限循环,自动轮播
- Spark的RDD的弹性体现在什么地方?------面试题
- python控制excel降序排列_Python实现EXCEL表格的排序功能示例
- 【CVPR2022】Detecting Camouflaged Object in Frequency Domain