python数据分析与挖掘学习笔记-淘宝商品数据清洗及预处理

Posted 小胖子小胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据分析与挖掘学习笔记-淘宝商品数据清洗及预处理相关的知识,希望对你有一定的参考价值。

这一节开始就正式开始啦~~

这一部分主要是针对淘宝的部分商品数据(小零食)进行预处理。


1. 读取商品源数据

这里拿到的数据是sql数据,因此需要使用mysql。首先我们安装好mysql,可以直接通过指令安装:

> sudo apt-get install mysql-server

> apt-get install mysql-client

> sudo apt-get install libmysqlclient-dev

安装过程中别忘记自己设置的密码,最后连接数据库需要该密码。 安装完成后可以通过下面的指令检查是否安装成功:

> sudo netstat -tap | grep mysql

安装好之后,我们现在就需要建立数据库将我们的数据文件导入。

> mysql -u root -p

登录自己的root账户,-p表示需要输入用户密码,按照提示输入密码,登录到mysql。

登录好之后,

mysql> show databases;

创建自己的数据库:

mysql> create database XX;

这里的XX代表你的数据库名,我这里使用的是创建的数据库叫CSDN。

mysql> use CSDN;

这里的use表示切换数据库;现在切换到CSDN数据库上来。

mysql> show tables;

显示所有的表;

这里未创建之前应该是为空,这里我们将taobao.sql文件导入该数据库中,

mysql> source /home/hadoop/taobao.sql

使用source+path的指令将本地的数据导入到数据库中,这时再使用show tables应该就可以看到数据表了。


好,数据导入到数据库之后,现在我们需要用python来处理该数据,就需要用到python与mysql之间的交互。由于Mysqldb模块还不支持python3,因此使用python3想要连接mysql,需要安装pymysql模块。上一节提到过,可以直接使用pip安装,也可以直接在pycharm中安装第三方模块。

File] >> [settings] >> [Project: python] >> [Project Interpreter] >> [Install按钮]

安装好之后,我们可以使用来读取数据:

# coding:utf-8
import numpy as np
import pymysql
import pandas as pda
import matplotlib.pylab as pyl

conn = pymysql.connect(host="127.0.0.1", user="root", passwd="xxxxxx", db="csdn", charset='utf8')
sql = "select * from taobao"
data = pda.read_sql(sql, conn)

这样就可以得到我们的原始数据了。


2. 数据清洗之发现缺失值并对缺失值进行处理

取到数据之后就开始准备处理数据。第一步,是先观察数据,或者是了解数据的属性等特征。

比如我们可以看到数据中含有下面的属性值:


一共有9616条数据,一共有四列数据,也就是四个属性值,分别为:title,link,price, comment。对应于该商品的名称,链接,价格和评论数。

下面对这些数据中的NA值进行清洗:

x = 0
data["price"][(data["price"]==0)] = None
for i in data.columns:
    for j in range(len(data)):
        if(data[i].isnull())[j]:
            data[i][j] = 64
            x += 1
print(x)

将价格为空的数据的价格标为64.


3. 发现大量数据中的异常值并清洗

首先,为了更加直观地观察到异常值,我们可以通过作图来发现。

data2 = data.T
price = data2.values[2]
comment = data2.values[3]
pyl.plot(price, comment, "o")
pyl.show()


由于范围比较大,我们作出的价格与评论数的散点图分布并不很直观。因此,我们考虑缩小范围,将评论数大于5000的和价格大于400的都视为异常值,那我们就假设这样处理好了,异常数据的选取都是可以自己调整范围,逐步根据自己做出来的图形进行判断:

line = len(data.values)
col = len(data.values[0])
dt = data.values

for i in range(0, line):
    for j in range(0, col):
        if dt[i][3] > 5000:  # comment
            dt[i][3] = 562
        if dt[i][2] > 400:  # price
            dt[i][2] = 64

dt2 = dt.T
price = dt2[2]
comment = dt2[3]
pyl.plot(price, comment, "o")
pyl.show()

然后再次作图,得到如下效果:


得到这样的图看起来数据就集中多了。卖家可以通过自己的卖的平时的价格区间截取更加细致的区间,评论数可以一定程度上代表销量,可以从中分析出最好的价格制定点,可以帮助卖家制定合理的价格,获得尽可能大的收益。


4. 数据的离散化处理及分布的分析

要观察数据的分布,我们最好是通过作出数据的直方图来观察。

因此我们计算数据的最大值和最小值,计算组距(极差/组数),绘制直方图。

计算最值:

price_max = dt2[2].max()
price_min = dt2[2].min()
comment_max = dt2[3].max()
comment_min = dt2[3].min()

计算极差:

price_rg = price_max - price_min
comment_rg = comment_max - comment_min

计算组距:

price_dist = price_rg/13
comment_dist = comment_rg/13

绘制直方图:

price_sty = np.arange(price_min, price_max, price_dist)
pyl.hist(dt2[2], price_sty)
pyl.show()

comment_sty = np.arange(comment_min, comment_max, comment_dist)
pyl.hist(dt2[3], comment_sty)
pyl.show()

绘制出来的效果为:


价格的直方图


评论直方图


这里是将数据范围缩减到更小之后求得的数据。评论数是大于65设置为35,价格大于100的设置为64。

然后进一步分析数据的分布规律。

两个直方图中的峰值柱与我们处理数据时的设置值有非常大的关系,因此我们可以弱化这一列的特征,对整个数据进行分析。







以上是关于python数据分析与挖掘学习笔记-淘宝商品数据清洗及预处理的主要内容,如果未能解决你的问题,请参考以下文章

python数据分析与挖掘学习笔记-电商网站数据分析及商品自动推荐实战与关联规则算法

我用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”

利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

数据挖掘笔记淘宝推荐系统

Python数据挖掘与机器学习技术入门实战

python数据分析与挖掘学习笔记_小说文本数据挖掘part1