python實(shí)現(xiàn)數(shù)據(jù)清洗(缺失值與異常值處理)
1。 將本地sql文件寫入mysql數(shù)據(jù)庫
本文寫入的是python數(shù)據(jù)庫的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ù)庫
sql = 'select * from taob'#sql語句
data = pd.read_sql(sql,conn)#獲取數(shù)據(jù)
print(data.describe())
說明數(shù)據(jù)的導(dǎo)入是正確的,簡單的分析發(fā)現(xià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ù)庫
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ù)庫
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ù)庫
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ù)清洗(缺失值與異常值處理)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)猜數(shù)字游戲(無重復(fù)數(shù)字)示例分享
這篇文章主要介紹了python實(shí)現(xiàn)猜數(shù)字游戲(無重復(fù)數(shù)字)示例,需要的朋友可以參考下2014-03-03
Pytorch實(shí)現(xiàn)張量的創(chuàng)建與使用方法
本文主要介紹了Pytorch實(shí)現(xiàn)張量創(chuàng)建使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
Python?pandas的八個(gè)生命周期總結(jié)
這篇文章主要從八個(gè)pandas的數(shù)據(jù)處理生命周期,整理匯總出pandas框架在整個(gè)數(shù)據(jù)處理過程中都是如何處理數(shù)據(jù)的,感興趣的小伙伴可以了解一下2022-10-10
詳解python函數(shù)傳參傳遞dict/list/set等類型的問題
這篇文章主要介紹了詳解python函數(shù)傳參傳遞dict/list/set等類型的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
python實(shí)現(xiàn)TCP文件接收發(fā)送
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)TCP文件接收發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
舉例講解Linux系統(tǒng)下Python調(diào)用系統(tǒng)Shell的方法
這篇文章主要介紹了舉例講解Linux系統(tǒng)下Python調(diào)用系統(tǒng)Shell的方法,包括用Python和shell讀取文件某一行的實(shí)例,需要的朋友可以參考下2015-11-11

