Skip to content

Feature: expose exclude_columns on pandas profile accessor #1374

Description

@im-anishraj

Summary

ar.profile() supports exclude_columns, but the pandas accessor wrapper df.arnio.profile() does not expose that option.

This creates an integration parity gap: pandas users can profile through Arnio, but they cannot use the privacy/noisy-column exclusion path without leaving the accessor API and manually converting to ArFrame.

Why it matters

The pandas accessor is meant to make Arnio easy to use inside existing pandas workflows. exclude_columns is important for production profiling because datasets often contain sensitive, high-cardinality, or irrelevant columns such as IDs, tokens, emails, or free-text fields.

Users should be able to write:

report = df.arnio.profile(exclude_columns=["email", "token"])

instead of switching APIs for the same profiling feature.

Evidence

  • arnio/quality.py: profile(frame, *, exclude_columns=None, ...) supports excluding columns and validates the requested names.
  • arnio/integrations/pandas.py: ArnioPandasAccessor.profile() forwards profiling options but has no exclude_columns parameter.
  • tests/test_pandas_accessor.py: accessor tests cover basic profiling but do not cover excluding columns through df.arnio.profile().

Reproduction or trigger

  1. Start with a pandas DataFrame that contains a sensitive or noisy column.
  2. Call df.arnio.profile(exclude_columns=["secret"]).
  3. Python raises TypeError because the accessor method does not accept the parameter, even though the underlying ar.profile() API does.

Expected behavior

df.arnio.profile() should accept exclude_columns and forward it to ar.profile().

Actual behavior

df.arnio.profile() exposes only sample/top-value parameters, so exclude_columns cannot be used through the pandas accessor.

Suggested direction

  • Add exclude_columns: Sequence[str] | None = None to ArnioPandasAccessor.profile().
  • Forward it to profile(self.to_arframe(), exclude_columns=exclude_columns, ...).
  • Add tests that verify excluded columns are omitted from the returned DataQualityReport.
  • Add a small README/API example if the pandas accessor section is updated.

References

  • arnio/integrations/pandas.py
  • arnio/quality.py
  • tests/test_pandas_accessor.py

Priority: low

Metadata

Metadata

Labels

area:integrationsIntegrations with pandas, NumPy, scikit-learn, DuckDB, Arrow, and notebooksarea:pandas-interopto_pandas, from_pandas, dtype compatibility, pandas workflowsarea:qualityprofile, suggest_cleaning, auto_clean, quality reportingdifficulty:beginnerGood for new contributors with limited project contextgssocPart of the GSSoC 2026 contributor programgssoc:good-first-issueBeginner-friendly GSSoC task with clear scopegssoc:level-1GSSoC beginner-level tasklevel:beginnerGSSoC scoring label for beginner-level merged PRspriority:lowNice to have or low-risk improvementsize:xsTiny change; often docs, tests, validation, or one small fixstatus:claimedA contributor is currently working on thistype:featureGSSoC-compatible feature label

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions