研究需求:
度量年报中管理层讨论与分析部分的信息含量的代码,环境为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文件。其中,结果数据框包含股票代码、年份、总词数、总句数、本企业特殊信息占比和行业特殊信息占比六列。可以根据需要修改导出文件的文件名和路径。