AI資格ドリル
資格を選ぶ

用語比較

ColumnTransformerのremainder='drop'と'passthrough'の違い(Python3データ分析)

違いは、指定しなかった列の行き先です。既定の'drop'では出力から消え、'passthrough'では変換されないまま残ります。

Python3データ分析試験の公式の出題範囲には、scikit-learnの節(8問)があります。出題の形式は、受験前に公式の案内で確かめてください。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

remainder='drop'(既定)とremainder='passthrough'の要点

remainder='drop'(既定)

transformersに指定した列だけが変換されて出力に残る。指定しなかった列は捨てられ、列数が減る。

remainder='passthrough'

指定しなかった列も、変換されないまま出力に連結される。変換した列の右側に加わる。

違いを表で確認

比較軸remainder='drop'(既定)remainder='passthrough'
指定しなかった列出力から捨てられる変換されずに出力へ連結される
既定値かどうか既定値。remainderを省略するとこちらになるremainder='passthrough' と明示したときだけ
3列のデータで、列0と列1だけを指定したときの出力の列数2列。指定した列の変換結果だけ3列。変換した2列に、指定しなかった1列が加わる
残した列の位置残る列がないので、位置の問題は起きない変換器の出力の右側に加わる。出力の列の順序は、transformersに指定した順に従う
変換器の位置に書く同名の文字列transformersの中の'drop'は、その列を捨てる指定transformersの中の'passthrough'は、その列を変換せずに通す指定

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

変換した列だけでよい人

remainderを省略した既定のまま使います。指定しなかった列は出力に出ないので、出力の列数は指定した列の変換結果の分だけです。

02

変換しない列も一緒に残したい人

remainder='passthrough' を付けます。指定しなかった列は、変換されずに出力の右側へ連結されます。

03

出力の列が減ったことに気づかなかった人

既定では、指定しなかった列は黙って捨てられます。出力の列数を、入力の列数と比べて確かめます。

具体例で使い分ける

例 1

3列のデータで、2列だけをStandardScalerにかける

X=[[0, 15, 7], [1, -10, 8]] の列0と列1だけを標準化し、列2は指定しない場面です。

  • ColumnTransformer([('sc', StandardScaler(), [0, 1])]) とし、remainderを省略すると既定の'drop'です。
  • 列0と列1の変換結果は [[-1, 1], [1, -1]] です(公式のGetting Startedの標準化の例と同じ値)。列2は捨てられるので、出力は2行2列になります。

結論: 既定の'drop'では、出力の列数は2。指定しなかった列2は出力に出ません。

例 2

同じデータで、残りの列を通す

同じXで、remainder='passthrough' を付ける場面です。

  • 列0と列1の変換結果は同じ [[-1, 1], [1, -1]] です。
  • 指定しなかった列2は変換されず、[7, 8] のまま出力の右側に加わります。出力は [[-1, 1, 7], [1, -1, 8]] の2行3列です。

結論: 'passthrough'では、出力の列数は3。残した列2は、変換した列の右に付きます。

問題文から答えを選ぶ手順

  1. 1

    変換する列を決める

    transformersに書く列(列の番号や列名)を決めます。

  2. 2

    残りの列が必要か決める

    指定しなかった列を出力に使うなら'passthrough'、使わないなら既定の'drop'のままにします。

  3. 3

    出力の列数を確かめる

    'drop'なら指定した列の変換結果の分だけ、'passthrough'ならそれに残りの列数を足した数です。

試験での見分け方

  • 1remainderの既定値は'drop'。指定しなかった列は出力に出ない。
  • 2指定しなかった列を変換せずに残すなら、remainder='passthrough'。
  • 3'passthrough'で残した列は、変換器の出力の右側に加わる。
  • 4transformersの中の'drop'・'passthrough'は、その列だけに対する指定。
  • 5remainderには'drop'・'passthrough'のほか、推定器も渡せる。

誤答しやすい選択肢

指定しなかった列も、そのまま出力に残ると考える

修正: 既定のremainder='drop'では、指定しなかった列は出力から捨てられます。残したいときは'passthrough'を付けます。

'passthrough'で残した列が、元の位置に戻ると考える

修正: 残した列は変換器の出力の右側に連結されます。元の列の並びには戻りません。

remainderとtransformersの中の'drop'を同じものだと考える

修正: remainderは「指定しなかった列」全体の扱いです。transformersの中の'drop'は、列を指定したうえで捨てる指定です。

確認問題

Q1ColumnTransformerのremainderの既定値は何か?

答え: 'drop'

transformersに指定しなかった列は、既定では出力から捨てられます。

Q23列のデータの列0と列1だけを指定し、remainder='passthrough' にしたとき、出力は何列か?

答え: 3列

変換した2列に、指定しなかった1列が変換されずに連結されます。

Q3remainder='passthrough' で残した列は、出力のどこに加わるか?

答え: 変換器の出力の右側

公式文書では、指定しなかった列の部分集合が変換器の出力に連結されると説明されています。

到達チェック

  • remainderの既定値が'drop'だと説明できる
  • 'passthrough'で出力の列数がいくつになるか数えられる
  • 残した列が出力の右側に加わると説明できる

同じ資格で次に知りたいこと

よくある質問

QColumnTransformerのremainderとは何ですか?

A

transformersに指定しなかった列の扱いを決める引数です。scikit-learn公式文書では、既定値は'drop'で、指定しなかった列は捨てられます。'passthrough'にすると、残りの列が変換されずに出力へ連結されます。

Qremainderに推定器を渡せますか?

A

渡せます。公式文書では、remainderに推定器を渡すと、指定しなかった列にその推定器が使われます。推定器はfitとtransformに対応している必要があります。

Qremainderを使うときの注意はありますか?

A

公式文書では、remainderを推定器にする場合、fitとtransformで渡すDataFrameの列の順序が同じである必要があるとされています。

QPython3データ分析試験で問われますか?

A

公式の出題範囲にscikit-learnの節(8問)があります。ColumnTransformerの出題の形式は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)