3. 报告的内容添加

知识基础

  • Python类的基础了解

学习目标

  • 在已经构造完毕的文档中添加内容
from ExampleCode.models import Document
document = Document()

此处内容的添加基于报告自身的分析方式,把报告的产出添加入document实例中

# 执行目录进入Example_1文件夹
import os
import logging
os.chdir("./Example_1")
logging.info("当前目录 : {}".format(os.getcwd()))
# 执行报告制作的分析部分
%run "analysis.py"
document.author = author
document.title = '%s-%s%s品类报告'%(info.start_time, info.end_time,info.category_name)
document.foreword = """
这里是前言
""".format(Preface[info.category_name],
    info.start_time,
          info.end_time,
          info.category_name,
          author)
document.chapters[0].title = '一、总体情况'
document.chapters[0].foreword = """
{.start_time}至{.end_time}共有{.commodity_total_count}款
商品登榜亚马逊{.category_name}品类的相关榜单,
其中涉及品牌数{.brand_total_count:.0f}个。
截至{.end_time},登榜商品总评论数达{.review_total_count:.0f}条,
平均星级{.rating_mean:.2f}星。\n\n
榜单的登榜商品及品牌数量情况如下表所示:
""".format(info,info,info,info,info,info,info,info)
document.chapters[0].table = pd.DataFrame(data = {'榜单':list(lists.keys()),
                     '登榜商品数':[rank_list.commodity.count for rank_list in lists.values()],
                     '登榜品牌数':[rank_list.brand.count for rank_list in lists.values()]
                    })

分析报告的结构发现,报告内容的第二到第四章使用相同的文章结构和分析方法,可以直接重复使用

for i in range(3):
    chinese_number = ['一', '二', '三', '四']
    rank_name = list(lists.keys())[i]
    rank_list = lists[rank_name]
    
    chapter = document.chapters[i+1]
    chapter.title = "{}、{}榜单分析:".format(chinese_number[i+1], rank_name)
    
    chapter.chapters[0].title = '1.价格分布'
    chapter.chapters[0].set_image(rank_list.price.image.fig)
    chapter.chapters[0].content = """
    上周 {} 品类 {} 榜单商品最高价${:.2f},
    最低价${:.2f},平均价格${:.2f}。{}发现,在上榜的商品中,
    """.format(info.category_name, rank_name, rank_list.price.max, rank_list.price.min, 
              rank_list.price.mean, author)
    
    chapter.chapters[1].title = '2.评论量分布'
    chapter.chapters[1].set_image(rank_list.review.image.fig)
    chapter.chapters[1].content = """
    在上周登榜 {} 品类 {} 榜单的商品中,
    单个商品拥有的最大评论数为{:.2f}条,最小评论数为{:.2f}条,平均评论数{:.2f}条,评论平均星级{:.2f}星。
    """.format(info.category_name, rank_name, rank_list.review.max, rank_list.review.min, 
              rank_list.review.mean, rank_list.review.rating_mean)
    
    chapter.chapters[2].title = '3.商品排行'
    chapter.chapters[2].foreword = '''根据上周 {} 榜单上商品的登榜次数及平均排名,
    {}对登榜的商品进行了排序,其中排名靠前的五款商品如下所示:'''.format(rank_name, author)
    chapter.chapters[2].table = rank_list.commodity.table
    chapter.chapters[2].set_image(rank_list.commodity.image.fig)
    chapter.chapters[2].content = """
    可以看到,在上周{}品类的{}榜单中,
    """.format(info.category_name, rank_name)
    
    chapter.chapters[3].title = '4.品牌排行'
    chapter.chapters[3].table = rank_list.brand.table
    chapter.chapters[3].set_image(rank_list.brand.image.fig)
    chapter.chapters[3].foreword = """根据上周 {} 榜单上各个品牌下商品的登榜次数,{}对登榜的品牌进行了排序,
    其中排名靠前的五个品牌如下所示:""".format(rank_name, author)
    chapter.chapters[3].content = """
    可以看到,在上周{}品类的{}榜单中,
    """.format(info.category_name, rank_name)
    
document.chapters[4].title = '  '
document.chapters[4].content = """
这里是总结
"""
def print_structure(chapter, deep, show_contents = []):
    if show_contents:
        for content in show_contents:
            if chapter.__dict__[content]:
                content_value = chapter.__dict__[content]
                if isinstance(content_value, str):
                    print('--'*deep+content+" : " + chapter.__dict__[content])
                else:
                    print('--'*deep+content)
    if chapter.chapters:
        for subchapter in chapter.chapters:
            if subchapter.__dict__['title']:
                print('\n--'*deep+'-'+subchapter.number)
            print_structure(subchapter, deep+1, show_contents = show_contents)
    else:
        return
print_structure(document, 0, show_contents = ['title'])
title : 2018年5月21日-2018年5月27日亚马逊美站   Pet Supplies   品类爆款分析
-chapter0
--title : 一、总体情况
-chapter1
--title : 二、Best Seller榜单分析:

---chapter1_subchapter0
----title : 1.价格分布

---chapter1_subchapter1
----title : 2.评论量分布

---chapter1_subchapter2
----title : 3.商品排行

---chapter1_subchapter3
----title : 4.品牌排行
-chapter2
--title : 三、Hot New Releases榜单分析:

---chapter2_subchapter0
----title : 1.价格分布

---chapter2_subchapter1
----title : 2.评论量分布

---chapter2_subchapter2
----title : 3.商品排行

---chapter2_subchapter3
----title : 4.品牌排行
-chapter3
--title : 四、Movers & Shakers榜单分析:

---chapter3_subchapter0
----title : 1.价格分布

---chapter3_subchapter1
----title : 2.评论量分布

---chapter3_subchapter2
----title : 3.商品排行

---chapter3_subchapter3
----title : 4.品牌排行
-chapter4
--title :   

作业

把更新后的print_structure方法放入./Example_1/models.py中的Document中


你可能感兴趣的:(3. 报告的内容添加)