连锁超市数据分析系统

前言

本文章主要阐述爬取大众点评下某超市在全国各地的数据,并且进行数据处理,最后使用flask实现可视化大屏展示
最终结果如下:
连锁超市数据分析系统_第1张图片

数据爬取

大众点评的数据文本使用SVG文字映射反爬虫措施 这边就不具体叙述,有想了解的网页们可以通过以下链接进行学习
大众点评爬虫(如侵立删)
最终爬取数据展示:
连锁超市数据分析系统_第2张图片

数据处理

因为有些大众点评下的超市的数据为Nan值 这边使用fillna进行填充 填充为0.
根据地区进行分组聚合,使用mean函数 求出平均数

import  pandas as pd
import csv

#有Nan值空行的数据 需要填充为0
def write_csv():
    with open('total.csv', 'w', encoding='gbk', newline='') as f:  # 创建了个文件 作为f
        title = list[0].keys()
        writer = csv.DictWriter(f, title)
        writer.writeheader()
        writer.writerows(list)
        print("写入成功")

data = pd.read_csv("data/最终详情页.csv", encoding = "utf-8")

new = data.loc[data["服务"].isin([0])].index
test = data.drop(new)
a = pd.Series(test.groupby("地区")["服务"].mean()).round(2)

new1 = data.loc[data["人均"].isin([0])].index
test1 = data.drop(new1)
b = pd.Series(test1.groupby("地区")["人均"].mean()).round(2)

c = pd.Series(data.groupby("地区").size())
# print(c)
k = pd.concat([c, b, a], axis = 1, join = "outer", ignore_index =True)
k.rename(columns={0:'数量',1:'人均', 2:"服务"},inplace=True)
k.fillna(0, inplace=True)

list = []
df = {}
df["数量"] = k["数量"].sum()
df["人均"] = k["人均"].mean().round(2)
df["服务"] = k["服务"].mean().round(2)
list.append(df)
write_csv()

k.to_csv("data.csv")
print("保存成功")

结果展示:
连锁超市数据分析系统_第3张图片

flask可视化展示

网页展示数据的处理

#  -*-coding:utf8 -*-
import pandas as pd

data = pd.read_csv("../data/data.csv", encoding="utf-8")
def get_cost1():#处理各地区之间对应的人均消费数据
    new = data.loc[data["人均"].isin([0])].index#找出人均为0的序列号
    test = data.drop(new)#删除
    list1 = list(test["地区"])#返回数据给flask
    list2 = list(test["人均"])#返回数据给flask
    return list1, list2

def service():#处理各地区之间对应的服务态度数据
    new = data.loc[data["服务"].isin([0])].index
    test = data.drop(new)
    list1 = list(test["地区"])
    list2 = list(test["服务"])
    return list1, list2

def top():#获取全国数量排名前5的城市名称
    data.sort_values(by=['数量'], ascending=False,inplace = True)#按照数量进行排名
    list1 = list(data["地区"].head(5))#取出排名为前5的城市
    list2 = list(data["数量"].head(5))#排名为前5对应的数量
    return list1, list2

def map():#将地区和数量一一对应写成字典的格式
    list = []
    for i, r in data.iterrows():
        list.append({"name":r["地区"], "value":r["数量"]})
    return list

def get_title():#因为total.csv就以经是最终数据了 只要读取那一列数据即可
    df = pd.read_csv("../data/total.csv", encoding = "gbk")
    list1 = df["数量"][0]
    list2 = df["人均"][0]
    list3 = df["服务"][0]
    return list1, list2, list3

flask调用展示

#全国超市连锁系统
from flask import Flask
from flask import render_template
import pandas as pd
import LL

app = Flask(__name__)#创建实列
@app.route("/")
def new_de1():
    a = LL.get_title()
    context = {
        'test1':a[0],
        'test2':a[1],
        'test3':a[2],
    }
    #返回模板
    return render_template('index.html', data=LL.get_cost1(), data2=LL.service(), data3=LL.top(),**context, data4 = LL.map())
    # return  render_template("index.html", data = data, data2 = data)#导入网页



if __name__ == '__main__':
    app.run()#运行

完整代码获取

链接:https://pan.baidu.com/s/1_03ltwD1kdFwhSvkOyvtLg
提取码:qfh1
感谢观看
连锁超市数据分析系统_第4张图片

你可能感兴趣的:(python,pandas,开发语言)