今天小编就为你们分享一篇python实现数据清洗(缺失值与异常值处理),具备很好的参考价值,但愿对你们有所帮助。一块儿跟随小编过来看看吧
1。 将本地sql文件写入mysql数据库python
本文写入的是python数据库的taob表
source [本地文件]
其中总数据为9616行,列分别为title,link,price,commentmysql
2。使用python连接并读取数据程序员
查看数据归纳web
#-*- 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也不太可能出现。sql
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的值设置为中位数36django
#-*- 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。异常值处理svg
#-*- 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时,价格极大这个有可能的。
接下来处理评论数异常值,假设异常值分割线设置为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脚本、爬虫、django
、数据挖掘等编程技术,工做经验,还有前辈精心为学习python的小伙伴整理零基础到项目实战的资料
,!天天都有程序员定时讲解Python技术,分享一些学习的方法和须要留意的小细节