从10-K - 提取SIC,CIK,创建元数据表

时间:2017-04-17 11:31:40

标签: python regex metadata finance edgar

我正在与埃德加的10-Ks合作。为了协助文件管理和数据分析,我想创建一个表,其中包含每个文件的路径,公司提交的CIK号码(这是SEC发布的唯一ID),以及它所属的SIC行业代码。下面是一个可视化表示我想要做的图像。

我要提取的两件事列在每个文档的顶部。 CIK#将始终是在短语“CENTRAL INDEX KEY:”之后列出的数字。在“标准工业分类”之后,SIC#将始终是括号中的数字,然后是该特定行业的描述。

这在所有文件中都是一致的。

要做的事:

  1. 循环文件:提取文件路径,CIK和SIC号码 - 注意我每个文档只返回一个,每个结果都是有序的,所以我的字段之间的记录对齐。

    < / LI>
  2. 将这些字段合并在一起 - 我猜这样做的最佳方法是将每个字段提取到各自的单独列表中然后合并,也许合并到Pandas数据帧中?

  3. 最终,我将使用此表来帮助我在SIC行业之间对数据进行分组。

    谢谢你看看。如果我能提供其他文件,请告诉我。

    The two pieces of metadata I want to extract are at the top of each document. The CIK # will always be a number which is listed after the phrase "CENTRAL INDEX KEY:". The SIC # will always be a number enclosed in brackets after "STANDARD INDUSTRIAL CLASSIFICATION" and then a description of that particular industry.

1 个答案:

答案 0 :(得分:0)

这是我刚刚为执行类似操作而编写的一些代码。您可以将结果输出到CSV文件。第一步,您需要遍历该文件夹并获取所有10-K的列表并对其进行迭代。

    year_end = ""
    sic = ""

    with open(txtfile, 'r', encoding='utf-8', errors='replace') as rawfile:
        for cnt, line in enumerate(rawfile):
            #print(line)
            if "CONFORMED PERIOD OF REPORT" in line:
                year_end = line[-9:-1]
                #print(year_end)
            if "STANDARD INDUSTRIAL CLASSIFICATION" in line:
                match = re.search(r"\d{4}", line)
                if match:
                    sic = match.group(0)
                    #print(sic)
                #print(sic)
            if (year_end and sic) or cnt > 100:
                #print(year_end, sic)
                break