Python处理Excel数据可视化

关键技术

  • FE
  • Ajax
  • Flask
  • Echarts
  • xlrd

FE 部分

此部分为基础前端知识内容,根据业务所需,自行进行页面布局。

Ajax 部分

此部分是能来进行数据请求与异步加载

Flask部分

此部分主要是为其搭建web服务,Flask相对django更轻量,也可替换为Django框架

Echarts部分

此部分主要是对接收到的数据来进行可视化展示

xlrd部分

此部分是使用Python语言处理excel的主要模块,用来读取业务数据

逻辑图

开发逻辑图

效果图

最终效果图

代码详解

首先参考Echarts官方文档,查看相关API调用方法

其中Echarts需要首先进行引进 可以使用本地引进,也可使用CDN


其次,使用xlrd模块对Excel文件进行数据读取,并转存为Json格式,记为data_show.py

import xlrd
import json

def ReadFile(user,userinfo):
    excel = xlrd.open_workbook("test.xlsx")  # Open the file of excel
    target_sheet = excel.sheet_by_index(0) # Get Sheets name By index /By Name of user's input string
    for i in range(2,target_sheet.nrows):
        if target_sheet.cell(i,11).value.split(' ')[0] not in user:
            user.append(target_sheet.cell(i,11).value.split(' ')[0])
    for k in user:
        userinfo[k] = 0
    for i in range(2,target_sheet.nrows):
        checkUsername(target_sheet.cell(i,11).value.split(' ')[0],target_sheet.cell(i,9).value,userinfo )
def checkUsername(name,num,userinfo):
    for k in userinfo:
        if name in k:
            userinfo[k] += int(num)
def Result(a=0):   
    userlist = [] #存储归属人(X坐标数据)
    userinfo = {} #存储数据(Y坐标数据)
    ReadFile(userlist,userinfo)   
    jsondata = json.dumps(userinfo,ensure_ascii=False)
    return jsondata

其中Result为主要入口函数

接着,搭建Flask框架,存储至hello.py

from flask import Flask,render_template,request,Response
import data_show #引入数据处理py文件
import json
app = Flask(__name__)

@app.route('/')
def index():
    return '''.....'''  #此处为FE代码
@app.route('/show',methods=['POST','GET'])  
def show_info():  
    if request.method == 'GET':
        num = request.args.get('a')
        Rejson = data_show.Result(num)
        return Response(Rejson,content_type="application/json")

if __name__ == '__main__':
    app.run(port=8888,debug=True)

通过Flask框架对数据进行读取,通过请求http://127.0.0.1:8888/show?a=来进行响应,此处的a为以后业务扩展使用,例如可以传入关键参数,季度,月份等查询

为了能够动态加载相关内容并且不影响整个页面的使用,友好性来进行处理,可以使用Ajax技术来进行动态异步请求

    let xhr; 
    if (window.XMLHttpRequest)
    {
       xhr = new XMLHttpRequest()
    }
    else
    {
       xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("GET","http://127.0.0.1:8888/show?a=1",true);
    xhr.send();
    xhr.onreadystatechange = function(){
        if(xhr.readyState==4 && xhr.status==200){
              //EchartsAPI相关代码
              let info = JSON.parse(xhr.responseText) //处理通过Flask响应的函数Json数据
              let user = []
              let user_info = []
              for (var name in info){
                  user.push(name);
                  user_info.push(info[name]);
              }   
              option.xAxis.data = user; 
              option.series[0].data = user_info;
         }
    }

后记

代码核心主要分为Echarts的API调用,Ajax的Json数据请求与处理,Flask框架,xlrd模块的Excel数据读取与处理。

代码可以优化有以下内容:

  1. 在Flask框架的使用可以使用temple,static等来使用模板文件和静态文件来进行处理。
  2. 在调用Echart数据时可以在未完成数据绘制前,加入loading方法,来提升友好性。
  3. 后期可结合数据库进行操作,并且对功能可以进行筛选扩展

参考资料

  1. CSDN:python通过flask和前端进行数据收发
  2. CSDN:echarts读取本地json文件
  3. CSDN:使用echart从后台获取数据动态显示到页面
  4. CSDN:python封装JSON前后端解析
  5. Penguin私人博客:Flask设置返回json格式数据

官方文件/文档/资料

  1. Echarts官方资料: https://echarts.apache.org/zh/tutorial.html
  2. Echarts CDN:https://cdn.bootcdn.net/ajax/libs/echarts/2.1.10/echarts-all.js
  3. Ajax教程:https://www.w3cschool.cn/ajax/
  4. Flask教程:https://www.w3cschool.cn/flask/

你可能感兴趣的:(Python处理Excel数据可视化)