A项目之四:价格与销量的关系分析

价格分组图

利用python先对数据进行处理,再讲处理后的数据集写进数据库

import pandas as pd
import numpy as np
import pymysql
from sqlalchemy import create_engine


data=pd.read_excel("./处理后的口红.xlsx")


# 价格分组并转换为字符型
datasales=list(pd.qcut(data['售价'],12).values)
newsales=[]
for i in datasales:
    i=str(i)
    newsales.append(i)
data['价格组别']=pd.DataFrame(newsales)

# 付款人数转换为浮点型
data['付款人数'].astype('float')
data_salesgroup=data[['付款人数','价格组别']].groupby(by='价格组别').mean().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(data_salesgroup, "jgfz", conn, if_exists='replace')
# 进行测试
group=[]
number=[]
con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
sql = "select 价格组别,付款人数 from jgfz "
result = con.execute(sql)
result = result.fetchall()
for item in result:
    group.append(item[0])
    number.append(item[1])

搭建Flask框架,让图形能够在网页上呈现出来

from flask import Flask,render_template
app = Flask(__name__)

@app.route('/价格与销量之间的关系')
def his():
    group = []
    number = []
    con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
    sql = "select 价格组别,付款人数 from jgfz "
    result = con.execute(sql)
    result = result.fetchall()
    for item in result:
        group.append(item[0])
        number.append(item[1])
    return render_template("价格分组.html", group=group, number=number)

if __name__ == '__main__':
    app.run()

然后,创建一个名字为价格分组的html文件,将图形格式书写在html网页中(记得要引入echarts.min.js,本文的echarts.min.js放在…/static/echarts.min.js路径。):

<!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(12) %}
                '{{ group[i] }}', <!--X轴的刻度,记得加上冒号,数据格式为['','',,,]-->
            {% endfor %}],
            axisTick: {
                alignWithLabel: true
            },
            axisLabel: {//坐标轴刻度标签的相关设置。
                interval: 0,
                rotate: "45"
            }
        }

    ],
    yAxis: [
        {
            type: 'value'
        }
    ],
    series: [
        {
            name: '付款人数',
            type: 'bar',
            barWidth: '60%',
            data: {{ number }}   <!--y轴的数据,数据格式为[ , , ,,,]-->
        }
    ]
};



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

然后,只要运行Flask,就能看见图形了!
记得网址之后要添加 /价格分组 哦!

价格对销量的影响图

先搭建Flask 框架,让图形能够在网页呈现出来

@app.route('/价格对销量的影响')
def xiantu():
    sales=[]
    number=[]
    con = create_engine('mysql+pymysql://root:1356130369@localhost:3306/test', encoding='utf8')
    sql = "select 售价,付款人数 from lips "
    result = con.execute(sql)
    result = result.fetchall()
    for item in result:
        sales.append(item[0])
        number.append(item[1])
    return render_template('价格对销量的影响.html',sales=sales,number=number)

然后,创建一个名字为价格对销量的影响的html文件,将图形格式书写在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: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
    xAxis: {},
    yAxis: {},
    series: [{
        symbolSize: 5,
        data: [
             {% for i in range(1000) %}
            [{{ sales[i] }},{{ number[i] }}],   <!--数据格式为[[,],[,],,,]-->
        {% endfor %}
        ],
        type: 'scatter'
    }]
};

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

然后,只要运行Flask,就能看见图形了!
记得网址之后要添加 /价格对销量的影响 哦!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值