Skip to content

Commit 8ae34b7

Browse files
committed
Merge branch 'main' into PR_showing_number_bar_plot
2 parents 824d6a3 + a820b52 commit 8ae34b7

189 files changed

Lines changed: 21966 additions & 16535 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/changelog.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
run: |
1919
echo "PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV
2020
echo "TAGGED_MILESTONE=${{ github.event.pull_request.milestone.title }}" >> $GITHUB_ENV
21-
- uses: actions/checkout@v4
21+
- uses: actions/checkout@v5
2222
with:
2323
fetch-depth: '0'
2424
- name: Check the changelog entry

.github/workflows/check_stub_files_diff.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ jobs:
1414
runs-on: ubuntu-latest
1515

1616
steps:
17-
- uses: actions/checkout@v4
18-
- uses: prefix-dev/setup-pixi@v0.8.8
17+
- uses: actions/checkout@v5
18+
- uses: prefix-dev/setup-pixi@v0.9.0
1919
with:
2020
pixi-version: v0.41.3
2121
frozen: true
2222

23-
- name: Check stub file for `_expression.py` is up-to-date
23+
- name: Check stub file for `_data_ops.py` is up-to-date
2424
run: pixi run -e check-pyi-diff check

.github/workflows/run-code-format-checks.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ jobs:
1414
runs-on: ubuntu-latest
1515

1616
steps:
17-
- uses: actions/checkout@v4
18-
- uses: prefix-dev/setup-pixi@v0.8.8
17+
- uses: actions/checkout@v5
18+
- uses: prefix-dev/setup-pixi@v0.9.0
1919
with:
2020
pixi-version: v0.41.3
2121
frozen: true

.github/workflows/test-javascript.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ jobs:
1212
test:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@v4
16-
- uses: prefix-dev/setup-pixi@v0.8.8
15+
- uses: actions/checkout@v5
16+
- uses: prefix-dev/setup-pixi@v0.9.0
1717
with:
1818
pixi-version: v0.41.3
1919
environments: ci-py312-latest-optional-deps

.github/workflows/testing.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ jobs:
2424
]
2525
runs-on: ${{ matrix.os }}
2626
steps:
27-
- uses: actions/checkout@v4
28-
- uses: prefix-dev/setup-pixi@v0.8.8
27+
- uses: actions/checkout@v5
28+
- uses: prefix-dev/setup-pixi@v0.9.0
2929
with:
3030
pixi-version: v0.41.3
3131
environments: ${{ matrix.environment }}
@@ -40,7 +40,7 @@ jobs:
4040
run: pixi run -e ${{ matrix.environment }} test-user-guide
4141

4242
- name: Upload coverage reports to Codecov
43-
uses: codecov/codecov-action@v5.4.3
43+
uses: codecov/codecov-action@v5.5.1
4444
with:
4545
token: ${{ secrets.CODECOV_TOKEN }}
4646
slug: skrub-data/skrub
@@ -50,7 +50,7 @@ jobs:
5050
outputs:
5151
run: ${{ github.event_name == 'schedule' || contains(steps.get_head_commit_message.outputs.COMMIT_MSG, '[deps nightly]') }}
5252
steps:
53-
- uses: actions/checkout@v4
53+
- uses: actions/checkout@v5
5454
with:
5555
ref: ${{ github.event.pull_request.head.sha }}
5656
- id: get_head_commit_message
@@ -63,8 +63,8 @@ jobs:
6363
runs-on: ubuntu-latest
6464
name: test against nighlty dependencies
6565
steps:
66-
- uses: actions/checkout@v4
67-
- uses: actions/setup-python@v5
66+
- uses: actions/checkout@v5
67+
- uses: actions/setup-python@v6
6868
with:
6969
python-version: "3.11"
7070
name: 'Setup python'

.github/workflows/update_pixi_lock_files.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ jobs:
2121
fail-fast: false
2222

2323
steps:
24-
- uses: actions/checkout@v4
25-
- uses: prefix-dev/setup-pixi@v0.8.8
24+
- uses: actions/checkout@v5
25+
- uses: prefix-dev/setup-pixi@v0.9.0
2626
with:
2727
pixi-version: v0.41.3
2828

CHANGES.rst

Lines changed: 163 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,125 @@ Release history
66

77
.. currentmodule:: skrub
88

9-
Ongoing development
9+
Ongoing Development
1010
===================
1111

1212
New features
1313
------------
14+
- The :meth:`DataOp.skb.full_report` now displays the time each node took to
15+
evaluate. :pr:`1596` by :user:`Jérôme Dockès <jeromedockes>`.
1416

15-
- The skrub expressions are new mechanism for building machine-learning
17+
Changes
18+
-------
19+
- Ken embeddings are now deprecated, the functions :func:`datasets.get_ken_embeddings`,
20+
:func:`datasets.get_ken_table_aliases`, and :func:`datasets.get_ken_types` will be
21+
removed in the next release of skrub.
22+
:pr:`1546` by :user:`Vincent Maladiere <Vincent-Maladiere>`.
23+
- Improved error messages when a DataOp is being sent to dispatched functions.
24+
:pr:`1607` by :user:`Riccardo Cappuzzo<rcap107>`.
25+
- The accepted values for the parameter ``how`` of :meth:`DataOp.skb.apply` have
26+
changed. The new values are ``"auto"`` (unchanged), ``"cols"`` to wrap the
27+
transformer in :class:`ApplyToCols`, ``"frame"`` to wrap the transformer in
28+
:class:`ApplyToFrame`, or ``"no_wrap"`` for no wrapping. The old values are
29+
deprecated and will result in an error in a future release.
30+
:pr:`1628` by :user:`Jérôme Dockès <jeromedockes>`.
31+
- The parameter ``splitter`` of :meth:`DataOp.skb.train_test_split` has been
32+
renamed ``split_func``. :pr:`1630` by :user:`Jérôme Dockès <jeromedockes>`.
33+
34+
35+
Bugfixes
36+
--------
37+
38+
- Fixed a compatibility bug with Polars 1.32.3 that may cause `ToFloat32` to fail
39+
when applied to categorical columns. :pr:`1570` by :user:`Riccardo Cappuzzo<rcap107>`.
40+
- Fixed the display of DataOp objects in google colab cell outputs (no output
41+
was displayed). :pr:`1590` by :user:`Jérôme Dockès <jeromedockes>`.
42+
- Fixed an error that occurred when using ``.skb.concat`` with a pandas dataframe
43+
with column names that aren't strings. :pr:`1594` by :user:`Riccardo Cappuzzo<rcap107>`.
44+
- Fixed the range from which :func:`choose_float` and :func:`choose_int` sample
45+
values when ``log=False`` and ``n_steps`` is ``None``. It was between ``low``
46+
and ``low + high``, now it is between ``low`` and ``high``. :pr:`1603` by
47+
:user:`Jérôme Dockès <jeromedockes>`.
48+
- DataOp hyperparameter search would raise an error when doing classification
49+
and using the ``scoring`` parameter, when the dataop contained no variables.
50+
Fixed in :pr:`1601` by :user:`Jérôme Dockès <jeromedockes>`.
51+
- :class:`SkrubLearner` used to do a prediction on the train set during
52+
``fit()``, this has been fixed.
53+
:pr:`1610` by :user:`Jérôme Dockès <jeromedockes>`.
54+
- :class:`DataOp` would raise errors when containing subclasses of list, tuple
55+
or dict that cannot be initialized with an instance of the builtin type (such
56+
as classes created by ``collections.namedtuple``), this has been fixed.
57+
DataOps now only recurse into the builtin collections to evaluate their items
58+
(not into their subclasses). If you need the items evaluated (ie if they
59+
contain DataOps or Choices), store them in one of the builtin collections.
60+
:pr:`1612` by :user:`Jérôme Dockès <jeromedockes>`.
61+
- :meth:`SkrubLearner.report` with ``mode="fit"`` used to display the dataops
62+
themselves, rather than their outputs, in the report. This has been fixed in
63+
:pr:`1623` by :user:`Jérôme Dockès <jeromedockes>`.
64+
- Fixed a bug that happened when ``get_feature_names_out`` was called on instances
65+
of the :class:`DatetimeEncoder`. :pr:`1622` by :user:`Riccardo Cappuzzo<rcap107>`.
66+
67+
Release 0.6.1
68+
===================
69+
70+
Bugfixes
71+
--------
72+
73+
- ``get_feature_names_out`` now works correctly when used by :class:`GapEncoder`,
74+
:class:`DropCols`, :class:`SelectCols:` from within a scikit-learn ``Pipeline``. In
75+
addition, :class:`DropCols`'s ``get_feature_names_out`` method now returns the
76+
names of the columns that are not dropped, rather than the names of the columns
77+
that are dropped. :pr:`1543` by :user:`Riccardo Cappuzzo<rcap107>`.
78+
79+
80+
Release 0.6.0
81+
=============
82+
83+
Highlights
84+
----------
85+
- Major feature! Skrub DataOps are a powerful new way of
86+
combining dataframe transformations over multiple tables, and machine learning
87+
pipelines. DataOps can be combined to form compled data plans, that can be used
88+
to train and tune machine learning models. Then, the DataOps plans can be exported
89+
as ``Learners`` (:class:`skrub.SkrubLearner`), standalone objects that can be
90+
used on new data. More detail about the DataOps can be found in the
91+
:ref:`User guide <user_guide_data_ops_index>` and in the
92+
:ref:`examples <data_ops_examples_ref>`.
93+
94+
- The :class:`TableReport` has been improved with many new features. Series are
95+
now supported directly. It is now
96+
possible to skip computing column associations and generating plots when the
97+
number of columns in the dataframe exceeds a user-defined threshold. Columns with
98+
high cardinality and sorted columns are now highlighted in the report.
99+
100+
- :mod:`selectors`, :class:`ApplyToCols` and :class:`ApplyToFrame` are now available,
101+
providing utilities for selecting columns to which a transformer should be applied
102+
in a flexible way. For more details, see the :ref:`User guide <user_guide_selectors>`
103+
and the :ref:`example <sphx_glr_auto_examples_09_apply_to_cols.py>`.
104+
105+
- The :class:`SquashingScaler` has been added: it robustly rescales and smoothly
106+
clips numeric columns, enabling more robust handling of numeric columns
107+
with neural networks. See the :ref:`example <sphx_glr_auto_examples_10_squashing_scaler.py>`
108+
109+
New features
110+
------------
111+
112+
- The Skrub DataOps are new mechanism for building machine-learning
16113
pipelines that handle multiple tables and easily describing their
17-
hyperparameter spaces. See :ref:`the examples <expressions_examples_ref>` for
18-
an introduction. :pr:`1233` by :user:`Jérôme Dockès <jeromedockes>`. A lot of
19-
work from other contributors is not directly visible on the pull request page:
114+
hyperparameter spaces. Main PR: :pr:`1233` by :user:`Jérôme Dockès <jeromedockes>`.
115+
Additional work from other contributors can be found
116+
`here <https://github.com/skrub-data/skrub/issues?q=merged%3A%3C2025-07-24%20label%3Adata_ops>`_:
20117
:user:`Vincent Maladiere <Vincent-Maladiere>` provided very important help by
21-
trying the expressions on many use-cases and datasets, providing feedback and
118+
trying the DataOps on many use-cases and datasets, providing feedback and
22119
suggesting improvements, improving the examples (including creating all the
23120
figures in the examples) and adding jitter to the parallel coordinate plots,
24-
:user:`Riccardo Cappuzzo<rcap107>` experimented with the expressions,
121+
:user:`Riccardo Cappuzzo<rcap107>` experimented with the DataOps,
25122
suggested improvements and improved the examples, :user:`Gaël Varoquaux
26123
<gaelvaroquaux>` , :user:`Guillaume Lemaitre <glemaitre>`, :user:`Adrin Jalali
27124
<adrinjalali>`, :user:`Olivier Grisel <ogrisel>` and others participated
28125
through many discussions in defining the requirements and the public API.
126+
See :ref:`the examples <data_ops_examples_ref>` for
127+
an introduction.
29128

30129
- The :mod:`selectors` module provides utilities for selecting columns to which
31130
a transformer should be applied in a flexible way. The module was created in
@@ -43,13 +142,39 @@ New features
43142
to configure settings for dataframes display and expressions. :func:`patch_display`
44143
and :func:`unpatch_display` are deprecated and will be removed in the next release
45144
of skrub. :pr:`1427` by :user:`Vincent Maladiere <Vincent-Maladiere>`.
145+
The global configuration includes the parameter ``cardinality_threshold`` that
146+
controls the threshold value used to warn user if they have high cardinality
147+
columns in their dataset. :pr:`1498` by :user:`rouk1 <rouk1>`.
148+
Additionally, the parameter ``float_precision``
149+
controls the number of significant digits displayed for floating-point values
150+
in reports. :pr:`1470` by :user:`George S <georgescutelnicu>`.
151+
152+
- Added the :class:`SquashingScaler`, a transformer that
153+
robustly rescales and smoothly clips numeric columns,
154+
enabling more robust handling of numeric columns
155+
with neural networks. :pr:`1310` by :user:`Vincent Maladiere <Vincent-Maladiere>` and
156+
:user:`David Holzmüller <dholzmueller>`.
157+
158+
- :func:`datasets.toy_order` is now available to create a toy dataframe and
159+
corresponding targets for examples.
160+
:pr:`1485` by :user:`Antoine Canaguier-Durand <canag>`.
161+
162+
- :class:`ApplyToCols` and :class:`ApplyToFrame` are now available to apply transformers
163+
on a set of columns independently and jointly respectively.
164+
:pr:`1478` by :user:`Vincent Maladiere<Vincent-Maladiere>`.
165+
46166

47167
Changes
48168
-------
49169
.. warning::
50170
The default high cardinality encoder for both :class:`TableVectorizer` and
51-
:meth:`tabular_learner` has been changed from :class:`GapEncoder` to
52-
:class:`StringEncoder`. :pr:`1354` by :user:`Riccardo Cappuzzo<rcap107>`.
171+
:meth:`tabular_learner` (now :meth:`tabular_pipeline`) has been changed from
172+
:class:`GapEncoder` to :class:`StringEncoder`. :pr:`1354` by
173+
:user:`Riccardo Cappuzzo<rcap107>`.
174+
175+
- The ``tabular_learner`` function has been deprecated in favor of :func:`tabular_pipeline` to honor
176+
its scikit-learn pipeline cultural heritage, and remove the ambiguity with the data
177+
ops Learner. :pr:`1493` by :user:`Vincent Maladiere <Vincent-Maladiere>`.
53178

54179
- :class:`StringEncoder` now exposes the ``stop_words`` argument, which is passed to the
55180
underlying vectorizer (:class:`~sklearn.feature_extraction.text.TfidfVectorizer`,
@@ -63,20 +188,26 @@ Changes
63188
- The `packaging` dependency was removed.
64189
:pr:`1307` by :user:`Jovan Stojanovic <jovan-stojanovic>`
65190

191+
- :class:`TextEncoder`, :class:`StringEncoder` and :class:`GapEncoder` now compute the
192+
total standard deviation norm during training, which is a global constant, and
193+
normalize the vector outputs by performing element-wise division on all entries.
194+
:pr:`1274` by :user:`Vincent Maladiere <Vincent-Maladiere>`.
195+
66196
- The :class:`DropIfTooManyNulls` transformer has been replaced by the
67197
:class:`DropUninformative` transformer and will be removed in a future release.
68198
:pr:`1313` by :user:`Riccardo Cappuzzo<rcap107>`
69199

70200
- The :func:`concat_horizontal` function was replaced with :func:`concat`. Horizontal or vertical concatenation
71201
is now controlled by the `axis` parameter. :pr:`1334` by :user:`Parasa V Prajwal <pvprajwal>`.
202+
72203
- The :class:`TableVectorizer` and :class:`Cleaner` now accept a `datetime_format`
73204
parameter for specifying the format to use when parsing datetime columns.
74205
:pr:`1358` by :user:`Riccardo Cappuzzo<rcap107>`.
75206

76207
- The :class:`SimpleCleaner` has been removed. use :class:`Cleaner` instead. :pr:`1370` by :user:`Riccardo Cappuzzo<rcap107>`.
77208

78209
- The periodic encoding for the ``day_in_year`` has been removed from the :class:`DatetimeEncoder` as it was
79-
redundant. The feature itself is still added if the flag is set to True. :pr:`1396` by :user:`Riccardo Cappuzzo<rcap107>`.
210+
redundant. The feature itself is still added if the flag is set to ``True``. :pr:`1396` by :user:`Riccardo Cappuzzo<rcap107>`.
80211

81212
- The naming scheme used for the features generated by :class:`TextEncoder`, :class:`StringEncoder`, :class:`MinHashEncoder`,
82213
:class:`DatetimeEncoder` has been standardized. Now features generated by all encoders have indices in the range
@@ -88,17 +219,30 @@ Changes
88219

89220
- The :class:`TableReport` now supports Series in addition to Dataframes. :pr:`1420` by :user:`Vitor Pohlenz<vitorpohlenz>`.
90221

91-
- The :class:`Cleaner` now exposes a parameter to convert numerical values to float32. :pr:`1440` by
222+
- The :class:`Cleaner` now exposes a parameter to convert numeric values to float32. :pr:`1440` by
92223
:user:`Riccardo Cappuzzo<rcap107>`.
93224

94-
- A new parameter ``float_precision`` has been added to the global config to control the number of significant digits
95-
displayed for floating-point values in reports. :pr:`1470` by :user:`George S <georgescutelnicu>`.
225+
- The :class:`TableReport` now shows if columns are sorted. :pr:`1512` by :user:`Dea María Léon<DeaMariaLeon>`.
226+
96227

97228
Bugfixes
98229
--------
99230
- Fixed a bug that caused the :class:`StringEncoder` and :class:`TextEncoder` to raise an exception if the
100231
input column was a Categorical datatype. :pr:`1401` by :user:`Riccardo Cappuzzo<rcap107>`.
101232

233+
Documentation
234+
-------------
235+
A large number of improvements to the examples, docstrings, and the documentation
236+
website have been made. Contributors include :user:`Vincent Maladiere <Vincent-Maladiere>`,
237+
:user:`Riccardo Cappuzzo<rcap107>`, :user:`Jérôme Dockès <jeromedockes>`,
238+
:user:`Gael Varoquaux <gaelvaroquaux>`, :user:`Gabriela Gómez Jiménez <gabrielapgomezji>`,
239+
:user:`Sylvain Combettes <sylvaincom>`, :user:`Frits Hermans <fritshermans>`,
240+
:user:`Vitor Pohlenz <vitorpohlenz>`, :user:`Arturo Amor Quiroz <ArturoAmorQ>`,
241+
:user:`Marie Sacksick <MarieSacksick>`, :user:`Emilien Battel <emilienbattel09>`,
242+
:user:`George El Haber <gmhaber>`, :user:`Antoine Canaguier-Durand <canag>`, and
243+
:user:`Lionel Kusch <lionelkusch>`.
244+
245+
102246
Release 0.5.4
103247
=============
104248

@@ -205,8 +349,8 @@ Release 0.4.1
205349

206350
Changes
207351
-------
208-
* :class: `TableReport` has `write_html` method
209-
:pr:`1190` by :user:`Mojdeh Rastgoo<mrastgoo>`.
352+
353+
* :class:`TableReport` has `write_html` method. :pr:`1190` by :user:`Mojdeh Rastgoo<mrastgoo>`.
210354

211355
* A new parameter ``verbose`` has been added to the :class:`TableReport` to toggle on or off the
212356
printing of progress information when a report is being generated.
@@ -674,7 +818,7 @@ Minor changes
674818
- `check_is_fitted` now looks at `"transformers_"` rather than `"columns_"`
675819
- the default of the `remainder` parameter in the docstring is now `"passthrough"`
676820
instead of `"drop"` to match the implementation.
677-
- uint8 and int8 dtypes are now considered as numerical columns.
821+
- uint8 and int8 dtypes are now considered as numeric columns.
678822

679823
* Removed the leading "<" and trailing ">" symbols from KEN entities
680824
and types.
@@ -724,10 +868,10 @@ Dirty-cat release 0.4.1
724868

725869
Major changes
726870
-------------
727-
* :func:`fuzzy_join` and :class:`FeatureAugmenter` can now join on numerical columns based on the euclidean distance.
871+
* :func:`fuzzy_join` and :class:`FeatureAugmenter` can now join on numeric columns based on the euclidean distance.
728872
:pr:`530` by :user:`Jovan Stojanovic <jovan-stojanovic>`
729873

730-
* :func:`fuzzy_join` and :class:`FeatureAugmenter` can perform many-to-many joins on lists of numerical or string key columns.
874+
* :func:`fuzzy_join` and :class:`FeatureAugmenter` can perform many-to-many joins on lists of numeric or string key columns.
731875
:pr:`530` by :user:`Jovan Stojanovic <jovan-stojanovic>`
732876

733877
* :func:`GapEncoder.transform` will not continue fitting of the instance anymore.
@@ -817,7 +961,7 @@ Dirty-cat Release 0.3.0
817961
Major changes
818962
-------------
819963

820-
* New encoder: :class:`DatetimeEncoder` can transform a datetime column into several numerical columns
964+
* New encoder: :class:`DatetimeEncoder` can transform a datetime column into several numeric columns
821965
(year, month, day, hour, minute, second, ...). It is now the default transformer used
822966
in the :class:`TableVectorizer` for datetime columns. :pr:`239` by :user:`Leo Grinsztajn <LeoGrin>`
823967

0 commit comments

Comments
 (0)