热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python+jinja2+pandas输出HTML报告

1.读取excel文件。由列变成行。每个item是一个字典  importpandasaspdfromjinja2importEnvironment,FileSystemLoade

1. 读取excel文件。由列变成行。每个item是一个字典

 

 

import pandas as pd
from jinja2 import Environment, FileSystemLoader
df
= pd.read_excel('回测指标汇总.xlsx')
df[
'消耗本金'] = df['消耗本金'].astype(str) + ''
df[
'最大回撤率'] = df['最大回撤率'].astype(str) + '%'
df[
'总收益率'] = df['总收益率'].astype(str) + '%'
data
= df.to_dict('records')
results
= {}
results.update({
'strategy_name': '第一个策略',
'start_time': '2020-01-01',
'end_time': '2021-06-01',
'money': 20000,
'items': data})
env
= Environment(loader=FileSystemLoader('./'))
template
= env.get_template('template_table.html')
indicator
= 'images/' + '回测指标.png'
with open(
"out.html", 'w+', encoding='utf-8') as f:
out
= template.render(strategy_name=results['strategy_name'],
start_time
=results['start_time'],
end_time
=results['end_time'],
money
=results['money'],
items
= results['items'],
indicator
= indicator)
f.write(out)
f.close()

2. html模板

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>beautified tified reporttitle>
head>
<style type="text/css">
h1
{margin-left: 20px}
h2
{margin-left: 20px;
font-size
: 19px;
font-weight
: bold;
display
: inline-block;
padding-left
: 10px;
border-left
: 5px solid #916dd5;}
h3
{margin-left: 20px}
h4
{margin-left: 20px;
margin-bottom
: -5px}
table
{margin-left: 20px;
margin-top
: 5px;
margin-bottom
: 5px}
p
{margin-left: 20px}
a
{margin-top: 200px;}
style>
<h1>基金策略回测报告h1>
<body>
<h2>一、策略详情h2>
<p>策略描述:{{ strategy_name }}p>
<p>回测时间段:{{ start_time }} --> {{ end_time }} p>
<p>初始本金:{{ money }}p>
body>
html>
<h2>二、回测结果h2>
<table
border="1" width = "40%" cellspacing='0' cellpadding='0'>
<tr>
<th>基金名称th>
<th>总投入本金th>
<th>总收益率th>
<th>最大回测率th>
tr>
{% for item in items %}
<tr align='center'>
<td>{{ item.基金名称 }}td>
<td>{{ item.消耗本金 }}td>
<td>{{ item.总收益率 }}td>
<td>{{ item.最大回撤率 }}td>
tr>
{% endfor%}
table>
<a name="{{ 回测指标 }}"> <img src="{{ indicator }}" width="850">a>

 

用一个例子来演示会更加清晰



推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
author-avatar
被爱的小花花_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有