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自然语言编码转换模块codecs介绍
Apr 08 Python
在Python中操作列表之List.append()方法的使用
May 20 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python变量和数据类型详解
Feb 15 Python
python中解析json格式文件的方法示例
May 03 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
pandas map(),apply(),applymap()区别解析
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
第十二节 类的自动加载 [12]
2006/10/09 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
python解析json实例方法
2013/11/19 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
浅谈Python中的字符串
2020/06/10 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
学习党课思想汇报
2013/12/29 职场文书
迟到检讨书400字
2014/01/13 职场文书
商场端午节活动方案
2014/01/29 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
护林防火标语
2014/06/27 职场文书
2016新年致辞
2015/08/01 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python