python實(shí)現(xiàn)數(shù)據(jù)清洗(缺失值與異常值處理)
1。 將本地sql文件寫入mysql數(shù)據(jù)庫(kù)
本文寫入的是python數(shù)據(jù)庫(kù)的taob表
source [本地文件]
其中總數(shù)據(jù)為9616行,列分別為title,link,price,comment
2。使用python鏈接并讀取數(shù)據(jù)
查看數(shù)據(jù)概括
#-*- 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')#鏈接本地?cái)?shù)據(jù)庫(kù) sql = 'select * from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) print(data.describe())
說明數(shù)據(jù)的導(dǎo)入是正確的,簡(jiǎn)單的分析發(fā)現(xiàn)問題并不是這么簡(jiǎn)單,因?yàn)閏omment均值562可能偏大,最大評(píng)論數(shù)454037也可能出現(xiàn)錯(cuò)誤,price價(jià)格為0也不太可能出現(xiàn)。
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。缺失值處理
將價(jià)格為0的值設(shè)置為中位數(shù)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')#鏈接本地?cái)?shù)據(jù)庫(kù) sql = 'select * from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) 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
結(jié)果顯示修改了44行的數(shù)據(jù)。
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')#鏈接本地?cái)?shù)據(jù)庫(kù) sql = 'select * from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) #缺失值處理 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) #異常值處理 #繪制散點(diǎn)圖,價(jià)格為橫軸 data1 = data.T#轉(zhuǎn)置 price = data1.values[2] comment = data1.values[3] plt.plot(price,comment,'o') plt.show() #print(price)
結(jié)果如下圖,價(jià)格為0左右時(shí)comment很大可能為異常值,comments為0時(shí),價(jià)格極大這個(gè)有可能的。
接下來處理評(píng)論數(shù)異常值,假設(shè)異常值分割線設(shè)置為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')#鏈接本地?cái)?shù)據(jù)庫(kù) sql = 'select * from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) #缺失值處理 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的數(shù)據(jù)comments設(shè)置為58 cont_clou = len(da)#獲取行數(shù) #遍歷數(shù)據(jù)進(jìn)行處理 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]) #繪制散點(diǎn)圖,價(jià)格為橫軸 data1 = da.T#轉(zhuǎn)置 price = data1[2] comment = data1[3] plt.plot(price,comment,'o') plt.xlabel('price') plt.ylabel('comments') plt.show()
處理后的輸出結(jié)果為:
以上這篇python實(shí)現(xiàn)數(shù)據(jù)清洗(缺失值與異常值處理)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
keras 解決加載lstm+crf模型出錯(cuò)的問題
這篇文章主要介紹了keras 解決加載lstm+crf模型出錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Pytorch神經(jīng)網(wǎng)絡(luò)參數(shù)管理方法詳細(xì)講解
這篇文章主要介紹了Pytorch神經(jīng)網(wǎng)絡(luò)參數(shù)管理方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05Python讀取圖片為16進(jìn)制表示簡(jiǎn)單代碼
這篇文章主要介紹了Python讀取圖片為16進(jìn)制表示簡(jiǎn)單代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)虛擬機(jī)部署的算法思想
這篇文章主要介紹了Python動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)虛擬機(jī)部署的算法思想,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07Django全局啟用登陸驗(yàn)證login_required的方法
這篇文章主要介紹了Django全局啟用登陸驗(yàn)證login_required的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06python基于mysql實(shí)現(xiàn)的簡(jiǎn)單隊(duì)列以及跨進(jìn)程鎖實(shí)例詳解
這篇文章主要介紹了python基于mysql實(shí)現(xiàn)的簡(jiǎn)單隊(duì)列以及跨進(jìn)程鎖,需要的朋友可以參考下2014-07-07python使用super()出現(xiàn)錯(cuò)誤解決辦法
這篇文章主要介紹了python使用super()出現(xiàn)錯(cuò)誤解決辦法的相關(guān)資料,對(duì)于TypeError: must be type, not classobj的錯(cuò)誤進(jìn)行處理,需要的朋友可以參考下2017-08-08Python 繪制北上廣深的地鐵路線動(dòng)態(tài)圖
這篇文章主要介紹了用python制作北上廣深——地鐵線路動(dòng)態(tài)圖,文中的示例代碼講解詳細(xì),對(duì)我們的工作或?qū)W習(xí)都有一定的價(jià)值,感興趣的同學(xué)可以學(xué)習(xí)一下2021-12-12