数据清洗入库

使用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、回头客预测分数对比

posted @   –L-m-  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示