数据清洗入库
使用python连接数据库mysql,然后在一张数据表的基础上读取到数据。
如果数据大,连接mysql时读取数据的速度很慢的时候。使用sql语句获取想要的信息后,再创建一张新表保存到数据库,为数据可视化的数据做准备:
思路:
连接数据库--> SQL:创建新表 (数据太少,查询很快就没有必要) --> SQL:查询需要的数据 -->SQL:数据插入新表保存--> 关闭连接
连接数据库准备:
from pymysql import *
#连接本地数据库
conn = Connection(
host='localhost',
port=3306,
user='用户',
password="密码",
database = '数据库名'
)
1、所有买家各消费行为对比
cur = conn.cursor()
sql_0="""
create table pie_dis_data(
act int
)
"""
cur.execute(sql_0)
# 只去重购买行为的数据,避免刷单行为。
sql="""
select act
from
(select count(user_id) act from user_log where action='0'
union all
select count(user_id) act from user_log where action='1'
union all
select count(distinct user_id) act from user_log where action='2'
union all
select count(user_id) act from user_log where action='3')
as temp;
"""
cur.execute(sql)
datas=cur.fetchall()
for data in datas:
sql2 = "insert into pie_dis_data(act)\
values('%s')" % \
(data[0])
cur.execute(sql2)
conn.commit()
conn.close()
2、男女买家交易对比
3、男女买家各个年龄段交易对比
cur = conn.cursor()
#创建新表
sql_0="""
create table ee_data(
cat_id int,
merchat_id int,
brand_id int,
month int,
day int,
action int,
age_range int,
gender_age int,
province varchar(50)
);
"""
cur.execute(sql_0)
#筛选数据
sql="""
select * from user_log ul where `month` =11 and `day` =11;
"""
cur.execute(sql)
#读取数据
datas=cur.fetchall()
#遍历数据
for data in datas:
#数据插入新表
sql2 = "insert into ee_data(user_id,item_id,cat_id,merchat_id,brand_id,\
month,day,action,age_range,gender_age,province)\
values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % \
(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9],data[10])
cur.execute(sql2)
conn.commit()
#关闭连接,取消端口占用
conn.close()
4、商品类别交易额对比
cur = conn.cursor()
#创建新表
sql_0="""
create table cat_data(
cat_id int,
count_num int
)
"""
cur.execute(sql_0)
# 只去重购买行为的数据,避免刷单行为。
sql="""
select ed.cat_id ,count( ed.`action`) count_num
from ee_data ed
where ed.`action` =2
group by ed.cat_id
order by ed.cat_id ;
"""
#执行SQL语句
cur.execute(sql)
#读取数据
datas=cur.fetchall()
for data in datas:
#传入数据
sql2 = "insert into cat_data(cat_id,count_num)\
values('%s','%s')" % \
(data[0],data[1])
cur.execute(sql2)
conn.commit()
#关闭数据库连接
conn.close()
5、各省份的销量对比 思路与前一个相同
6、回头客预测分数对比
浙公网安备 33010602011771号