知识基础
- 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中