商家分布详情
先利用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,就能看见图形了!
记得网址之后要添加 /地区与平均销量图 哦!