整理到csv中

将70G定期报告披露数据集下载

链接: https://pan.baidu.com/s/1oboFUswiAMdA_Wn3xCh6YQ 提取码: g7bd

import os
import pdfdocx
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import re

def clean(text):
    return re.sub('\s', ' ', text)

#文件夹列表
dirs = [d for d in os.listdir('reports') if 'DS' not in d]
for di in dirs:
    datas = []
    files = [f for f in os.listdir('reports/{d}'.format(d=di)) if 'z' in f]
    for file in files:
        try:
            file = 'reports/{di}/{f}'.format(di=di, f=file)
            code = file.split('/')[-1].split('_')[0]
            year = re.findall('_(\d{4})_', file.split('/')[-1])[0]
            text = clean(pdfdocx.read_pdf(file))
            data = {'code': code, 'text': text, 'year':year}
            datas.append(data)
        except:
            pass
    df = pd.DataFrame(datas, columns=['code', 'year', 'text'])
    #将每家公司的年报导出到csv中
    df.to_csv('data.csv', index=False, mode='a+', encoding='utf-8')
    
    
#读取
ndf = pd.read_csv('data.csv')
#去重
ndf.drop_duplicates(inplace=True)
#清洗
ndf = ndf[ndf.code=!='code']
#导出到xlsx
ndf.to_excel('data.xlsx', index=False)



导入数据

excel数据下载链接: https://pan.baidu.com/s/1r4YRyxb7bTsx-_ayT4GDKQ 提取码: ew4v

import pandas as pd

df = pd.read_excel('data.xlsx')
df.head()

code year text
0 603859 2017 2017年半年度报告1/116公司代码:603859公司简称:能科股份能科节能技术股份有限公...
1 603859 2019 2019年半年度报告1/141公司代码:603859公司简称:能科股份能科科技股份有限公司2...
2 603859 2018 2018年半年度报告1/120公司代码:603859公司简称:能科股份能科科技股份有限公司2...
3 601500 2017 2017年半年度报告1/114公司代码:601500公司简称:通用股份江苏通用科技股份有限公...
4 601500 2019 2019年半年度报告1/140公司代码:601500公司简称:通用股份江苏通用科技股份有限公...

查看数据量

len(df)
16984

公司数

df.code.nunique()
1476

含有的年份

sorted(df.year.unique())
[2002,
 2003,
 2004,
 2005,
 2006,
 2007,
 2008,
 2009,
 2010,
 2011,
 2012,
 2013,
 2014,
 2015,
 2016,
 2017,
 2018,
 2019]

每家公司年报数

数据集中,平均每家公司的年报数

avg = len(df)/df.code.nunique()
round(avg, 2)
11.51

说明

数据是19年获取的,数据不全,下载过程中有部分pdf是破损的文件。

大家可以尝试该数据集训练会计年报词向量,看看有没有有趣的应用。

本数据可作探索实验性质,如果想在会计领域深入挖掘,建议找更全更精准的数据集。



广而告之