在前面两篇文章中,我们已经成功用Python爬取到了A股上市公司年报并转换为txt格式,接下来就是对数据的处理,我们以经管类常用的文本挖掘方式为例,编写从多个文本文件中提取关键词并统计词频,然后将结果存储到 Excel 文件中的程序。
在运行之前,我们需要先整理好现有的数据,并安装一些必要的 Python 库。具体需要安装以下库:
我们可以使用 pip 命令来安装这些库,命令如下:
pip install jieba xlwt
接下来,我们将编写 Python 代码来实现我们的程序。主要分为以下步骤:
首先,我们定义了一个名为 extract_keywords 的函数,用于从指定的文本文件中提取关键词,并统计这些关键词的出现次数。
def extract_keywords(filename, keywords):
"""
从指定文件中提取关键词,并统计关键词出现次数。
"""
keyword_counts = [0] * len(keywords)
try:
with open(filename, 'r', encoding='utf-8') as f:
content = f.read()
# 使用jieba库进行分词
words = jieba.cut(content)
words = [word for word in words if word.strip()]
# 统计关键词出现次数
for i, keyword in enumerate(keywords):
keyword_counts[i] = words.count(keyword)
except Exception as e:
print(f"从文件中获取关键词失败!--- {filename}")
print(str(e))
return keyword_counts
这段代码的主要过程为:
接下来的主要工作就是将关键词的词频存入到Excel表格中,为此我们首先需要创建一个结果表格。
def process_files(folder_path, keywords):
"""
处理指定文件夹中的所有txt文件,提取关键词并统计词频,将结果存储到Excel表格中。
"""
# 创建Excel工作簿
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
row = 0
# 添加Excel表头
worksheet.write(row, 0, '股票代码')
worksheet.write(row, 1, '公司简称')
worksheet.write(row, 2, '年份')
for i, keyword in enumerate(keywords):
worksheet.write(row, i + 3, keyword)
row += 1
这部分代码定义了一个名为 process_files 的函数,在创建完新的表格后,我们还需要处理指定文件夹中的所有 txt 文件,提取关键词并统计词频,将结果存储到 Excel 表格中。
#获取文件总数
total_files = len([filename for filename in os.listdir(folder_path) if filename.endswith('.txt')])
processed_files = 0
# 遍历文件夹中的所有txt文件
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
# 解析文件名,提取股票代码、公司简称和年份
match = re.match(r'^(\d{6})_(.*?)_(\d{4})\.txt$', filename)
if match:
stock_code = match.group(1)
company_name = match.group(2)
year = match.group(3)
# 提取关键词并统计词频
keyword_counts = extract_keywords(os.path.join(folder_path, filename), keywords)
# 将结果写入Excel表格
worksheet.write(row, 0, stock_code)
worksheet.write(row, 1, company_name)
worksheet.write(row, 2, year)
for i, count in enumerate(keyword_counts):
worksheet.write(row, i + 3, count)
row += 1
# 保存Excel文件
try:
workbook.save('文件名称.xls')
except Exception as e:
print("文件保存失败!.")
print(str(e))
代码部分的主要流程为:
注意!
由于文件数量庞大,在编写时一定要注意程序的稳定性,加入try,except处理异常事项,使得程序不至于出现异常后直接退出。
此外,我们还可以加入进度显示的功能,来增强程序的交互功能,可以将以下代码加入到函数中。
#显示当前进度
processed_files += 1
progress = processed_files / total_files * 100
print(f"已处理 {processed_files}/{total_files} 个文件({progress:.2f}%)")
到这里,代码的主体部分已经完成,接下来我们只需要给出参数并调用函数运行即可。
if __name__ == '__main__':
# 设置要提取的关键词列表
keywords = ['共享服务', '财务共享','数字化','培训','云计算','大数据','互联网']
# 处理文件夹中的所有txt文件,并将结果存储到Excel表格中
try:
process_files('2010-2021年TXT年报', keywords)
except Exception as e:
print("文件处理失败!!")
print(str(e))
例如要用来统计近年来A股上市公司年报中对数字化的关注度,就可以通过查阅相关参考文献,来确定关键词的设置,将其写入到keywords
变量中即可,process_files
中为txt文件夹路径。
成品展示:
如果你需要对相应的指标进行数学计算并引入相关指标,就是对Excel的相关操作了,网络上有充足的资源可供参考。
本项目中我们首先介绍了如何使用 Python 编写爬虫,将 A股上市公司年报数据爬取到本地,并引入多线程批量下载以及进行格式转换,接下来,我们使用 jieba 库进行中文文本分析,实现了从多个文本文件中提取关键词并统计词频等操作。最后,我们使用 xlwt 库创建 Excel 文件,并将数据写入其中,以便更好地进行数据分析和可视化。
如果需要完整版代码和相关资料,敬请关注同名公众号“凌小添”,后台回复“年报”即可获取下载链接哦~