pagetakaBlog

最近リフォームと鳥取県日南町の記事多め。写真、PC、ネット等の話題も

東証株式相場表:PDFMinerで解析しMySQLへの流れ(2)

11/5追記:PDF解析に使うPDFMinerの使い方、一部修正

Python:「PDFMiner」と「PDFMiner.six」で東証株式相場表を解析

東証株式相場表(日報、PDF)解析の引っかかりどころ

ネット接続しているPCでPyhtonが使える、という前提で進行します。PC構成などは前の記事の画像をご参照ください。
なお、爺はVSCodeでPythonスクリプト書き、実行してます。

引っかかりどころいっぱいあります。列記します。

  • 相場表全体の構成は複雑で、爺が必要とする以上でした。「TOKYO PRO Market銘柄」からあとは解析対象外にしました。
  • 縦線がデータの区切りになり、PDFMinerのデフォルト状態ではうまく項目をつかめません。縦線無視の設定にしました。
  • PDFMiner解析結果(CSV)、ヘッダーや市場区分、業種などが必要データの途中など思わぬ位置に入るので、正規表現、replaceなどで消去しました。
  • 第2項目は常時表示ではなく、時々です。例えば「配当落ち」の1文字表示「D」です。爺は、この項目をキャンセルするようPythonスクリプトを書きました。
  • 1銘柄分データ先頭を銘柄コード(4桁数字)にしました。一方、株価などの項目(数字)で「3桁区切りコンマ」を早めに消去すると、銘柄コードと区別できない場合(4桁数字)があり、消去タイミングを遅くしました。
  • 株価関係の13データで「-」は該当数値がないことを示しているなど、数字以外が使われています。CSVまでは問題ないのですが、MySQLでは項目ごとにデータの型や長さを設定するため、齟齬が発生する可能性があり要注意です。この項は続く見出しでチョット書き加えます。

株価データのうち「-」は該当数値がない…。

「-」は該当数値がないと説明されています。つまり、0とは異なるという意味です。結果的に重なることもありますが、約定がないなどを現わすことになります。結果的に数値は0なんだけど、状況が異なるというように爺には見えます。

約定が無い日を含む平均株価の計算とか、どうなるんでしょうね…。2020年10月1日、東証がシステムトラブルで終日停止しました。このときのデータは「-」で埋まっているかと…。なにか計算のルールはあるんでしょうけど、爺には不詳のままです。2020年10月1日の日経平均終値は23,185円12銭、前市場日・9月30日の23,185円12銭と同じになっています。

「-」を数値0として、10日間の平均株価を算出したら塩梅悪いですよね…。どなたか教えてくださいませ。

で、MySQLの設定が数値で「-」を放り込んでもエラーは出ず、ある日の該当銘柄をSQLでSELECTしたら数値0で表示されました。結局これって…。数値項目を空欄にする方法って…と思い。null、none、’’ とかやったけど、当然にしてダメ…。何か良い方法はないのでしょうか…爺にはわからんです。

文字データとすれば大丈夫なんですけど何せ数値と文字では消費する記憶スペースが…。できれば、数値で…と希望する爺でした。

利用する項目を絞り込みました

1銘柄ごとに取得できるデータのうち、時々表示される第2項目「コード欄」(東証株式相場表日報先頭頁の右上囲み内)のほか、銘柄名(日本語、英語)、最終気配、前日比、売買代金を使わないことにしました。

銘柄名は銘柄コードで代用できます。MySQLとの関係では、銘柄名は文字で、それも日本語を含むのでデータ量が増え、文字化けの心配も皆無ではありません。

最終気配は、ほとんどのとき空欄です。「ウ」か「カ」とともに数字が表示されます。どちらかをマイナス扱いにすれば、正負の整数でMySQLに格納できますが、まあ、爺的には大引け後データの「気配」をつかうことはなかろうかということで使わないことにしました。

前日比は、前日データがあれば一応計算で出るものなので不要と考えました。もっとも、配当落ちとか株式分割とかで、大きく株価が動いたときには、第2項目「コード欄」とあわせ必要になる方もおられるかもしれませんけど…。

売買代金は、株価で割れば近似が出ますので不要かと、一応つかわないことに。

MySQLのデータ量を抑えたいと妄想している爺がおります、というのが一番です。他で代用できるものは消し、計算で似たようなことになるなら、それでOK、といういい加減な爺です。

つづく…予定。