目的

数据导入数据库
数据颜色清洗
机身颜色分析
套餐类型分析

实现


一 商品评价信息导入mysql
#!/usr/bin/env python
# -*- coding: utf-8 -*-import re
import pymysql# 连接database
conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="test",charset="utf8mb4")# 获取一个可以执行SQL语句的光标对象
cursor = conn.cursor()# 将结果作为字典返回的游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 创建评价表(id,网络类型,机身颜色,套餐类型,存储容量,版本类型,评价内容,评价时间)
sql = """CREATE TABLE if not exists phone_assess(id INT auto_increment PRIMARY KEY ,Network_type varchar(30) ,body_color varchar(30) NOT NULL ,package_type TEXT NOT NULL,storage_capacity varchar(30) NOT NULL,version_type varchar(30) NOT NULL,evaluation_content Text NOT Null,evaluation_time Date)ENGINE=innodb DEFAULT CHARSET=utf8mb4;"""cursor.execute(sql)  # 执行SQL语句def execute_sql():f = open('../file/CSV/手机_评价.csv', 'r', encoding='UTF-8', )# 跳过第一行next(f)line = f.readlines()  # 读取一行文件,包括换行符for i in line:k = i.split(',')print((k[0],k[1],k[2],k[3],k[4],k[5]),k[6])try:cursor.execute("insert into phone_assess""(Network_type,body_color,package_type,storage_capacity,version_type,evaluation_content, evaluation_time)"" values(%s,%s,%s,%s,%s,%s,%s)",(k[0],k[1],k[2],k[3],k[4],k[5],k[6]))conn.commit()except Exception as e:print(e)# finally:#     passprint('正常数据导入操作,请等候(预计10s)')
execute_sql()cursor.close()  # 关闭光标对象conn.close()  # 关闭数据库连接
print('导入操作完成')

商品信息导入Mysql
#!/usr/bin/env python
# -*- coding: utf-8 -*-import pymysql# 连接database
conn = pymysql.connect(
host="127.0.0.1",
user ="root",
password ="123456",
database ="test",
charset ="utf8mb4")# 获取一个可以执行SQL语句的光标对象
cursor = conn.cursor()# 将结果作为字典返回的游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)sql = """CREATE TABLE if not exists phone(id INT auto_increment PRIMARY KEY ,shop_name text ,shop_link varchar(100) NOT NULL ,title TEXT NOT NULL,price int NOT NULL,sale int NOT NULL default 0,province char(3) NOT Null)ENGINE=innodb DEFAULT CHARSET=utf8mb4;"""cursor.execute(sql)  # 执行SQL语句import re
def execute_sql():f = open('../file/CSV/智能手机-all-bak.csv', 'r', encoding='UTF-8', )#跳过第一行next(f)line = f.readlines()  # 读取一行文件,包括换行符for i in line:k = i.split(',')#print(k[0], k[1], k[2],k[3],k[4],k[5])if k[4]=='':#销量为空时默认为0k[4]=0try:cursor.execute("insert into phone(shop_name,shop_link,title,price,sale,province) values(%s,%s,%s,%s,%s,%s)",(k[0], k[1], k[2], k[3], k[4], k[5]))conn.commit()except Exception as e:print(e)# finally:#     pass
print('正常进行数据导入操作,请等候(预计10s)')
execute_sql()cursor.close()  # 关闭光标对象
conn.close()  # 关闭数据库连接
print('导入操作完成')

三 机身颜色清洗规则
#alter table 表名 add column 列名 varchar(20) not null after user1;#增加列表
#delete from phone_assess where size like '%/%';#删除语句
#update phone_assess  set body_color = '黑色系'  where body_color like '%黑%' ;#更新语句
#常见颜色清洗
update phone_assess  set body_color = '红色系'  where body_color like '%赤%' ;
update phone_assess  set body_color = '红色系'  where body_color like '%红%' ;
update phone_assess  set body_color = '橙色系'  where body_color like '%橙%' ;
update phone_assess  set body_color = '黄色系'  where body_color like '%黄%' ;
update phone_assess  set body_color = '绿色系'  where body_color like '%绿%' ;
update phone_assess  set body_color = '青色系'  where body_color like '%青%' ;
update phone_assess  set body_color = '蓝色系'  where body_color like '%蓝%' ;
update phone_assess  set body_color = '紫色系'  where body_color like '%紫%' ;
update phone_assess  set body_color = '黑色系'  where body_color like '%黑%' ;
update phone_assess  set body_color = '白色系'  where body_color like '%白%' ;
update phone_assess  set body_color = '灰色系'  where body_color like '%灰%' ;
update phone_assess  set body_color = '黄色系'  where body_color like '%金%';
update phone_assess  set body_color = '白色系'  where body_color like '%银%' ;
update phone_assess  set body_color = '红色系'  where body_color like '%粉%' ;
update phone_assess  set body_color = '黄色系'  where body_color like '%棕%' ;
update phone_assess  set body_color = '黄色系'  where body_color like '%橘%';
update phone_assess  set body_color = '白色系'  where body_color like '%透%';
update phone_assess  set body_color = '黑色系'  where body_color like '%曜%';
update phone_assess  set body_color = '黑色系'  where body_color like '%夜%';
update phone_assess  set body_color = '绿色系'  where body_color like '%森%';
update phone_assess  set body_color = '绿色系'  where body_color like '%碧%';
update phone_assess  set body_color = '绿色系'  where body_color like '%翠%';
update phone_assess  set body_color = '绿色系'  where body_color like '%林%';
update phone_assess  set body_color = '青色系'  where body_color like '%幻%';
#杂色系处理
update phone_assess  set body_color = '其他系'  where body_color like '%亚%';
update phone_assess  set body_color = '其他系'  where body_color like '%深%';
update phone_assess  set body_color = '其他系'  where body_color like '%液%';
update phone_assess  set body_color = '其他系'  where body_color like '%牛%';
update phone_assess  set body_color = '其他系'  where body_color like '%珊%';
update phone_assess  set body_color = '其他系'  where body_color like '%天%';
update phone_assess  set body_color = '其他系'  where body_color like '%空%';
update phone_assess  set body_color = '其他系'  where body_color like '%樱%';
update phone_assess  set body_color = '其他系'  where body_color like '%云%';
update phone_assess  set body_color = '其他系'  where body_color like '%极%';
update phone_assess  set body_color = '其他系'  where body_color like '%之%';
update phone_assess  set body_color = '其他系'  where body_color like '%斯%';
update phone_assess  set body_color = '其他系'  where body_color like '%礼%';
四 颜色清洗
import pymysql# 连接database
conn = pymysql.connect(
host="127.0.0.1",
user ="root",
password ="123456",
database ="test",
charset ="utf8mb4")# 获取一个可以执行SQL语句的光标对象
cursor = conn.cursor()# 将结果作为字典返回的游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)def data_wash():f = open('../file/TXT/数据清洗.txt', 'r', encoding='UTF-8')line = f.readlines()  # 读取一行文件,包括换行符for i in line:try:cursor.execute(i)conn.commit()except Exception as e:print(e)print('开始数据清洗(5s)')
data_wash()
print('数据清洗完成')

五 颜色销量关系
#!/usr/bin/env python
# -*- coding: utf-8 -*-import pandas as pd
from sqlalchemy import create_engine
#------------------------------------------------------------------------------
# 第一步:连接数据库
# - 初始化数据库连接,使用pymysql模块
# - MySQL的用户:root, 密码:123456, 端口:3306,数据库:test
# - 查询语句,选出phone_assess表中的所有数据
# - read_sql_query的两个参数: sql语句, 数据库连接
# - 按照颜色分组统计数据
# - 数据转字典,获取每个色系及统计数量
#------------------------------------------------------------------------------engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/test')sql = ''' select id,body_color from phone_assess; '''colors = pd.read_sql(sql, engine)group_Count = colors.groupby('body_color').count()color_sum=group_Count.to_dict()['id']#------------------------------------------------------------------------------
# 第二步:绘制柱状图
#------------------------------------------------------------------------------import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    #用来正常显示负号index=list(color_sum.keys())#获取字典的键值对的前键
data=list(color_sum.values())#获取字典的键值对的后键(值)# 绘图
plt.figure(figsize=(10,4))
plt.bar(index,data)
plt.xticks(rotation=-0) # X轴标签旋转,避免重叠
plt.grid(linestyle='-.')
plt.ylabel('销售量')
plt.title('机身色系销量关系图')for a, b in zip(list(index), list(data)):# 显示数字plt.text(a,b,b, ha='center', va='bottom', size=10)    #x轴,y轴,显示数值,水平居中,垂直底部,字体大小plt.grid(linestyle='-.')#显示栅格线
plt.savefig('../file/PNG/21机身颜色销量关系图.png')#保存图片
plt.show()#显示图片

六 套餐类型
#!/usr/bin/env python
# -*- coding: utf-8 -*-import pandas as pd
from sqlalchemy import create_engine
#------------------------------------------------------------------------------
# 第一步:连接数据库
# - 初始化数据库连接,使用pymysql模块
# - MySQL的用户:root, 密码:123456, 端口:3306,数据库:test
# - 查询语句,选出phone_assess表中的所有数据
# - read_sql_query的两个参数: sql语句, 数据库连接
# - 按照颜色分组统计数据
# - 数据转字典,获取每个色系及统计数量
#------------------------------------------------------------------------------engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/test')sql = ''' select id,package_type from phone_assess; '''colors = pd.read_sql(sql, engine)group_Count = colors.groupby('package_type').count()color_sum=group_Count.to_dict()['id']#------------------------------------------------------------------------------
# 第二步:绘制柱状图
#------------------------------------------------------------------------------import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    #用来正常显示负号index=list(color_sum.keys())#获取字典的键值对的前键
data=list(color_sum.values())#获取字典的键值对的后键(值)# 绘图
plt.figure(figsize=(10,4))
plt.bar(index,data)
plt.xticks(rotation=-0) # X轴标签旋转,避免重叠
plt.grid(linestyle='-.')
plt.ylabel('销售量')
plt.title('套餐类型销量关系图')for a, b in zip(list(index), list(data)):# 显示数字plt.text(a,b,b, ha='center', va='bottom', size=10)    #x轴,y轴,显示数值,水平居中,垂直底部,字体大小plt.grid(linestyle='-.')#显示栅格线
plt.savefig('../file/PNG/22套餐类型销量关系图.png')#保存图片
plt.show()#显示图片

python爬虫天猫商品数据及分析(4)相关推荐

  1. python爬虫天猫商品数据及分析(5)

    目的 对获取的天猫商品-智能手机评价 进行数据分析 实现 一 评价词云 #!/usr/bin/env python # -*- coding: utf-8 -*-import time import ...

  2. python爬虫天猫商品数据及分析(3)

    目的 获取商品关键词-智能手机的有关评价信息 评价信息(网络类型,机身颜色,套餐类型,存储容量,版本类型,评价内容,评价时间) 为后面的数据分析提供数据源 源码 #!/usr/bin/env pyth ...

  3. python爬虫天猫商品数据及分析(2)

    目的 对之前所获取的数据源进行数据分析操作 数据分析 一:商家地区分布图 通过读取本地数据源,获取其中省份的相关信息,绘制商家地区分布图,以html格式保存在本地, 浏览器打开可随鼠标移动动态显示地区 ...

  4. 爬虫项目八:Python对天猫商品数据、评论数据爬取

    文章目录 前言 一.商品数据 1.分析url 2.登录账号 3.解析数据 4.模拟滑动滑块 二.评论数据 1.分析url 2.解析数据 前言 天猫商城商品数据.评论数据爬取 提示:以下是本篇文章正文内 ...

  5. Python爬虫大作业+数据可视化分析(抓取python职位)

    目录 一.抓取并解析数据 1.导入相关库 2.获取网页信息 3.数据清洗 4.爬取结果: ??二.保存数据 1.保存到excel中 2.保存到数据库中 ? ?3.调用 三.使用flask,实现可视化 ...

  6. 通过爬取天猫商品评论实例分析Python爬取ajax动态生成的数据

    本文主要通过爬取天猫商品kindle的评论为例来说明利用python爬取ajax动态生成的数据的方式,本文使用的工具如下: 工具 chrome浏览器[寻找评论的动态链接] python3.5[执行代码 ...

  7. Python爬虫实战:天猫商品数据爬虫使用教程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 下载chrome浏览器 查看chrome浏览器的版本号,下载对应版本号的chro ...

  8. Python爬虫学习教程:天猫商品数据爬虫

    天猫商品数据爬虫使用教程 下载chrome浏览器 查看chrome浏览器的版本号,下载对应版本号的chromedriver驱动 pip安装下列包 pip install selenium pip in ...

  9. 用python爬取天猫商品评论并分析(2)

    用python爬取天猫商品评论并分析(2) 之前介绍过天猫数据的爬取和数据初步处理,今天介绍下 将采集的评论进行文本分析!下面是总流程: 0. 主要流程 0. 数据采集 这一步参考网址:https:/ ...

最新文章

  1. SAP HUM 如何将2个HU合并并成一个?
  2. centos6.5下iptables基础知识详解与配置
  3. php json转数组_相同逻辑的php与golang代码效率对比,最好语言落谁家…
  4. Java剖析工具JProfiler入门使用教程:离线剖析和触发器
  5. 数据的结构和运算(求和,最大和最小)
  6. Restrict Users to Use Old Passwords
  7. JZOJ 5379. 【NOIP2017提高A组模拟9.21】Victor爱数字
  8. 同学你好,听说你想学习做硬件?
  9. substring用法
  10. PowerShell 远程执行任务
  11. 【华为云技术分享】STM32L476移植华为LiteOS系列教程---Kconfig 6
  12. zoj 3761(并查集+搜索)
  13. Spring : 静态代理模式和JDK、CGLIB动态代理
  14. 为什么程序员纷纷反对微软收购GitHub?
  15. linux asm函数,Linux 字符设备驱动—— ioremap() 函数解析
  16. 计算机网络——CDN加速技术原理
  17. Java小开发(车辆信息管理系统)
  18. 浏览器禁用了cookie怎么办
  19. Studio One2023中文版支持视频配乐加歌词音轨功能
  20. C语言:解一元二次方程

热门文章

  1. 给B2C网站企业的一点建议
  2. 2021-11-01 每日打卡:腾讯精选50题
  3. @Value的诸多用法
  4. 联合体union内有数组的情况
  5. 15个漂亮的国外Flash网站模板下载
  6. Oracle的VPD介绍
  7. 给中年程序员的温暖人心的巴比奇的故事
  8. Ubuntu 18.04 其他镜像的刻录
  9. 完美解决:Chrome浏览器无法自动保存/填充密码
  10. java中h5是什么_[ 面试系列 ] - 三:H5 是什么?