价格分组图
利用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,就能看见图形了!
记得网址之后要添加 /价格对销量的影响 哦!