• 信件分析实战(四)——数据分析以及部分可视化


      今天看着文件按照其上面给的三个需求,做了相应的数据处理。需求如下。

        需求1:分析每年的信件数量

        需求2:分析信件是属于投诉还是属于咨询,及投诉和咨询的数量

        需求3:分析对信件进行回答的政府部门

      按照这三个需求我做了其相应的数据处理。我使用的mysql建立的试图来进行处理的,这种方法很简单用于处理不是恨多的数据,如果涉及数据很多那就需要导入到hive数据仓库来进行处理,我现在只是使用MySQL来进行了简单的处理,处理结果如下。

    需求一:

    需求二:

     

     需求三:

    做完了这三个数据清洗我还使用echarts和javaweb做了需求一的相关可视化界面。其中使用了一些的框架。

     相关的源代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>北京百姓信件分析</title>
        <link rel="stylesheet" href="./layui/css/layui.css">
        <script src="./layui/layui.js"></script>
    </head>
    <body>
    <body class="layui-layout-body">
    <div class="layui-layout layui-layout-admin">
      <div class="layui-header">
        <div class="layui-logo">北京百姓信件分析</div>
      </div>
      
      <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
          <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
          <ul class="layui-nav layui-nav-tree"  lay-filter="test">
            <li class="layui-nav-item">
              <a class="" href="LetterServlet?method=year" target="center">每年数量</a>
              
            </li>
            <li class="layui-nav-item">
              <a href="javascript:;">信件类型</a>
            </li>
            <li class="layui-nav-item"><a href="">部门信件</a></li>
          </ul>
        </div>
      </div>
      
      <div class="layui-body">
        <!-- 内容主体区域 -->
        <div style="padding: 15px;">
        <iframe name="center" id="center" style="100%;height:490px;border:0;padding:0;"></iframe>
        </div>
      </div>
      
      <div class="layui-footer">
        <!-- 底部固定区域 -->
        ©陈欢
      </div>
    </div>
    
    <script>
    //JavaScript代码区域
    layui.use('element', function(){
      var element = layui.element;
      
    });
    </script>
    </body>
    </body>
    </html>
    index.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <% String path=request.getContextPath(); %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>按年分析</title>
        <script type="text/javascript" src="<%=path %>/js/echarts.min.js"></script>
    </head>
    <body>
    <%
        String year=(String)request.getAttribute("year");
        String num=(String)request.getAttribute("num");
    %> 
    <div id="container" style="height: 490px;weight:100%;"></div>
    <script type="text/javascript">
    var dom = document.getElementById("container");
    var myChart = echarts.init(dom);
    var app = {};
    option = null;
    var year=<%=year%>
    var num=<%=num%>
    option = {
        xAxis: {
            type: 'category',
            //data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            data: year
        },
        yAxis: {
            type: 'value'
        },
        series: [{
            //data: [820, 932, 901, 934, 1290, 1330, 1320],
            data : num,
            type: 'line'
        }]
    };
    ;
    if (option && typeof option === "object") {
        myChart.setOption(option, true);
    }
           </script>
    </body>
    </html>
    ByYear.jsp
    package com.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.dao.LetterDAO;
    
    /**
     * Servlet implementation class LetterServlet
     */
    @WebServlet("/LetterServlet")
    public class LetterServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        LetterDAO dao=new LetterDAO();
        /**
         * @see HttpServlet#HttpServlet()
         */
        public LetterServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
         */
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            String method=request.getParameter("method");
            if(method.equals("year")) {
                NumByYear(request,response);
            }
        }
    
        private void NumByYear(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
            String [] data =new String [2];
            data=dao.getYear();
            request.setAttribute("year", data[0]);
            request.setAttribute("num", data[1]);
            System.out.print(data[0]);
            System.out.print(data[1]);
            request.getRequestDispatcher("ByYear.jsp").forward(request, response);
            
        }
    
    }
    LetterServlet.java
    package com.dao;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.DBUtil.DBUtil;
    import com.bean.LetterBean;
    
    public class LetterDAO {
    
        public String[] getYear() {
            String[] num =new String [2];
            List<LetterBean> data =new ArrayList<LetterBean>();
            data=GetNumByYear();
            num[0]="[";
            num[1]="[";
            for(int i=0;i<data.size();i++) {
                num[0]+="'"+data.get(i).getCols()+"'";
                num[1]+="'"+data.get(i).getValue()+"'";
                if(i<data.size()-1) {
                    num[0]+=",";
                    num[1]+=",";
                }else {
                    num[0]+="]";
                    num[1]+="]";
                }
            }
            
            return num;
        }
    
        private List<LetterBean> GetNumByYear() {
            String sql="select * from num_by_year";
            List<LetterBean> data =new ArrayList<LetterBean>();
            Connection conn = DBUtil.getConn();
            Statement state = null;
            ResultSet rs = null;
            LetterBean bean=null;
            try {
                state = conn.createStatement();
                rs = state.executeQuery(sql);
                while (rs.next()) {
                        String cols=rs.getString("dt");
                        String value=rs.getString("num");
                        bean=new LetterBean(cols,value);
                        data.add(bean);
                    }
                }catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    DBUtil.close(rs, state, conn);
                }
            return data;
        }
    
    }
    LetterDAO.java
    package com.bean;
    
    public class LetterBean {
        private String cols;
        private String value;
        public LetterBean(String cols,String value) {
            this.cols=cols;
            this.value=value;
        }
        public String getCols() {
            return cols;
        }
        public void setCols(String cols) {
            this.cols = cols;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
    }
    LetterBean

    明天将完善相关的界面,之后将对系统进行进一步的完善。


    新人编程,有错误请大家指正。

  • 相关阅读:
    C#练习记录(统计字符串中的字符数和计算最大值)
    C#练习记录(交换两个数)
    Cyberdebut's daily record_3
    SWJTU_LightMoon Training #16~20 补题
    zzh训练日志3
    SWJTU_LightMoon Training #11~15 补题
    Megumin's daily record3
    2017网络赛
    zzh的训练日志2
    Cyberdebut's daily record_2
  • 原文地址:https://www.cnblogs.com/huan-ch/p/12261096.html
Copyright © 2020-2023  润新知