一. 数据挖掘的过程主要有:
1.定义目标
2.获取数据(常用手段:爬虫获取、下载统计网站发布的数据)
3.数据探索:目的是及早发现数据的一些简单规律或特征。数据探索核心是:
(1)数据质量分析(跟数据清洗密切联系)
(2)数据特征分析(分布、对比、周期性、相关性、常见统计量等)
4.数据预处理(数据清洗【去除脏数据】、数据集成【集中】、数据变换【规范化】、数据规约【精简】)
数据清洗的目的是留下可靠数据,与数据探索没有严格先后顺序,经常在一个阶段进行。 数据清洗可以按如下步骤进行:
(1)缺失值处理(通过describe【所有有值的】与len【包含没有值的】直接发现、通过0数据发现【有些数据不能为0】)
(2)异常值处理(通过散点图发现)
一般遇到缺失值,处理方式为:删除、插补、不处理;
插补的方式主要有:均值插补、中位数插补、众数插补、固定值插补、最近数据插补、回归插补、拉格朗日插值、牛顿插值、分段插值等;
遇到异常值,一般处理方式为视为缺失值、删除、修补(平均数、中位数等)、不处理;
4.1 异常分析、分布分析
import matplotlib.pylab as pyl
import numpy as npy #数据
import pandas as pda
import pymysql
conn=pymysql.connect(host="127.0.0.1",user="root",passwd="root",db="csdn")
data=pda.read_sql(sql,conn)
print(data.describe()) #括号不能省
print(len(data)) #发现缺失值 先把价格为0的数据置为空,再把空值处置为中值
#数据清洗
#发现缺失值
data["price"][data["price"]==0]=None
for i in data.columns:
for j in range(len(data)):
if(data[i].isnull())[j]: #若为0 插补法
data[i][j]="36"
x+=1
print(x) #处理的数据为0的数据个数
#异常值处理 循环中设置一个阈值,大于阈值则认为是异常值
#画散点图(横轴为价格,纵轴为评论数)
data2=data.T
price=data2.values[2] #得到价格 从0开始数的
comt=data2.values[3] #得到评论数
pyl.plot(price,comt,"o")
pyl.show()
#评论数异常>20万,价格异常>2300
line=len(data.values) #行
col=len(data.values[0]) #列
da=data.values
for i in range(0,line):
for j in range(0,col):
if(da[i][2]>2300):
print(da[i][j]) #输出异常情况
da[i][j]=36 #处理价格异常
if(da[i][3]>200000):
print(da[i][j]) #输出异常情况
da[i][j]=58
da2=da.T #挑出异常值后重新绘图
price=da2[2]
comt=da2[3]
pyl.plot(price,comt,"o")
pyl.show()
#分布分析
#极差:最大值-最小值
#组距:极差/组数 (组数可取12)
pricemax = da2[2].max()
pricemin = da2[2].min()
commentmax=da2[3].max()
commentmin=da2[3].min()
pricerg=pricemax-pricemin
commentrg=commentmax-commentmin
pricedst=price/12
commentdst=commentrg/12
#画价格的直方图
pricesty=npy.arange(pricemin,pricemax ,pricedst)
pyl.hist(da2[2],pricesty)
pyl.show()
#画评论的直方图
commentsty=npy.arange(commentmin,commentmax,comm