Ich wünschte, ich könnte einfach ein Diagramm ↓ wie das auf MarketHack veröffentlichte erstellen. Deshalb habe ich ein Skript geschrieben, das ein Leistungsdiagramm ausspuckt, indem ich XBRL mithilfe des separat erstellten XBRL-Parsers für Wertpapierberichte einfüge.
Die Preise für Industriegüter sind stark und Tech Resources geht es gut - Market Hack
Verwenden Sie die folgende selbst erstellte Klasse als Parser.
Ich habe eine Klasse zum Herunterladen und Analysieren von XBRL vom UFO-Catcher - Qiita erstellt
Nehmen wir als Beispiel den Wertpapierbericht für das Geschäftsjahr 2003/17 von Just System.
python
import numpy as np
import pandas as pd
from UfoDataReader.util.parser import UfoXBRLParser
from bokeh.io import show
from bokeh.models import ColumnDataSource, FactorRange
from bokeh.palettes import Spectral5
from bokeh.plotting import figure
from bokeh.transform import factor_cmap
ufoparser = UfoXBRLParser()
# target XBRL file
file = 'jpcrp030000-asr-001_E04996-000_2017-03-31_01_2017-06-23.xbrl'
xbrl = ufoparser.parse(file)
dei = ufoparser.parseDEI(xbrl)
# getting each years GAAP objects
contexts = ['Prior4', 'Prior3', 'Prior2', 'Prior1', 'Current']
gaaps = [ufoparser.parseGAAP(xbrl, context=context) for context in contexts]
# getting factors
share = np.array([float(gaap.shares_outstanding) for gaap in gaaps])
sale = np.array([float(gaap.netsales) for gaap in gaaps])
cf = np.array([float(gaap.cf_from_operating) +
float(gaap.cf_from_financing) +
float(gaap.cf_from_financing) for gaap in gaaps])
df = pd.DataFrame(
dict(
year=contexts,
dps=np.array([float(gaap.dps) for gaap in gaaps]),
eps=np.array([float(gaap.basic_eps) for gaap in gaaps]),
cfps=cf / share,
sps=sale / share
)
)
# bokeh setting
years = contexts
factors = ['dps', 'eps', 'cfps', 'sps']
x = [(year, factor) for year in years for factor in factors]
amounts = sum(zip(df['dps'], df['eps'], df['cfps'], df['sps']), ())
source = ColumnDataSource(data=dict(x=x, counts=amounts))
p = figure(x_range=FactorRange(*x), plot_height=300, title=dei.company_name)
p.vbar(x='x', top='counts', width=1.0, source=source,
fill_color=factor_cmap('x', palette=Spectral5, factors=factors, start=1, end=2))
p.y_range.start = 0
p.x_range.range_padding = 0.1
p.xaxis.major_label_orientation = 1
p.xgrid.grid_line_color = None
# open browser
show(p)
Es wird so ausgegeben. Es ist möglicherweise besser, Tooltip usw. mit Hover hinzuzufügen. Da Bokeh viele Einstellungen hat, gibt es noch viele Dinge zu beachten.
Recommended Posts