应用Python统计公司年报中指定词出现的次数

2023-10-20 14:18:28 浏览数 (2)

本文背景是大学关系很好的老师最近在做文本挖掘相关的项目,想要我用Python帮她实现公司年报中某些词出现次数的统计。

根据她提供的部分年报文档,设计了实现代码,只要把文档放到指定的文件夹中,即可全量实现。

从指定文档中统计词频可以应用在写毕业论文、行业分析、商业价值挖掘等多个模块,故把全量代码分享给更多有需要的朋友。

一、获取指定文件夹下的全量文件名

由于不同的项目文件数量和名称是不固定的,故写代码自动获取指定文件夹下所有的文件名。具体代码如下:

代码语言:javascript复制
import os 

filePath = r'F:公众号82_年报分词试试'   # 存放txt文档的文件路径
os.chdir(filePath)                         # 设置文件读取路径
files = os.listdir(filePath)               # 获取filePath路径下的所有txt文件
files

注:filePath要改成你存待统计词频的文件(年报)路径。

得到结果:

代码语言:javascript复制
['000001_2002_20020418_2001年年度报告.txt',
 '000001_2003_20030424_2002年年度报告.txt',
 '000001_2004_20040415_2003年年度报告.txt',
 '000001_2005_20050426_2004年年度报告.txt',
 '000001_2006_20060401_2005年年度报告.txt',
 '000001_2007_20070322_2006年年度报告.txt',
 '000001_2008_20080320_2007年年度报告.txt',
 '000001_2009_20090320_2008年年度报告.txt',
 '000001_2010_20100312_2009年年度报告.txt',
 '000001_2011_20110225_2010年年度报告.txt',
 '000001_2012_20120309_2011年年度报告.txt',
 '000001_2013_20130308_2012年年度报告.txt',
 '000001_2014_20140307_2013年年度报告.txt',
 '000001_2015_20150313_2014年年度报告.txt',
 '000001_2016_20160310_2015年年度报告.txt',
 '000001_2017_20170317_2016年年度报告.txt',
 '000001_2018_20180315_2017年年度报告.txt',
 '000001_2019_20190307_2018年年度报告.txt',
 '000001_2020_20200214_2019年年度报告.txt',
 '000001_2021_20210202_2020年年度报告.txt',
 '000001_2022_20220310_2021年年度报告.txt',
 '000001_2023_20230309_2022年年度报告.txt']

可以发现结果是一个文件列表。

二、写循环实现词频统计

代码语言:javascript复制
接着写循环统计每个文件中指定词出现的次数,具体代码如下:
代码语言:javascript复制
import numpy as np 
import pandas as pd 

wd_list = ['董事会', '金融', '哈哈哈哈']   #要统计的词
txts_wd = [] 
for file in files:
    f = open(file, encoding='utf-8')      # 打开文件
    txt = ''
    for line in f:
        txt  = line.strip()              #合并单行成一个txt
    txt_wd = file   ';'
    for i in wd_list:
        num = txt.count(i)
        txt_wd  = i   '='   str(num)   ';'
    txts_wd.append(txt_wd)
txts_wd

注:wd_list中填入你想统计的词,可加逗号无限扩展。

得到结果:

代码语言:javascript复制
['000001_2002_20020418_2001年年度报告.txt;董事会=93;金融=90;哈哈哈哈=0;',
 '000001_2003_20030424_2002年年度报告.txt;董事会=89;金融=102;哈哈哈哈=0;',
 '000001_2004_20040415_2003年年度报告.txt;董事会=94;金融=110;哈哈哈哈=0;',
 '000001_2005_20050426_2004年年度报告.txt;董事会=167;金融=270;哈哈哈哈=0;',
 '000001_2006_20060401_2005年年度报告.txt;董事会=104;金融=329;哈哈哈哈=0;',
 '000001_2007_20070322_2006年年度报告.txt;董事会=96;金融=534;哈哈哈哈=0;',
 '000001_2008_20080320_2007年年度报告.txt;董事会=141;金融=695;哈哈哈哈=0;',
 '000001_2009_20090320_2008年年度报告.txt;董事会=97;金融=793;哈哈哈哈=0;',
 '000001_2010_20100312_2009年年度报告.txt;董事会=114;金融=836;哈哈哈哈=0;',
 '000001_2011_20110225_2010年年度报告.txt;董事会=151;金融=806;哈哈哈哈=0;',
 '000001_2012_20120309_2011年年度报告.txt;董事会=122;金融=921;哈哈哈哈=0;',
 '000001_2013_20130308_2012年年度报告.txt;董事会=95;金融=924;哈哈哈哈=0;',
 '000001_2014_20140307_2013年年度报告.txt;董事会=70;金融=616;哈哈哈哈=0;',
 '000001_2015_20150313_2014年年度报告.txt;董事会=101;金融=684;哈哈哈哈=0;',
 '000001_2016_20160310_2015年年度报告.txt;董事会=79;金融=667;哈哈哈哈=0;',
 '000001_2017_20170317_2016年年度报告.txt;董事会=66;金融=663;哈哈哈哈=0;',
 '000001_2018_20180315_2017年年度报告.txt;董事会=61;金融=726;哈哈哈哈=0;',
 '000001_2019_20190307_2018年年度报告.txt;董事会=63;金融=1106;哈哈哈哈=0;',
 '000001_2020_20200214_2019年年度报告.txt;董事会=71;金融=876;哈哈哈哈=0;',
 '000001_2021_20210202_2020年年度报告.txt;董事会=64;金融=1012;哈哈哈哈=0;',
 '000001_2022_20220310_2021年年度报告.txt;董事会=77;金融=1043;哈哈哈哈=0;',
 '000001_2023_20230309_2022年年度报告.txt;董事会=106;金融=1076;哈哈哈哈=0;']

可以发现每一行存储的都是文件名和指定词在文章中出现的次数。

代码语言:javascript复制


三、把结果转成数据框

0 人点赞