Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions bigframes/extensions/pandas/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,15 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
BigQuery DataFrames automatically registers a pandas extenstion when imported.
This allows you to use the power of the BigQuery engine with pandas objects
directly.
"""

from bigframes.extensions.pandas.dataframe_accessor import (
PandasBigQueryDataFrameAccessor,
)

__all__ = ["PandasBigQueryDataFrameAccessor"]
11 changes: 7 additions & 4 deletions bigframes/extensions/pandas/dataframe_accessor.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@
import pandas.api.extensions

import bigframes.core.global_session as bf_session
from bigframes.core.logging import log_adapter
import bigframes.pandas as bpd


class AIAccessor:
@log_adapter.class_logger
class PandasAIAccessor:
"""
Pandas DataFrame accessor for BigQuery AI functions.
"""
Expand Down Expand Up @@ -101,7 +103,8 @@ def forecast(


@pandas.api.extensions.register_dataframe_accessor("bigquery")
class BigQueryDataFrameAccessor:
@log_adapter.class_logger
class PandasBigQueryDataFrameAccessor:
"""
Pandas DataFrame accessor for BigQuery DataFrames functionality.

Expand All @@ -112,11 +115,11 @@ def __init__(self, pandas_obj: pandas.DataFrame):
self._obj = pandas_obj

@property
def ai(self) -> "AIAccessor":
def ai(self) -> "PandasAIAccessor":
"""
Accessor for BigQuery AI functions.
"""
return AIAccessor(self._obj)
return PandasAIAccessor(self._obj)

def sql_scalar(self, sql_template: str, *, output_dtype=None, session=None):
"""
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ BigQuery DataFrames provides extensions to pandas DataFrame objects.
.. autosummary::
:toctree: api

bigframes.extensions.pandas.dataframe_accessor.BigQueryDataFrameAccessor
bigframes.extensions.pandas

ML APIs
~~~~~~~
Expand Down
6 changes: 4 additions & 2 deletions tests/unit/extensions/pandas/test_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ def test_bigframes_import_registers_accessor():
df = pd.DataFrame({"a": [1]})
# If bigframes was imported, df.bigquery should exist
assert hasattr(df, "bigquery")
from bigframes.extensions.pandas.dataframe_accessor import BigQueryDataFrameAccessor
from bigframes.extensions.pandas.dataframe_accessor import (
PandasBigQueryDataFrameAccessor,
)

assert isinstance(df.bigquery, BigQueryDataFrameAccessor)
assert isinstance(df.bigquery, PandasBigQueryDataFrameAccessor)
Loading