python实现数据清洗(缺失值与异常值处理)


Posted in Python onDecember 02, 2019

1。 将本地sql文件写入mysql数据库

本文写入的是python数据库的taob表

source [本地文件]

python实现数据清洗(缺失值与异常值处理)

其中总数据为9616行,列分别为title,link,price,comment

2。使用python链接并读取数据

查看数据概括

#-*- coding:utf-8 -*-
#author:M10
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import mysql.connector
conn = mysql.connector.connect(host='localhost',
            user='root',
            passwd='123456',
            db='python')#链接本地数据库
sql = 'select * from taob'#sql语句
data = pd.read_sql(sql,conn)#获取数据
print(data.describe())

说明数据的导入是正确的,简单的分析发现问题并不是这么简单,因为comment均值562可能偏大,最大评论数454037也可能出现错误,price价格为0也不太可能出现。

price    comment
count 9616.00000  9616.000000
mean   64.49324   562.239601
std   176.10901  6078.909643
min    0.00000    0.000000
25%   20.00000   16.000000
50%   36.00000   58.000000
75%   66.00000   205.000000
max  7940.00000 454037.000000

3。缺失值处理

将价格为0的值设置为中位数36

#-*- coding:utf-8 -*-
#author:M10
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import mysql.connector
conn = mysql.connector.connect(host='localhost',
            user='root',
            passwd='123456',
            db='python')#链接本地数据库
sql = 'select * from taob'#sql语句
data = pd.read_sql(sql,conn)#获取数据

data['price'][data['price']==0]=None
x = 0
for i in data.columns:
  for j in range(len(data)):
    if (data[i].isnull()) [j]:
      data[i][j]='36'
      x+=1
print(x)
#44

结果显示修改了44行的数据。

4。异常值处理

#-*- coding:utf-8 -*-
#author:M10
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import mysql.connector
conn = mysql.connector.connect(host='localhost',
            user='root',
            passwd='123456',
            db='python')#链接本地数据库
sql = 'select * from taob'#sql语句
data = pd.read_sql(sql,conn)#获取数据
#缺失值处理
data['price'][data['price']==0]=None
x = 0
for i in data.columns:
  for j in range(len(data)):
    if (data[i].isnull()) [j]:
      data[i][j]='36'
      x+=1
print(x)
#异常值处理
#绘制散点图,价格为横轴
data1 = data.T#转置
price = data1.values[2]
comment = data1.values[3]
plt.plot(price,comment,'o')
plt.show()
#print(price)

结果如下图,价格为0左右时comment很大可能为异常值,comments为0时,价格极大这个有可能的。

python实现数据清洗(缺失值与异常值处理)

接下来处理评论数异常值,假设异常值分割线设置为20w,

#-*- coding:utf-8 -*-
#author:M10
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import mysql.connector
conn = mysql.connector.connect(host='localhost',
            user='root',
            passwd='123456',
            db='python')#链接本地数据库
sql = 'select * from taob'#sql语句
data = pd.read_sql(sql,conn)#获取数据
#缺失值处理
data['price'][data['price']==0]=None
x = 0
for i in data.columns:
  for j in range(len(data)):
    if (data[i].isnull()) [j]:
      data[i][j]='36'
      x+=1
print(x)
#异常值处理
da = data.values#重新赋值data
#异常值处理,将commments大于200000的数据comments设置为58
cont_clou = len(da)#获取行数
#遍历数据进行处理
for i in range(0,cont_clou):
  if(data.values[i][3]>200000):
    #print(data.values[i][3])
    da[i][3]='58'
    #print(da[i][3])

#绘制散点图,价格为横轴
data1 = da.T#转置
price = data1[2]
comment = data1[3]
plt.plot(price,comment,'o')
plt.xlabel('price')
plt.ylabel('comments')
plt.show()

处理后的输出结果为:

python实现数据清洗(缺失值与异常值处理)

以上这篇python实现数据清洗(缺失值与异常值处理)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 结巴分词实现关键词抽取分析
Oct 21 Python
python中模块的__all__属性详解
Oct 26 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
python区块及区块链的开发详解
Jul 03 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
利用Python优雅的登录校园网
Oct 21 Python
python全栈开发语法总结
Nov 22 Python
Python实现拼音转换
Jun 07 Python
Python可视化学习之seaborn调色盘
Feb 24 Python
python字符串反转的四种方法详解
Dec 02 #Python
python实现两个一维列表合并成一个二维列表
Dec 02 #Python
利用python实现冒泡排序算法实例代码
Dec 01 #Python
Python函数的默认参数设计示例详解
Dec 01 #Python
python线程定时器Timer实现原理解析
Nov 30 #Python
python线程信号量semaphore使用解析
Nov 30 #Python
Python一行代码解决矩阵旋转的问题
Nov 30 #Python
You might like
如何选购合适的收音机
2021/03/01 无线电
PHP递归删除多维数组中的某个值
2017/04/17 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Keras loss函数剖析
2020/07/06 Python
python 装饰器重要在哪
2021/02/14 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
实习生的自我评价
2014/01/08 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
农业开发项目建议书
2014/05/16 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
付款委托书范本
2014/10/05 职场文书
2014年学前班工作总结
2014/12/08 职场文书
毕业生自荐信范文
2015/03/05 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2016年寒假见闻
2015/10/10 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android