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

スクレイピングについて

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

https://t.co/NI8bqQmp8Z
https://sugiaki1989.gitbook.io/scrapy-note/chapter01_rules

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

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

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

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

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
ボラティリティ クラスタリング(Volatility Clustering)について:Google ColabのPythonでの相場環境分析
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
ConoHa WINGレンタルサーバーでPython! Webアプリcgiを動かす手順を紹介!3つの例あり【コピペで動く!】
株価時系列データを分析する上で正規化を行う事の重要性について紹介する【違いをみつけろ!】
対話型チャットAI「ChatGPT」が人気なので、アカウントの作成とか難しいことが分からない人向けにとりあえずBlogに埋め込んでみた!
TradingViewを使ってポートフォリオ運用(複数銘柄運用) 米国株 2019/10/01に10万ドル(約1000万円)投資していたらどうなった?TradingViewのミニチャートウィジェットで簡単確認!

コメント

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