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 01 Python
简单的python后台管理程序
Apr 13 Python
Python 正则表达式实现计算器功能
Apr 29 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
Python地图绘制实操详解
Mar 04 Python
python二进制文件的转译详解
Jul 03 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
Python绘画好看的星空图
Mar 17 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
jQuery each和js forEach用法比较
2019/02/27 jQuery
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python模块future用法原理详解
2020/01/20 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
python对XML文件的操作实现代码
2020/03/27 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
甜点店创业计划书
2014/01/27 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
英语系毕业生求职信
2014/07/13 职场文书
单位活动策划方案
2014/08/17 职场文书
公务员个人年终总结
2015/02/12 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书