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

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

言語 JA

テーブルデータ全般

01.5

テーブルデータ全般

まとめ
この章は、手元のテーブルを機械学習モデルに渡せる形へ整えるための小技を集めています。PDF にしか載っていない表は camelot.read_pdf や tabula.read_pdf で DataFrame に取り込み、何万行もかかる apply には tqdm.pandas() を噛ませて進捗バーを出します。列ごとの前処理は make_column_selector(pattern="暦") で名前のパターンから列を選び、make_column_transformer で「カテゴリ列は OneHotEncoder、数値列は StandardScaler」のように一括指定します。読み終えると、元号や町名といった文字列列と人口のような数値列が混ざった表を、1 回の fit_transform で特徴ベクトルに変えられるようになります。

直感 #

実務の表は、PDF の決算資料や自治体の統計表のように「表の形はしているが pandas にはなっていない」ことが多く、pd.read_csv の前に取り込みの一手間が要ります。取り込めたあとも、元号 や 町名 のような文字列列はそのままではモデルに入らず、西暦 と 人口総数 のように桁の違う数値列は距離や係数を歪めます。この章では、取り込み(Camelot / tabula)、待ち時間の可視化(tqdm)、列の選び方(make_column_selector)、列ごとの変換の束ね方(make_column_transformer)の 4 つを、同じサンプル表 sample.csv で順に試します。

詳細な解説 #

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

  • camelot.read_pdf と tabula.read_pdf(pages="all") の使い分けと、パースに失敗したときの切り替え方
  • tqdm.pandas() を呼んでから progress_apply に置き換えるだけで進捗バーを出す方法
  • make_column_selector(pattern=…) で「暦を含む列」のように名前のパターンから列を選ぶ方法
  • make_column_transformer で OneHotEncoder と StandardScaler を列ごとに割り当て、remainder="passthrough" で残りを素通しする設計

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

  • PDF でしか配布されない決算表や統計表を DataFrame にして、query や plt.bar で数値を比べられる
  • 時間のかかる行単位の処理に進捗バーを付け、残り時間の見積もりを立てられる
  • 文字列列と数値列が混ざった表を 1 回の fit_transform で特徴ベクトルに変換できる

学習の進め方 #

まず pdfから表を抽出 で、同じ PDF に対して Camelot が 0 個、tabula が複数のテーブルを返す例を見て、取り込みは道具を変えて試すものだと確認します。次に 処理の進捗を表示 で progress_apply のバーを出し、パターンマッチで列を選択 で pattern="暦" が 和暦 と 西暦 の 2 列だけを拾う様子を見ます。最後に 一括で特徴ベクトル化 で、5 列の sample.csv が 32 列の数値行列に変わる過程を追います。