2025年Python数据挖掘06--淘宝网数据处理

Python数据挖掘06--淘宝网数据处理淘宝数据 第一列标题 第二列链接 第三列价格 第四列评论 所用到数据 sql 文件点击下载 一 数据预处理 数据预处理指的是对数据进行初步处理 把脏数据处理掉 否则很容易影响最终结果 常见的的预处理包括 1 缺失值处理 2 异常值处理 3 数据集成

大家好,我是讯享网,很高兴认识大家。

淘宝数据:第一列标题,第二列链接,第三列价格,第四列评论
淘宝数据
讯享网


所用到数据sql文件点击下载

一、数据预处理

  数据预处理指的是对数据进行初步处理,把脏数据处理掉,否则很容易影响最终结果。
常见的的预处理包括:
1、缺失值处理
2、异常值处理
3、数据集成

在数据量大的情况下采用删除处理法,是比较优质的一种处理方法。

二、实战分析

步骤:
1、爬取淘宝数据存入数据库(再次不进行演示,后面会在爬虫中更新淘宝商品的爬取)
2、读取数据库中的数据
3、补全缺失数据,例如NaN或者价格为0的一些商品
4、对一些极大值进行异常处理
5、进行数据处理,直方图进行展示
6、对直方图进行分析,分析出较优的方案


下面为源码:

2、读取数据库中的数据
import pymysql import numpy as npy import matplotlib.pylab as pyl import pandas as pda pyl.rcParams['font.sans-serif'] = ['SimHei'] conn = pymysql.connect(host="localhost", user="root", passwd="", db="datatreat") #数据库连接 sql = "select * from taob" data = pda.read_sql(sql, conn) # 连接数据库并获取数据 print(data.describe()) # print(data.columns) # 所有标题 Index(['title', 'link', 'price', 'comment'], dtype='object') # print(len(data)) # 数据总长度 2356

讯享网

data.describe()获得的结果可获得中间值,以及判断价格最小值是否含0

描述 price comment
count 2356.000000 2356.000000
mean 66. 1647.
std 147. 12119.
min 0.000000 0.000000
25% 22.000000 23.000000
50% 40.000000 162.000000
75% 75.000000 757.
max 5990.000000 .000000
3、补全缺失数据,例如NaN或者价格为0的一些商品
讯享网x = 0 data["price"][(data["price"] == 0)] = None # 如果价格为0,则设置价格为None,后面可以更方便的对数据进行处理 for i in data.columns: # 数据每一列的标题 for j in range(len(data)): # 数据每一行 if data[i].isnull()[j]: # 如果价格为None,那么设置价格为66 data[i][j] = 66 x += 1 # print(x) # 总共有多少个遗失的数据
这样的警告无视即可 D:/PycharmProjects/datam/datatreating.py:17: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy data["price"][(data["price"] == 0)] = None
4、对一些极大值进行异常处理

首先需要找到异常值,那么可以画散点图来寻找,然后再进行处理

讯享网data1 = data.T price = data1.values[2] comt = data1.values[3] pyl.xlabel("价格") pyl.ylabel("评论") pyl.plot(price, comt, "o") pyl.show()

这里写图片描述
可以很明显的看出,评论大于,价格大于1000可以都处理了

(1)改值处理法 两种方法二选一

da = data.values line = len(data.values) # 行数 col = len(data.values[0]) # 列数 for i in range(0, line): for j in range(0, col): # 注意这里是已经进行了第二次数据处理,所以得出对价格大于210,评论大于5338的数据进行处理 if(j == 2 and da[i][2]>210): # 修改价格 da[i][j] = 66 elif(j == 3 and da[i][3]>5338): # 修改评论 da[i][j] = 1647 data2 = da.T price = data2[2] comt = data2[3] pyl.xlabel("价格") pyl.ylabel("评论") pyl.plot(price, comt, "o") # 绘制散点图 pyl.show()

(2) 删除处理法

讯享网x = 0 for i in range(0, line): for j in range(0, col): if (da[i][2] > 210): # 删除价格 continue elif (da[i][3] > 5338): # 删除评论 continue else: if(x==0): # 第一个数直接赋值到newda中,后续的通过row_stack插入 newda = da[i] else: newda = npy.row_stack((newda, da[i])) # numpy.row_stack(mat, a) a是要加入mat中的序列 x += 1 data2 = newda.T price = data2[2] comt = data2[3] pyl.xlabel("价格") pyl.ylabel("评论") pyl.plot(price, comt, "o") # 绘制散点图 pyl.show()

处理后数据散点图分布,可以很明显看出点分布均匀很多
这里写图片描述

5、分布分析
# 求最值 # 计算极差 # 组距:极差/组数 # 绘制直方图 pricemax = data2[2].max() pricemin = data2[2].min() commentmax = data2[3].max() commentmin = data2[3].min() # 极差 pricerg = pricemax - pricemin commentrg = commentmax - commentmin # 组距 pricedst=pricerg/13 commentdst=commentrg/13 # 绘制价格直方图 # npy.arange(最大,最小,组距) # 价格直方图 peicesty = npy.arange(pricemin, pricemax, pricedst) pyl.hist(data2[2], peicesty) pyl.show() # 评论直方图 commentsty = npy.arange(commentmin, commentmax, commentdst) pyl.hist(data2[3], commentsty) pyl.show()

价格直方图:
这里写图片描述
评论直方图:
这里写图片描述

6、分析与结论:

如有问题可以在下留言

小讯
上一篇 2025-02-14 13:50
下一篇 2025-01-25 17:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/12236.html