研报的绘制结果3
1. 准备数据和转换函数
首先,从 ra
对象获取财务数据,并进行金额单位转换:
df = ra.get_income_stmt()
: 获取收入表数据。df = df[df.columns[:3]]
: 只保留前三列数据。convert_if_money
: 转换函数,用于将金额转换为百万单位(若大于等于百万)。df = df.applymap(convert_if_money)
: 应用转换函数到 DataFrame 的每个单元格。df.columns = [col.strftime('%Y') for col in df.columns]
: 将列名(日期)格式化为年份。df.reset_index(inplace=True)
: 重置索引,确保索引列可以被重命名。currency = ra.info['currency']
: 获取货币单位。df.rename(columns={'index': f'FY ({currency} mn)'}, inplace=True)
: 将索引列重命名为年份和货币单位(以百万计)。
2. 插入第一个数据表格
table_data
: 构建表格数据,包括标题行和 DataFrame 的列名和值。Table(table_data)
: 创建表格对象。table.setStyle(table_style2)
: 应用表格样式。content.append(table)
: 将表格添加到内容列表中。
3. 使用 FrameBreak()
转到右栏
FrameBreak()
: 在文档中插入一个帧断点,用于在两个栏位之间切换。
4. 插入第二个数据表格
- 获取现金流量表数据并应用相同的转换逻辑,创建另一个表格并添加到内容列表中
df = ra.get_cash_flow()
: 获取现金流量数据。df = df[df.columns[:3]]
: 只保留前三列数据。df = df.applymap(convert_if_money)
: 应用convert_if_money
函数将金额单位转换为百万。df.columns = [col.strftime('%Y') for col in df.columns]
: 将列名(日期)格式化为年份。df.reset_index(inplace=True)
: 重置索引,确保索引列可以被重命名。currency = ra.info['currency']
: 获取货币单位。df.rename(columns={'index': f'FY ({currency} mn)'}, inplace=True)
: 将索引列重命名为“FY (货币单位 mn)”格式。
5. 准备表格数据:
table_data
: 创建包含标题行和 DataFrame 的列名和值的表格数据列表。
-
创建并设置表格样式:
Table(table_data)
: 创建表格对象。table.setStyle(table_style2)
: 应用预定义的表格样式table_style2
。content.append(table)
: 将表格添加到 PDF 内容列表中。
-
构建 PDF 文档:
doc.build(content)
: 根据内容列表构建生成 PDF 文档。