2021-06-17

demo

import numpy as np
from sklearn.cluster import KMeans

读取文件,处理数据

def kmeansDemo():
file=open(“city.txt”,encoding=“utf-8”)
cityName=[]
cityData=[]
for line in file: # line 即为每行数据
items=line.split(",")
cityName.append(items[0])
cityData.append([float (items[i]) for i in range(1,len(items)) ])

实例化kmeans对象,调用方法对数据分组 ,标注序号

km=KMeans(n_clusters=5)
label=km.fit_predict(cityData)
# print(label)

expense=np.sum(km.cluster_centers_,axis=1)

dataCluster=[[],[],[],[],[]]


for i in range(len(cityName)):  # i 0-30
    #dataCluster用于保存各个小组的城市
    print("各消费水平:",expense[i])
    print("各城市名称:",cityName[i])
    dataCluster[label[i]].append(cityName[i])

return expense,dataCluster

输出统计结果

if name == ‘main’:
level,clusterName=kmeansDemo()
for i in range(len(clusterName)):
print(“消费水平:%.2f元:”%level[i])
print(clusterName[i])

app

from flask import Flask,render_template
from demo1 import keansdemo
app=Flask(name)

@app.route("/")
def index():
level,clusterName=keansdemo()
x=list(map(lambda a:"%.2f元"%a,level))
y=[ len(items) for items in clusterName ]
return render_template(“index.html”,x=x,y=y)

if name==“main”:
app.run(debug=True,port=8888)

index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="static/js/echarts.min.js"></script>
</head>
<body>
    <div id="box" style="width: 700px;height: 550px;margin: 0 auto"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('box'),"dark");

        // 指定图表的配置项和数据
        var option = {
            title: {
                text:"31省消费水平统计",
                left:30
            },
            legend:{
                right:50,
                top:5
            },
            tooltip:{
                show:true,
                trigger:"axis"
            },
            xAxis: {
                type: 'category',
                data: {{ x | safe }}
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                name:"各省数量",
                data: {{ y | safe }},
                barWidth:"60%",
                itemStyle:{
                    color:"orange",
                    barBorderRedius:[8,8,0,0]
                },
                type: 'bar',
                showBackground: true,
                backgroundStyle: {
                    color: 'rgba(180, 180, 180, 0.2)'
                },
            }]
        };

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值