数据清洗-python实践
生活随笔
收集整理的這篇文章主要介紹了
数据清洗-python实践
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding: utf-8 -*-import pymysql
import numpy as npy
import pandas as pda
import matplotlib.pylab as pyl
import matplotlib.pyplot as plt#導入數據
conn=pymysql.connect(host="127.0.0.1",user="root",passwd="123456",db="爬蟲111")
sql="select * from taob"
data=pda.read_sql(sql,conn)
# print(type(data))
# print(data)
# print(data._values)
# print(data.axes)
# print(data.columns)
# print(data.index)
# print(data['price'].head(4))
# print(type(data['price'].isnull()))
# print(data['price'].isnull().head(4))
for i in range(len(data)):# print(data['price'].isnull()[i])if i==5:break#數據清洗,發現和處理缺失值
x = 0
# print(data.columns)
# print(len(data))
data["price"][(data["price"]==0)]=None
for i in data.columns: # data.columns:['title', 'link', 'price', 'comment']for j in range(len(data)): # len(data) 行數9616if(data[i].isnull())[j]: # 如果為False即插值data[i][j] = "64" # 空值插入64x += 1
# print(x)#異常值處理、找到異常值、畫散點圖(橫軸:價格,縱軸:評論數)
data2=data.T
price=data2.values[2]
comt=data2.values[3]
plt.xlabel('price') #顯示X坐標標簽
plt.ylabel('comt') #顯示Y坐標標簽
pyl.plot(price,comt,"o")
pyl.show()
#可以看到有部分數據評論數過高,或許為熱銷商品或者存在刷評論,
# 還有一部分數據價格過高,甚至高達700,而一般書籍價格不會高過¥150。
# 對于這些異常值我們在作數據分析時一般不會考慮,刪除或者改動這些異常值即可。
#處理異常數據,評論大于65,價格大于100都處理掉
line=len(data.values)
col=len(data.values[0])
da=data.values
# print(da[26])
newda=da[26]
newda=npy.row_stack((newda,da[26]))
# print("newda:", newda)
#刪除處理法
x=0
for i in range(0,line):for j in range(0, col):if(da[i][3]>65):#評論數大于65continueelif(da[i][2]>100):#價格大于100continueelse:if(x==0):newda=da[i]else:newda=npy.row_stack((newda,da[i]))x+=1da2=newda.T
price=da2[2]
comt=da2[3]
plt.xlabel('price') #顯示X坐標標簽
plt.ylabel('comt') #顯示Y坐標標簽
pyl.plot(price,comt,"o")
pyl.show()#分布分析
#求最值
#計算極差
#組距:極差/組數
#繪制直方圖#求最值
pricemax=da2[2].max()
pricemin=da2[2].min()
commentmax=da2[3].max()
commentmin=da2[3].min()
#極差
pricerg=pricemax-pricemin
commentrg=commentmax-commentmin
#組距
pricedst=pricerg/13 # 13個數據顯示一個price
commentdst=commentrg/13# 繪制價格直方圖:為了表明數據分布情況。通俗地說就是哪一塊數據所占比例或者出現次數較高,哪一塊出現概率低
# npy.arrange(最小, 最大, 組距)
pricesty = npy.arange(pricemin,pricemax,pricedst)
# print('pricesty',pricesty)
# print(type(pricesty))
# print(pricesty[1])
plt.xlabel('price') #顯示X坐標標簽
plt.ylabel('number') #顯示Y坐標標簽
pyl.hist(da2[2], pricesty)
pyl.show()#繪制評論數直方圖
commentsty=npy.arange(commentmin, commentmax, commentdst) # arange(start,stop,step)
plt.xlabel('histcomt') #顯示X坐標標簽
plt.ylabel('histnumber') #顯示Y坐標標簽
pyl.title("histImage")
pyl.hist(da2[3],commentsty)
pyl.show()
?
總結
以上是生活随笔為你收集整理的数据清洗-python实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cvtColor不是cv的成员
- 下一篇: MySQL 8.0开始Group by不