A项目之六:关于地区的分析

商家分布详情

先利用python 处理数据,将处理后的数据写进数据库

import pandas as pd
import pymysql
from sqlalchemy import create_engine
data=pd.read_excel('./处理后的口红.xlsx')  # 爬取下来后数据清洗,然后储存在EXCEL的数据
areas=data[['商家地址','付款人数']].groupby('商家地址').count().reset_index()

# 建立连接,username替换为用户名,passwd替换为密码,test替换为数据库名
conn = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test',encoding='utf8')
# 写入数据,table_name为表名,‘replace’表示如果同名表存在就替换掉
pd.io.sql.to_sql(areas, "areas_amount", conn, if_exists='replace')

# 进行测试
con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
sql = "select 商家地址,付款人数 as amount from areas_amount "
result = con.execute(sql)
result=result.fetchall()

areas = []
amount = []
for item in result:
    areas.append(item[0])
    amount.append(item[1])

搭建Flask 框架,让图形呈现在网页上

@app.route("/商家分布详情图")
def areas_amount():
    areas=[]
    number1 = []
    con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
    sql = "select 商家地址,付款人数 as 数量 from areas_amount "
    result = con.execute(sql)
    result = result.fetchall()
    for item in result:
        areas.append(item[0])
        number1.append(item[1])
        
    # 进一步进行数据清洗
    nareas=[]
    for item in areas:
        if item =='黑龙':
            item=item+'江'
            nareas.append(item)
        else:
            nareas.append(item)
    nnareas1 = []
    for item in nareas:
        if item == '新西':
            item = item + '兰'
            nnareas1.append(item)
        else:
            nnareas1.append(item)
    return render_template("商家分布详情.html", nnareas1=nnareas1, number1=number1)

书写名字为商家分布详情的html文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="../static/echarts.min.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 80%;height:600px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
    color: ['#3398DB'],
    tooltip: {
        trigger: 'axis',
        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
            type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        }
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    xAxis: [
        {
            type: 'category',
            data: [ {% for i in range(30) %}
                '{{ nnareas[i] }}',
            {% endfor %}],
            axisTick: {
                alignWithLabel: true
            },
         axisLabel: {//坐标轴刻度标签的相关设置。
                interval: 0,
                rotate: "45"
            }

        }

    ],
    yAxis: [
        {
            type: 'value'
        }
    ],
    series: [
        {
            name: '付款人数',
            type: 'bar',
            barWidth: '60%',
            data: {{ number }}
        }
    ]
};



        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

然后,只要运行Flask,就能看见图形了!
记得网址之后要添加 /商家分布详情图 哦!

地区与平均销量

同样先用python先进行数据处理,将处理后的数据写进数据库

import pandas as pd
import pymysql
from sqlalchemy import create_engine
data=pd.read_excel('./处理后的口红.xlsx')
areas=data[['商家地址','付款人数']].groupby('商家地址').mean().reset_index()
print(areas)

# 建立连接,username替换为用户名,passwd替换为密码,test替换为数据库名
conn = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test',encoding='utf8')
# 写入数据,table_name为表名,‘replace’表示如果同名表存在就替换掉
pd.io.sql.to_sql(areas, "areas", conn, if_exists='replace')

# 进行测试
con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
sql = "select 商家地址,付款人数 from areas "
result = con.execute(sql)
result=result.fetchall()
print(result)
areas = []
number = []
for item in result:
    areas.append(item[0])
    number.append(item[1])

搭建Flask框架,让图形在网页上显示

@app.route("/地区与平均销量图")
def areas():
    areas= []
    number = []
    con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
    sql = "select 商家地址,付款人数 from areas "
    result = con.execute(sql)
    result = result.fetchall()
    for item in result:
        areas.append(item[0])
        number.append(item[1])
    nareas=[]
    for item in areas:
        if item =='黑龙':
            item=item+'江'
            nareas.append(item)
        else:
            nareas.append(item)
    nnareas = []
    for item in nareas:
        if item == '新西':
            item = item + '兰'
            nnareas.append(item)
        else:
            nnareas.append(item)
    return render_template("areas_number.html", nnareas=nnareas, number=number)

书写名字为areas_number的html文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="../static/echarts.min.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 80%;height:600px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
    color: ['#3398DB'],
    tooltip: {
        trigger: 'axis',
        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
            type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        }
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    xAxis: [
        {
            type: 'category',
            data: [ {% for i in range(30) %}
                '{{ nnareas[i] }}',
            {% endfor %}],
            axisTick: {
                alignWithLabel: true
            },
         axisLabel: {//坐标轴刻度标签的相关设置。
                interval: 0,
                rotate: "45"
            }

        }

    ],
    yAxis: [
        {
            type: 'value'
        }
    ],
    series: [
        {
            name: '付款人数',
            type: 'bar',
            barWidth: '60%',
            data: {{ number }}
        }
    ]
};



        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

然后,只要运行Flask,就能看见图形了!
记得网址之后要添加 /地区与平均销量图 哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值