K_DM Book
用語集
対象者 標準
対象者別の入口 →

対象者の設定はこのブラウザの中にだけ保存されます。

言語 JA

特殊なデータ

01.6

特殊なデータ

まとめ
この章では、CSV や RDB の表としては手に入らないデータを、Python で取得して表形式に変える手順を 2 つ扱います。DeepL で論文を翻訳 では、arxiv パッケージで論文 PDF をダウンロードし、PyMuPDF(fitz)で 1 ページ目のテキストから Abstract だけを切り出して、deepl.Translator で日本語に翻訳します。EDGAR のデータを取得 では、sec_edgar_downloader で Microsoft の 10-K を取得し、pandas.read_html で HTML 内の表をすべて DataFrame にしてキャッシュフロー計算書だけを選び、NaN 列・記号を取り除いて 3 年分の推移をプロットします。どちらも「取得 → 必要な部分の切り出し → 型の整形」という流れが共通で、画像・音声・時系列など別の非構造データでも同じ順序で前処理を組みます。

直感 #

現実のプロジェクトでは、CSV や RDB に収まらないデータを扱う場面が増えています。論文は PDF、財務諸表は HTML、画像は数百万ピクセルの数値配列、テキストは可変長のトークン列で、どれもそのままでは fit(X, y) に渡せません。この章の 2 ページは、PDF と HTML という身近な非構造データを例に、fitz.open や pd.read_html で中身を取り出し、文字列の find や replace で必要な部分だけを残して、数値の列に整えるまでを 1 行ずつ追います。

詳細な解説 #

このチャプターで学べること #

  • arxiv.Search(id_list=[...]) と download_pdf() で論文 PDF を取得し、PyMuPDF で本文テキストを抽出する流れ
  • deepl.Translator.translate_text(source_lang="EN", target_lang="JA") による API 翻訳と、os.getenv で認証キーを扱う作法
  • sec_edgar_downloader で 10-K を取得し、pandas.read_html で HTML の表を一括で DataFrame 化する方法
  • replace(regex=True)・isna().sum() で記号と NaN を掃除し、文字列の表を数値の時系列に変えて matplotlib で描く手順

これがわかるとできること #

  • PDF や HTML のような非構造データを、表形式の特徴量に変換して既存のワークフローに組み込める
  • 外部 API(DeepL など)や公的データベース(EDGAR)を Python から呼び出し、再実行しても同じ結果が得られる取得コードを書ける
  • 「取得 → 切り出し → 型の整形」の順序で前処理を設計し、情報損失や文字列のままの列といった落とし穴を避けられる

学習の進め方 #

まず DeepL で論文を翻訳 で、PDF からテキストを切り出して API に渡すまでの 5 つのコードブロックを順に動かし、text.find("Abstract") のような位置指定がどこで効いているかを確かめます。次に EDGAR のデータを取得 で、pd.read_html が返す数十個の表から 1 つを選び、NaN が 8 割を超える列を落として数値に変換する掃除の手順を追います。最後に、自分の手元にある PDF や HTML で同じ 3 段階(取得・切り出し・整形)を組んでみると、画像や音声など別の非構造データにも同じ設計が使えることが見えてきます。