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://sugiaki1989.gitbook.io/scrapy-note/chapter01_rules
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コードあり)
デコピコミンが全国(47都道府県)で、どの施設に出てくるか地図(Google Maps)で確認!!【ピクミン ブルーム(Pikmin Bloom)】(スタジアムピクミン対応!2022/12/04)
対話型チャットAI「ChatGPT」が人気なので、アカウントの作成とか難しいことが分からない人向けにとりあえずBlogに埋め込んでみた!
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
Windows10で機械学習環境チェック CPU/GPUでTensorflowの作業時間はどのくらい違うのか、Google Colabとも比較してみた。(CUDA Toolkit,cuDNN)
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
ConoHa WINGレンタルサーバーでPython! Webアプリcgiを動かす手順を紹介!3つの例あり【コピペで動く!】
株価時系列データを分析する上で正規化を行う事の重要性について紹介する【違いをみつけろ!】
Google Analytics にPython APIで接続してみた話【コピペで動く!】
Google Data Portalを使ってWeb上のオープンデータを使って簡単に情報を可視化しようという話
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
Google ColabでYouTube動画を開始・終了の時間を指定してPythonでダウンロード(音声・動画両方対応)【コピペで動く!】

コメント

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