度量年报中MD&A部分的信息含量的Python代码

研究需求: 

度量年报中管理层讨论与分析部分的信息含量的代码,环境为python3,可更改年报的选取时间。

代码实现:

首先,需要安装 tika 和 pandas 库,tika 用于解析 PDF 文件,pandas 用于数据处理。可以使用以下命令进行安装:

!pip install tika
!pip install pandas

然后,需要下载年报的 PDF 文件,并将其放置在指定路径下。

接下来,可以使用以下代码对管理层讨论与分析部分进行解析和处理:

import os
import pandas as pd
from tika import parser
import re

# 读取年报 PDF 文件
path = 'path/to/annual/report.pdf'
raw = parser.from_file(path)
text = raw['content']

# 获取管理层讨论与分析部分
start = text.find('MANAGEMENT’S DISCUSSION AND ANALYSIS')
end = text.find('CONSOLIDATED FINANCIAL STATEMENTS')
mda_text = text[start:end]

# 提取所有段落
mda_paragraphs = re.findall('\n\n(.+?)\n\n', mda_text, re.DOTALL)

# 删除空格和换行符
mda_paragraphs = [p.replace('\n', ' ').strip() for p in mda_paragraphs]

# 将段落转换为数据框
mda_df = pd.DataFrame(mda_paragraphs, columns=['paragraph'])

# 计算信息含量(使用段落数量作为度量标准)
info_content = len(mda_df) / len(text)
print('Information content:', info_content)

在上面的代码中,首先使用 tika 库解析 PDF 文件,然后使用正则表达式提取管理层讨论与分析部分,接着将每个段落转换为数据框,并计算段落数量占整个 PDF 文件的比例,作为信息含量的度量标准。最后输出信息含量的值。

你可以根据自己的需要修改代码,比如更改 PDF 文件的路径、选取不同的段落作为信息含量的度量标准等。

数据打印后,很多小白不知道如何批量输出到Excel中。

那么接下来,我们再添加一个批量导出结果数据到excel中的代码。

要求excel表格中包含公司股票代码、年份、管理层讨论与分析的总词数、管理层讨论与分析的总句数、上述管理层讨论与分析的两个维度的信息含量(结果)

import pandas as pd
import os

# 建立结果数据框
result_df = pd.DataFrame(columns=['股票代码', '年份', '总词数', '总句数', '本企业特殊信息占比', '行业特殊信息占比'])

# 设定需要处理的年份
year_list = [2020, 2019, 2018]

# 循环读取并处理年报
for year in year_list:
    # 设定年报文件名
    file_name = 'annual_report_{}_{}.txt'.format(stock_code, year)
    file_path = os.path.join(data_dir, file_name)

    # 读取年报文本
    with open(file_path, 'r', encoding='utf-8') as f:
        report_text = f.read()

    # 计算总词数和总句数
    total_words = len(report_text.split())
    total_sentences = len(report_text.split('。'))

    # 计算两个维度的信息含量
    company_special, industry_special = calc_information_content(report_text)

    # 添加结果到数据框
    result_df.loc[len(result_df)] = [stock_code, year, total_words, total_sentences, company_special, industry_special]

# 导出数据到Excel中
result_path = os.path.join(output_dir, 'result.xlsx')
result_df.to_excel(result_path, index=False)

此代码将根据设定的年份列表循环读取年报,计算并保存相关信息到数据框中,最后将数据框导出为Excel文件。其中,结果数据框包含股票代码、年份、总词数、总句数、本企业特殊信息占比和行业特殊信息占比六列。可以根据需要修改导出文件的文件名和路径。

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值