Webスクレイピングについて、ヘッダーがピボットテーブルのようになっている場合の扱いについて【Google Colab:Python:pd.read_html】

スポンサーリンク
投資

読者の方から、問い合わせをいただいたのでフィードバックとコメントをお返ししたいと思います。

質問、問い合わせ

質問としてはとあるサイトをスクレイピングしたいという物と、それが問題ないのか、という物でした。サイト自体は以下のサイトになります。

株主プロ 【 大量保有報告書 提出者 | FMRLLC 保有銘柄検証 】
上場企業、約3,900社の株主を検証

特定の機関投資家の大量保有を報告した銘柄の傾向を調査したいという事でしょうか。

目標とすること

そのサイトのデータを個人的な分析などで利用することとします。

使用するツール

使用するツールはGoogle Colaboratoryのpythonを使いますので、無料で、簡単に行うことができます。Google Colaboratoryについては以前書いた記事をご参照いただければと思います。

実際のコードとやっていること

実際のコードは以下の通りです。

import pandas as pd

url = 'http://kabupro.jp/edx/E12208.htm'

data1 = pd.read_html(url)
display(len(data1))
display(data1[0])

スクレイピング自体は問題なのですが、気になる点としてはヘッダー情報がピボットテーブルの形式になっていたり、最後の行が不必要な情報になっている事でしょうか。実際画像を見ても、最初の行がテーブルの結合のような形で恐らく広告などがあるようにも見えます。

どのようにすればこのあたり、分析に使いやすいようにデータ取得できるのでしょうか?

改善策1

ヘッダー情報がピボットテーブルであることを明示的に示してあげると良いと思います。

以下の例はいかがでしょうか?

data2 = pd.read_html(url, header =[0,2])
display(len(data2))
display(data2[0])

ヘッダー部がすっきりしたように思えます。ちなみに列名については以下のようになっているようです。

display(data2[0].info())

改善点2

列名が長いので、シンプルなものに変更し、最後行のデータは削除したいと思います。

table1=data2[0][:-1].copy()
table1.columns = ['code', '発行会社名', '件数', '他', '総数', '最新提出日','unname']
display(table1)

どうでしょうか。最初のデータよりは見やすくなったのではないでしょうか。

データ分析の7割から8割はデータの準備というのが自分の持論でもあるのですが、このような作業しやすいデータであれば、今後いろいろ分析してみようという気になるかもしれませんね。

スクレイピングについて

スクレイピングの注意点という物もあります。

第1章 スクレイピングの注意点 - Scrapy Note
https://sugiaki1989.gitbook.io/scrapy-note/chapter01_rules

スクレイピングで取得したデータを販売するとかであると問題があると思っています。

スクレイピングのために他のユーザーのアクセスに支障が出るなどの頻度でアクセスするのはよくありません。

上記のような点を勘案しながら常識的な使用を心がけてください。

Pythonに関する記事をご紹介します。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
pyfolioで米国株ETFの分析をWebアプリでできるようにしてみた!月ごとのリターンの分布やドローダウンの時期・深さなど可視化できます!
【違いをみつけろ!】Googleトレンドで株式市場のセンチメント調査 ”VIX”で先行きは予想できるのか?! 
TradingViewを使ってポートフォリオ運用(複数銘柄運用・配当込み) 日本株 2019年末に約1000万円投資していたらどうなった?【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
ボラティリティ クラスタリング(Volatility Clustering)について:Google ColabのPythonでの相場環境分析
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
株価時系列データを分析する上で正規化を行う事の重要性について紹介する【違いをみつけろ!】
高配当ETFや金ETFが今年はどのような値動き・リターンかご存じですか? 新興国ETF、米国債ETFだけでなく原油ETFやナスダックETFなど、18種類のETF・指数の現状と傾向を知り、今後の予測に役立てよう!【Google Colab・コピペで動く!】

コメント

タイトルとURLをコピーしました