JPXのページにある新規上場の表を使い勝手よくするということを以前行いました。そしてやるやると言いながら、全部への拡張を忘れていました。でも、今回は全部に拡張はしていません。これはこのあと示すコードを関数化してアドレスと年を引数にするだけのことだと思う。まぁ私も週末にでもやってみよう。
一旦やったので簡単かと思いきや、ページを見てもわからない部分が多かったのは驚きでした。というか、乗せるの面倒だから大体こんな感じというコードの乗せ方って不十分であると今回も気付かされました。ということで、今回もコードはギットハブにあります。
こちら(2015年以前) https://github.com/hogarakaogawa/study/blob/master/ipodata_before_2015.py (2016年から) https://github.com/hogarakaogawa/study/blob/master/ipodata.py
前回の記事を読むとsplit()を利用すれば簡単に分けられるということでしたが、ループを使わなければいけないという重要なことが書かれていませんでした。列ごと一気にわけられるのかと思った私は、df[‘columns name’].split(‘(’)みたいな感じで分けてしまおうと思ったけど出来ず、ブログを見ながらなんでだろうと頭を悩ませました。
#上場日と上場承認日で分ける date = {} for i in df3.index: df3.loc[i,'date'] = df3.loc[i,'date'].replace(')','') ipodate = df3.loc[i,'date'].split('(') date[i] = ipodate
上のような感じでやればいいみたいです。あと、オーバーアロットメントのところは、削除しまくってやるので、破壊的だという警告がたくさん出まくったり動かなくしたので、データフレームのまま弄るのではなく、オブジェクトをコピーして作ってそれを望む形に整えるという感じにしました。
uridashi = {} ud = df4['uri'].copy() for i in range(len(ud)): ud[i] = ud[i].replace(')','') ud[i] = ud[i].replace('OA','') urid = ud[i].split('(') if ud[i] =='-': urid = ['0','0'] if len(urid) ==1: urid.append('0') uridashi[i] = urid u = pd.DataFrame(uridashi).T u.columns = ['売り出し(千株)', 'オーバーアロットメント(千株)']
なんか色々エラーを吐きながらも動くのだったら無視して放置してやってたけれど、こんな感じでは快適なやつとかは直していこうと思う。今回もまだ一箇所破壊的な部分があるし、気が向いたら直したいところです。
元のサイトの問題としては、2015年以前のもの(2015年含む)は上場の発表日が入っていないので、同じプログラムでは対応できないということで、一行だけ抜いたのを作らないといけないということです。あとこのままだと、数字で見えても文字列だったりするので、計算が文字列になってしまうので、これを直さないといけないという感じです。それが出来たら、季節性とか見たいけど、2013年からの分なんでちょっとデータが少ない気もしますねぇ。
【追記】(3/2) 作ったデータが何処かにアップできないかなと思っていましたが、githubにおいといたらよいではないかという事実に気づいたので置いてみました。ipo_2013.csvみたいな形であるのがそれです。