前回のおさらい。今回したいこと。
前回までで、自動で証券会社にログインしてスクリーニングを行い、合致したものをpandasで取り込み整形することができました。証券会社のスクリーニング機能は無料で公開されているものよりもはるかに多くの設定が可能です。しかしながら、すべての要素を含んでいるわけではありません。そのため、会社の不祥事でニュースに取り上げられるなど、非定量的なデータに弱くなります。そこで、今回はスクリーニングにかかったとしても買いたくない銘柄をグーグルのスプレッドシートと連携して除外する方法を考えます。
グーグルスプレッドシートで例外を登録
まずは、スプレッドシートにもしスクリーニングにかかったとしても買いたくない銘柄を記入していきましょう。グーグルスプレッドシート(https://www.google.com/intl/ja_jp/sheets/about/)はエクセルと似た機能を持っており、オンラインで使用できることから、どこからでも容易にアクセスすることができます。シートに銘柄コードを打ち終わったらファイルの共有ボタンからリンクを発行し、リンクを知っている全員が閲覧可能な状態にします。
python上のスクリーニング結果から除外
まず、おなじみのpandasでグーグルスプレッドシートのスクレイピングを行います。”google spread sheet link”にはさきほど取得したURLリンクを打ち込んでください。
1 |
BadStock = pd.read_html('google spread sheet link', flavor='bs4') |
次に、不要な空白行を消去します。
1 2 |
BadStock2 = BadStock[0].dropna(how='all', axis=1) BadStock3 = BadStock2.dropna(how='any') |
まず最初の行では列要素の空白行を削除しています。axis=1は列方向をhow=’all’はその列がすべて空白であった際に列を削除することを指定しています。二行目は空白を含む行すべてをhow=’any’で指定しています。この作業で除外したい銘柄コードを抽出できました。
1 2 3 |
BadStock4 = BadStock3.astype(int) BadStock5 = BadStock4.astype(str) GoodStock = df2[~df2['number'].isin(BadStock5['A'])] |
銘柄コードは抽出できましたが、グーグルスプレッドシートからスクレイピングしたコードはなぜか小数になっています。そこで、整数に直します。その後文字列に変換して(なぜか分かっていないのですが、文字列にしないと最後のスクリーニング結果との比較ができませんでした。。。)、スクリーニング結果から、除外したいコードと一致するものを除くことで、スクリーニング設定に含められない判断を反映することができました。
最近のコメント