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二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
用python实现k近邻算法的示例代码
Sep 06 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
深入解析神经网络从原理到实现
Jul 26 Python
python各层级目录下import方法代码实例
Jan 20 Python
jupyter lab文件导出/下载方式
Apr 22 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
python安装第三方库如xlrd的方法
Oct 31 Python
python 获取域名到期时间的方法步骤
Feb 10 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
基于PHP异步执行的常用方式详解
2013/06/03 PHP
php输出xml属性的方法
2015/03/19 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python的Django框架下管理站点的基本方法
2015/07/17 Python
python连接mysql实例分享
2016/10/09 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
Python turtle库的画笔控制说明
2020/06/28 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
鼋头渚导游词
2015/02/05 职场文书
毕业生个人总结
2015/02/28 职场文书
初中语文教学反思范文
2016/03/03 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
详解nginx location指令
2022/01/18 Servers
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis