Анализ данных XML-формы SEC EDGAR с дочерними узлами с помощью BeautifulSoupPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Анализ данных XML-формы SEC EDGAR с дочерними узлами с помощью BeautifulSoup

Сообщение Anonymous »

Я пытаюсь извлечь отдельные фонды из формы N-PORT-P/A Комиссии по ценным бумагам и биржам (SEC), используя красивый суп и xml. Типичная заявка, описанная ниже и [ссылка здесь][1], выглядит так:

Код: Выделить всё


NPORT-P/A
false
0001145549-23-004025



0001618627
XXXXXXXX



S000048029
C000151492





...


...



ARROW BIDCO LLC
549300YHZN08M0H3O128
Arrow Bidco LLC
042728AA3



115000.000000000000
PA
USD
114754.170000000000
0.3967552449
Long
DBT
CORP
US
N
2

2024-03-15
Fixed
9.500000000000
N
N
N


N
N
N


Arrow Bidco LLC является облигацией в портфеле, некоторые из ее характеристик включены в документацию (CUSIP, CIK, баланс, дата погашения и т. д.). Я ищу лучший способ перебрать каждую отдельную ценную бумагу (investOrSec) и собрать характеристики каждой ценной бумаги в кадре данных.
В настоящее время я использую следующий код:

Код: Выделить всё

import numpy as np
import pandas as pd
import requests
from bs4 import BeautifulSoup

header = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36", "X-Requested-With": "XMLHttpRequest"}

n_port_file = requests.get("https://www.sec.gov/Archives/edgar/data/1618627/000114554923004968/primary_doc.xml", headers=header, verify=False)
n_port_file_xml = n_port_file.content
soup = BeautifulSoup(n_port_file_xml,'xml')

names = soup.find_all('name')
lei = soup.find_all('lei')
title = soup.find_all('title')
cusip = soup.find_all('cusip')
....
maturityDt = soup.find_all('maturityDt')
couponKind = soup.find_all('couponKind')
annualizedRt = soup.find_all('annualizedRt')
Затем выполняется итерация по каждому списку, чтобы создать фрейм данных на основе значений в каждой строке.

Код: Выделить всё

fixed_income_data = []
for i in range(0,len(names)):
rows = [names[i].get_text(),lei[i].get_text(),
title[i].get_text(),cusip[i].get_text(),
balance[i].get_text(),units[i].get_text(),
pctVal[i].get_text(),payoffProfile[i].get_text(),
assetCat[i].get_text(),issuerCat[i].get_text(),
invCountry[i].get_text(),couponKind[i].get_text()
]
fixed_income_data.append(rows)

fixed_income_df = pd.DataFrame(equity_data,columns = ['name',
'lei',
'title',
'cusip',
'balance',
'units',
'pctVal',
'payoffProfile',
'assetCat',
'issuerCat',
'invCountry'
'maturityDt',
'couponKind',
'annualizedRt'
], dtype = float)
Это прекрасно работает, когда включены все фрагменты информации, но часто остается одна переменная, которая не учитывается. Часть формы могла быть пустой, или категория эмитента могла быть заполнена неправильно, что привело к ошибке IndexError. В этом портфеле 127 ценных бумаг, которые мне удалось проанализировать, но, возможно, не хватает годовой доходности по одной ценной бумаге, что лишает возможности аккуратно создать структуру данных.
Кроме того, для портфелей, которые содержат как фиксированный доход, так и долевые ценные бумаги, долевые ценные бумаги не возвращают информацию для дочернего элемента долга Secs. Есть ли способ перебирать эти данные, одновременно очищая их самым простым способом? Даже добавление «NaN» для дочерних элементов долга, на которые не ссылаются долевые ценные бумаги, было бы правильным ответом. Будем очень признательны за любую помощь!
[1]: https://www.sec.gov/Archives/edgar/data ... ry_doc.xml

Подробнее здесь: https://stackoverflow.com/questions/753 ... utifulsoup
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать Beautiful Soup для очистки базы данных Edgar SEC и получения данных о желаниях
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Beautiful Soup для очистки базы данных Edgar от SEC и получения данных о желаниях
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Доступ к данным регистрации из API SEC EDGAR в Python
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Доступ к данным регистрации из API SEC EDGAR в Python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Доступ к данным регистрации из API SEC EDGAR в Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»