Send feedback
Module compose (2.17.0)
bookmark_border bookmark
Stay organized with collections
Save and categorize content based on your preferences.
Release Notes
Version latestkeyboard_arrow_down
Classes
ColumnTransformer (
transformers : typing . Iterable [
typing . Tuple [
str ,
typing . Union [
bigframes . ml . preprocessing . OneHotEncoder ,
bigframes . ml . preprocessing . StandardScaler ,
bigframes . ml . preprocessing . MaxAbsScaler ,
bigframes . ml . preprocessing . MinMaxScaler ,
bigframes . ml . preprocessing . KBinsDiscretizer ,
bigframes . ml . preprocessing . LabelEncoder ,
bigframes . ml . preprocessing . PolynomialFeatures ,
bigframes . ml . impute . SimpleImputer ,
bigframes . ml . compose . SQLScalarColumnTransformer ,
],
typing . Union [ str , typing . Iterable [ str ]],
]
],
)
Applies transformers to columns of BigQuery DataFrames.
This estimator allows different columns or column subsets of the input
to be transformed separately, and the features generated by each transformer
will be concatenated to form a single feature space.
This is useful for heterogeneous or columnar data to combine several
feature extraction mechanisms or transformations into a single transformer.
SQLScalarColumnTransformer ( sql : str , target_column : str = "transformed_ {0} " )
Wrapper for plain SQL code contained in a ColumnTransformer.
Create a single column transformer in plain sql.
This transformer can only be used inside ColumnTransformer.
When creating an instance '{0}' can be used as placeholder
for the column to transform:
SQLScalarColumnTransformer("{0}+1")
The default target column gets the prefix 'transformed_'
but can also be changed when creating an instance:
SQLScalarColumnTransformer("{0}+1", "inc_{0}")
Examples:
>>> from bigframes.ml.compose import ColumnTransformer, SQLScalarColumnTransformer
>>> import bigframes.pandas as bpd
>>> bpd.options.display.progress_bar = None
>>> df = bpd.DataFrame({'name': ["James", None, "Mary"], 'city': ["New York", "Boston", None]})
>>> col_trans = ColumnTransformer([
... ("strlen",
... SQLScalarColumnTransformer("CASE WHEN {0} IS NULL THEN 15 ELSE LENGTH({0}) END"),
... ['name', 'city']),
... ])
>>> col_trans = col_trans.fit(df)
>>> df_transformed = col_trans.transform(df)
>>> df_transformed
transformed_name transformed_city
0 5 8
1 15 6
2 4 15
<BLANKLINE>
[3 rows x 2 columns]
SQLScalarColumnTransformer can be combined with other transformers, like StandardScaler:
>>> col_trans = ColumnTransformer([
... ("identity", SQLScalarColumnTransformer("{0}", target_column="{0}"), ["col1", "col5"]),
... ("increment", SQLScalarColumnTransformer("{0}+1", target_column="inc_{0}"), "col2"),
... ("stdscale", preprocessing.StandardScaler(), "col3"),
... # ...
... ])
Send feedback
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License , and code samples are licensed under the Apache 2.0 License . For details, see the Google Developers Site Policies . Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-28 UTC.
Need to tell us more?
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Module compose (2.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.17.0 (latest)](/python/docs/reference/bigframes/latest/bigframes.ml.compose)\n- [2.16.0](/python/docs/reference/bigframes/2.16.0/bigframes.ml.compose)\n- [2.15.0](/python/docs/reference/bigframes/2.15.0/bigframes.ml.compose)\n- [2.14.0](/python/docs/reference/bigframes/2.14.0/bigframes.ml.compose)\n- [2.13.0](/python/docs/reference/bigframes/2.13.0/bigframes.ml.compose)\n- [2.12.0](/python/docs/reference/bigframes/2.12.0/bigframes.ml.compose)\n- [2.11.0](/python/docs/reference/bigframes/2.11.0/bigframes.ml.compose)\n- [2.10.0](/python/docs/reference/bigframes/2.10.0/bigframes.ml.compose)\n- [2.9.0](/python/docs/reference/bigframes/2.9.0/bigframes.ml.compose)\n- [2.8.0](/python/docs/reference/bigframes/2.8.0/bigframes.ml.compose)\n- [2.7.0](/python/docs/reference/bigframes/2.7.0/bigframes.ml.compose)\n- [2.6.0](/python/docs/reference/bigframes/2.6.0/bigframes.ml.compose)\n- [2.5.0](/python/docs/reference/bigframes/2.5.0/bigframes.ml.compose)\n- [2.4.0](/python/docs/reference/bigframes/2.4.0/bigframes.ml.compose)\n- [2.3.0](/python/docs/reference/bigframes/2.3.0/bigframes.ml.compose)\n- [2.2.0](/python/docs/reference/bigframes/2.2.0/bigframes.ml.compose)\n- [2.1.0](/python/docs/reference/bigframes/2.1.0/bigframes.ml.compose)\n- [2.0.0](/python/docs/reference/bigframes/2.0.0/bigframes.ml.compose)\n- [1.42.0](/python/docs/reference/bigframes/1.42.0/bigframes.ml.compose)\n- [1.41.0](/python/docs/reference/bigframes/1.41.0/bigframes.ml.compose)\n- [1.40.0](/python/docs/reference/bigframes/1.40.0/bigframes.ml.compose)\n- [1.39.0](/python/docs/reference/bigframes/1.39.0/bigframes.ml.compose)\n- [1.38.0](/python/docs/reference/bigframes/1.38.0/bigframes.ml.compose)\n- [1.37.0](/python/docs/reference/bigframes/1.37.0/bigframes.ml.compose)\n- [1.36.0](/python/docs/reference/bigframes/1.36.0/bigframes.ml.compose)\n- [1.35.0](/python/docs/reference/bigframes/1.35.0/bigframes.ml.compose)\n- [1.34.0](/python/docs/reference/bigframes/1.34.0/bigframes.ml.compose)\n- [1.33.0](/python/docs/reference/bigframes/1.33.0/bigframes.ml.compose)\n- [1.32.0](/python/docs/reference/bigframes/1.32.0/bigframes.ml.compose)\n- [1.31.0](/python/docs/reference/bigframes/1.31.0/bigframes.ml.compose)\n- [1.30.0](/python/docs/reference/bigframes/1.30.0/bigframes.ml.compose)\n- [1.29.0](/python/docs/reference/bigframes/1.29.0/bigframes.ml.compose)\n- [1.28.0](/python/docs/reference/bigframes/1.28.0/bigframes.ml.compose)\n- [1.27.0](/python/docs/reference/bigframes/1.27.0/bigframes.ml.compose)\n- [1.26.0](/python/docs/reference/bigframes/1.26.0/bigframes.ml.compose)\n- [1.25.0](/python/docs/reference/bigframes/1.25.0/bigframes.ml.compose)\n- [1.24.0](/python/docs/reference/bigframes/1.24.0/bigframes.ml.compose)\n- [1.22.0](/python/docs/reference/bigframes/1.22.0/bigframes.ml.compose)\n- [1.21.0](/python/docs/reference/bigframes/1.21.0/bigframes.ml.compose)\n- [1.20.0](/python/docs/reference/bigframes/1.20.0/bigframes.ml.compose)\n- [1.19.0](/python/docs/reference/bigframes/1.19.0/bigframes.ml.compose)\n- [1.18.0](/python/docs/reference/bigframes/1.18.0/bigframes.ml.compose)\n- [1.17.0](/python/docs/reference/bigframes/1.17.0/bigframes.ml.compose)\n- [1.16.0](/python/docs/reference/bigframes/1.16.0/bigframes.ml.compose)\n- [1.15.0](/python/docs/reference/bigframes/1.15.0/bigframes.ml.compose)\n- [1.14.0](/python/docs/reference/bigframes/1.14.0/bigframes.ml.compose)\n- [1.13.0](/python/docs/reference/bigframes/1.13.0/bigframes.ml.compose)\n- [1.12.0](/python/docs/reference/bigframes/1.12.0/bigframes.ml.compose)\n- [1.11.1](/python/docs/reference/bigframes/1.11.1/bigframes.ml.compose)\n- [1.10.0](/python/docs/reference/bigframes/1.10.0/bigframes.ml.compose)\n- [1.9.0](/python/docs/reference/bigframes/1.9.0/bigframes.ml.compose)\n- [1.8.0](/python/docs/reference/bigframes/1.8.0/bigframes.ml.compose)\n- [1.7.0](/python/docs/reference/bigframes/1.7.0/bigframes.ml.compose)\n- [1.6.0](/python/docs/reference/bigframes/1.6.0/bigframes.ml.compose)\n- [1.5.0](/python/docs/reference/bigframes/1.5.0/bigframes.ml.compose)\n- [1.4.0](/python/docs/reference/bigframes/1.4.0/bigframes.ml.compose)\n- [1.3.0](/python/docs/reference/bigframes/1.3.0/bigframes.ml.compose)\n- [1.2.0](/python/docs/reference/bigframes/1.2.0/bigframes.ml.compose)\n- [1.1.0](/python/docs/reference/bigframes/1.1.0/bigframes.ml.compose)\n- [1.0.0](/python/docs/reference/bigframes/1.0.0/bigframes.ml.compose)\n- [0.26.0](/python/docs/reference/bigframes/0.26.0/bigframes.ml.compose)\n- [0.25.0](/python/docs/reference/bigframes/0.25.0/bigframes.ml.compose)\n- [0.24.0](/python/docs/reference/bigframes/0.24.0/bigframes.ml.compose)\n- [0.23.0](/python/docs/reference/bigframes/0.23.0/bigframes.ml.compose)\n- [0.22.0](/python/docs/reference/bigframes/0.22.0/bigframes.ml.compose)\n- [0.21.0](/python/docs/reference/bigframes/0.21.0/bigframes.ml.compose)\n- [0.20.1](/python/docs/reference/bigframes/0.20.1/bigframes.ml.compose)\n- [0.19.2](/python/docs/reference/bigframes/0.19.2/bigframes.ml.compose)\n- [0.18.0](/python/docs/reference/bigframes/0.18.0/bigframes.ml.compose)\n- [0.17.0](/python/docs/reference/bigframes/0.17.0/bigframes.ml.compose)\n- [0.16.0](/python/docs/reference/bigframes/0.16.0/bigframes.ml.compose)\n- [0.15.0](/python/docs/reference/bigframes/0.15.0/bigframes.ml.compose)\n- [0.14.1](/python/docs/reference/bigframes/0.14.1/bigframes.ml.compose)\n- [0.13.0](/python/docs/reference/bigframes/0.13.0/bigframes.ml.compose)\n- [0.12.0](/python/docs/reference/bigframes/0.12.0/bigframes.ml.compose)\n- [0.11.0](/python/docs/reference/bigframes/0.11.0/bigframes.ml.compose)\n- [0.10.0](/python/docs/reference/bigframes/0.10.0/bigframes.ml.compose)\n- [0.9.0](/python/docs/reference/bigframes/0.9.0/bigframes.ml.compose)\n- [0.8.0](/python/docs/reference/bigframes/0.8.0/bigframes.ml.compose)\n- [0.7.0](/python/docs/reference/bigframes/0.7.0/bigframes.ml.compose)\n- [0.6.0](/python/docs/reference/bigframes/0.6.0/bigframes.ml.compose)\n- [0.5.0](/python/docs/reference/bigframes/0.5.0/bigframes.ml.compose)\n- [0.4.0](/python/docs/reference/bigframes/0.4.0/bigframes.ml.compose)\n- [0.3.0](/python/docs/reference/bigframes/0.3.0/bigframes.ml.compose)\n- [0.2.0](/python/docs/reference/bigframes/0.2.0/bigframes.ml.compose) \nBuild composite transformers on heterogeneous data. This module is styled\nafter scikit-Learn's compose module:\n\u003chttps://scikit-learn.org/stable/modules/classes.html#module-sklearn.compose\u003e.\n\nClasses\n-------\n\n### [ColumnTransformer](/python/docs/reference/bigframes/latest/bigframes.ml.compose.ColumnTransformer)\n\n ColumnTransformer(\n transformers: typing.Iterable[\n typing.Tuple[\n str,\n typing.Union[\n bigframes.ml.preprocessing.OneHotEncoder,\n bigframes.ml.preprocessing.StandardScaler,\n bigframes.ml.preprocessing.MaxAbsScaler,\n bigframes.ml.preprocessing.MinMaxScaler,\n bigframes.ml.preprocessing.KBinsDiscretizer,\n bigframes.ml.preprocessing.LabelEncoder,\n bigframes.ml.preprocessing.PolynomialFeatures,\n bigframes.ml.impute.SimpleImputer,\n bigframes.ml.compose.SQLScalarColumnTransformer,\n ],\n typing.Union[str, typing.Iterable[str]],\n ]\n ],\n )\n\nApplies transformers to columns of BigQuery DataFrames.\n\nThis estimator allows different columns or column subsets of the input\nto be transformed separately, and the features generated by each transformer\nwill be concatenated to form a single feature space.\nThis is useful for heterogeneous or columnar data to combine several\nfeature extraction mechanisms or transformations into a single transformer.\n\n### [SQLScalarColumnTransformer](/python/docs/reference/bigframes/latest/bigframes.ml.compose.SQLScalarColumnTransformer)\n\n SQLScalarColumnTransformer(sql: str, target_column: str = \"transformed_{0}\")\n\nWrapper for plain SQL code contained in a ColumnTransformer.\n\nCreate a single column transformer in plain sql.\nThis transformer can only be used inside ColumnTransformer.\n\nWhen creating an instance '{0}' can be used as placeholder\nfor the column to transform: \n\n SQLScalarColumnTransformer(\"{0}+1\")\n\nThe default target column gets the prefix 'transformed_'\nbut can also be changed when creating an instance: \n\n SQLScalarColumnTransformer(\"{0}+1\", \"inc_{0}\")\n\n**Examples:** \n\n \u003e\u003e\u003e from bigframes.ml.compose import ColumnTransformer, SQLScalarColumnTransformer\n \u003e\u003e\u003e import bigframes.pandas as bpd\n \u003e\u003e\u003e bpd.options.display.progress_bar = None\n\n \u003e\u003e\u003e df = bpd.DataFrame({'name': [\"James\", None, \"Mary\"], 'city': [\"New York\", \"Boston\", None]})\n \u003e\u003e\u003e col_trans = ColumnTransformer([\n ... (\"strlen\",\n ... SQLScalarColumnTransformer(\"CASE WHEN {0} IS NULL THEN 15 ELSE LENGTH({0}) END\"),\n ... ['name', 'city']),\n ... ])\n \u003e\u003e\u003e col_trans = col_trans.fit(df)\n \u003e\u003e\u003e df_transformed = col_trans.transform(df)\n \u003e\u003e\u003e df_transformed\n transformed_name transformed_city\n 0 5 8\n 1 15 6\n 2 4 15\n \u003cBLANKLINE\u003e\n [3 rows x 2 columns]\n\nSQLScalarColumnTransformer can be combined with other transformers, like StandardScaler: \n\n \u003e\u003e\u003e col_trans = ColumnTransformer([\n ... (\"identity\", SQLScalarColumnTransformer(\"{0}\", target_column=\"{0}\"), [\"col1\", \"col5\"]),\n ... (\"increment\", SQLScalarColumnTransformer(\"{0}+1\", target_column=\"inc_{0}\"), \"col2\"),\n ... (\"stdscale\", preprocessing.StandardScaler(), \"col3\"),\n ... # ...\n ... ])"]]