【Python爬虫实战】3.A股上市公司年报关键词词频分析

【Python爬虫实战】3.A股上市公司年报关键词词频分析

在前面两篇文章中,我们已经成功用Python爬取到了A股上市公司年报并转换为txt格式,接下来就是对数据的处理,我们以经管类常用的文本挖掘方式为例,编写从多个文本文件中提取关键词并统计词频,然后将结果存储到 Excel 文件中的程序。

1. 准备工作

在运行之前,我们需要先整理好现有的数据,并安装一些必要的 Python 库。具体需要安装以下库:

jieba:中文文本分析库,用于分词。xlwt:用于创建 Excel 文件。

我们可以使用 pip 命令来安装这些库,命令如下:

pip install jieba xlwt

2. 具体代码

接下来,我们将编写 Python 代码来实现我们的程序。主要分为以下步骤:

提取关键词。批处理 txt 文件。输入参数

2.1关键词提取

首先,我们定义了一个名为 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

这段代码的主要过程为:

使用 Python 的 with 语句打开文本文件,读取其中的内容。使用 jieba 库对文本进行分词,并去除空白字符。遍历指定的关键词列表,统计每个关键词在文本中出现的次数。将每个关键词的出现次数存储到一个列表中,并返回该列表。

2.2 批处理txt 文件

接下来的主要工作就是将关键词的词频存入到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))

代码部分的主要流程为:

创建一个 Excel 工作簿,并添加一个名为 Sheet1 的工作表。添加 Excel 表头,包括股票代码、公司简称、年份和关键词列。统计需要处理的文件总数。遍历文件夹中的所有 txt 文件,对每个文件进行以下操作:

使用正则表达式解析文件名,提取股票代码、公司简称和年份。调用 extract_keywords 函数提取关键词并统计词频。将结果写入 Excel 表格中。

注意!

由于文件数量庞大,在编写时一定要注意程序的稳定性,加入try,except处理异常事项,使得程序不至于出现异常后直接退出。

此外,我们还可以加入进度显示的功能,来增强程序的交互功能,可以将以下代码加入到函数中。

#显示当前进度

processed_files += 1

progress = processed_files / total_files * 100

print(f"已处理 {processed_files}/{total_files} 个文件({progress:.2f}%)")

2.3 开始运行

到这里,代码的主体部分已经完成,接下来我们只需要给出参数并调用函数运行即可。

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文件夹路径。

3.小结

成品展示:

如果你需要对相应的指标进行数学计算并引入相关指标,就是对Excel的相关操作了,网络上有充足的资源可供参考。

本项目中我们首先介绍了如何使用 Python 编写爬虫,将 A股上市公司年报数据爬取到本地,并引入多线程批量下载以及进行格式转换,接下来,我们使用 jieba 库进行中文文本分析,实现了从多个文本文件中提取关键词并统计词频等操作。最后,我们使用 xlwt 库创建 Excel 文件,并将数据写入其中,以便更好地进行数据分析和可视化。

如果需要完整版代码和相关资料,敬请关注同名公众号“凌小添”,后台回复“年报”即可获取下载链接哦~

相关推荐

223年前罗伯斯庇尔被处死:谈法国大革命的断头台
中华人民共和国被禁电视剧列表
2026世界盃暨2027亞洲盃資格賽第一輪 中華台北 vs 東帝汶 男足國家代表隊 23人名單