12.2 解析JSON数据

我们已经学习过如何读取JSON文件,接下来就把12.1节中保存的JSON数据读取并解析出来,代码如下:

import json
with open('test.json',encoding='utf-8')as f:
     data=json.load(f)
     for d in data:
         print(d)

这样我们就得到了爬取的所有数据,但在进行数据统计分析时,可能只需要用到一部分数据,所以还需要进一步筛选和清理数据。现在的数据总共有三个字段,分别是"name”“date”“kind”。

接下来我们可以统计每个类别的数据分别有多少条:

import json
#初始化一个字典
data=dict()
with open('test.json',encoding='utf-8')as f:
    items=json.load(f)
    for item in items:
        #得到每个数据的类别
         kind=item['kind']
        #统计每个类别的数据的数量,存入字典中
        if kind not in  data:
              data[kind]=0
           data[kind]+=1
    print(data)

执行后就可以看到每个类别的数据 条数输出如下:

{'行业解决方案':10,'教育解决方案':9,'成功案列':5}

如果需要以其他方式呈现数据,比如以ECharts图表的方式在网页展示数据,还需要把数据的格式修改成ECharts所需要的格式,比如如果饼图需要的是[{"value":1,"name":"名称"}]格式,就需要转换数据,如下。

import json 
data=dict()
whih open('test.json',encoding='utf-8')as f:
     items=json.load(f)
     for item in items:
         kind=item['kind']
         if kind not in data:
              data[kind]=0
            date[kind]+=1
     print(data)
output=[]
for i in dara.keys():
    o=dic()
    o['name']=i
    o['value']=data[i]
    output.append(0)
with open("data.json","w",encoding='utf-8')as f:
    json.dump(output,f,ensure_ascii=False,indent=4)

以上就是常见的数据分析,筛选的过程,然后将生成的data.json文件保存在目录中,接下来我们会用到它,把筛选后的数据用网页呈现出来。

12.3 运用网页呈现数据

我们在12.2节中已经准备了ECharts饼图格式的数据,接下来用网页加载data.json的内容,并显示出来。

<!DOCTYPE html>
      <meta  charset='utf-8'>
      <title>ECharts 饼图</title>
      <script src="./js/jquery.min.js"></script>
      <!--引入echarts.js-->
      <script src="./js/echarts.min.js"></script>
</head>
      <!--为ECharts准备一个具备大小(宽高)的DOM-->
      <div id="main" style="width:600px;height:400px;"></div>
      <script type="text/javascript">
          //基于准备好的DOM,初始化ECharts实例
          var myChart=echarts.init(document.getElementById('main'));
          $.get('data.json',function(data){
                 myChart.setOption({
                        series:[
                                name:'访问来源',
                                type:'pie',//设置图表类型为饼图
                                radius:'55%',//饼图的半径
                                data:data
          },'json')