From 87ba88f01c9dd4d3b92fa4f79bb3d229e4a1508c Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Thu, 3 Feb 2022 19:01:12 +0100 Subject: [PATCH 1/4] whats new update --- doc/source/_static/style/df_pipe_applymap.png | Bin 0 -> 5809 bytes doc/source/_static/style/df_pipe_hl.png | Bin 0 -> 5485 bytes doc/source/_static/style/df_pipe_hl2.png | Bin 0 -> 6432 bytes pandas/io/formats/style.py | 86 ++++++++++++++---- 4 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 doc/source/_static/style/df_pipe_applymap.png create mode 100644 doc/source/_static/style/df_pipe_hl.png create mode 100644 doc/source/_static/style/df_pipe_hl2.png diff --git a/doc/source/_static/style/df_pipe_applymap.png b/doc/source/_static/style/df_pipe_applymap.png new file mode 100644 index 0000000000000000000000000000000000000000..cd493c78452ef03ad1954eee2b72b45565b45f66 GIT binary patch literal 5809 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 literal 0 HcmV?d00001 diff --git a/doc/source/_static/style/df_pipe_hl.png b/doc/source/_static/style/df_pipe_hl.png new file mode 100644 index 0000000000000000000000000000000000000000..2238a55ab1ce3e5bb9b3ff8a19b841547ee034d5 GIT binary patch literal 5485 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 literal 0 HcmV?d00001 diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index f97f558fd0e0b..6dd71271bc031 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -3509,41 +3509,87 @@ def pipe(self, func: Callable, *args, **kwargs): .. code-block:: python - f(g(df.style.set_precision(3), arg1=a), arg2=b, arg3=c) + f(g(df.style.format(precision=3), arg1=a), arg2=b, arg3=c) users can write: .. code-block:: python - (df.style.set_precision(3) + (df.style.format(precision=3) .pipe(g, arg1=a) .pipe(f, arg2=b, arg3=c)) In particular, this allows users to define functions that take a styler object, along with other parameters, and return the styler after making styling changes (such as calling :meth:`Styler.apply` or - :meth:`Styler.set_properties`). Using ``.pipe``, these user-defined - style "transformations" can be interleaved with calls to the built-in - Styler interface. + :meth:`Styler.set_properties`). Examples -------- - >>> def format_conversion(styler): - ... return (styler.set_properties(**{'text-align': 'right'}) - ... .format({'conversion': '{:.1%}'})) - - The user-defined ``format_conversion`` function above can be called - within a sequence of other style modifications: - - >>> df = pd.DataFrame({'trial': list(range(5)), - ... 'conversion': [0.75, 0.85, np.nan, 0.7, 0.72]}) - >>> (df.style - ... .highlight_min(subset=['conversion'], color='yellow') - ... .pipe(format_conversion) - ... .set_caption("Results with minimum conversion highlighted.")) - ... # doctest: +SKIP - .. figure:: ../../_static/style/df_pipe.png + **Common Use** + + The most common usage pattern may be to pre-define styling operations which + can be easily applied to a generic styler in a single ``pipe`` call. + + >>> def some_highlights(styler, min_color="red", max_color="blue"): + ... styler.highlight_min(color=min_color, axis=None) + ... styler.highlight_max(color=max_color, axis=None) + ... styler.highlight_null() + ... return styler + >>> df = pd.DataFrame([[1, 2, 3, pd.NA], [pd.NA, 4, 5, 6]], dtype="Int64") + >>> df.style.pipe(some_highlights, min_color="green") # doctest: +SKIP + + .. figure:: ../../_static/style/df_pipe_hl.png + + Since the method returns a ``Styler`` object it can be chained with other + methods as if applying the underlying highlighters directly. + + >>> df.style.format("{:.1f}")\ + ... .pipe(some_highlights, min_color="green") + ... .highlight_between(left=2, right=3) # doctest: +SKIP + + .. figure:: ../../_static/style/df_pipe_hl2.png + + **Advanced Use** + + Sometimes it may be necessary to pre-define styling functions, but in the case + where those functions rely on the styler, or data, context. Since + ``Styler.use`` and ``Styler.export`` are designed to be non-data dependent, + they cannot be used for this purpose. Additionally the ``Styler.apply`` + and ``Styler.format`` type methods are not context aware, so a solution + is to use ``pipe`` to dynamically wrap this functionality. + + Suppose we want to code a generic styling function that highlights the final + level of a MultiIndex. The number of levels in the Index is dynamic so we + need the ``Styler`` context to define the level. + + >>> def highlight_last_level(styler): + ... return styler.apply_index( + ... lambda v: "background-color: pink; color: yellow", axis="columns", + ... level=styler.columns.nlevels-1 + ... ) # doctest: +SKIP + >>> df.columns = pd.MultiIndex.from_product([["A", "B"], ["X", "Y"]]) + >>> df.style.pipe(highlight_last_level) # doctest: +SKIP + + .. figure:: ../../_static/style/df_pipe_applymap.png + + Additionally suppose we want to align column headers based on datatype. + In this case we need the data object itself to determine the effect on the + column headers. + + ### this does not work because pd.NA not classed as numeric in object type + >>> def align_header(styler): + ... from pandas.api.types import is_numeric_dtype + ... def dynamic_align(s): + ... return np.where( + ... styler.data.apply(is_numeric_dtype, axis=0), + ... "text-align: right;", + ... "text-align: left;" + ... ) + ... return styler.apply_index(dynamic_align, axis=1) + >>> df.style.pipe(align_header) # doctest: +SKIP + """ return com.pipe(self, func, *args, **kwargs) From f7e096c721407d8a6350bce4a63857a40bdb68a6 Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Tue, 8 Feb 2022 19:17:00 +0100 Subject: [PATCH 2/4] data obj example --- .../_static/style/df_pipe_applydata.png | Bin 0 -> 5981 bytes pandas/io/formats/style.py | 23 +++++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 doc/source/_static/style/df_pipe_applydata.png diff --git a/doc/source/_static/style/df_pipe_applydata.png b/doc/source/_static/style/df_pipe_applydata.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d5aa514e31159f62318d5ae82732652eadec61 GIT binary patch literal 5981 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 literal 0 HcmV?d00001 diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index bb1af4acd9c3a..d72f044030e5e 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -3545,9 +3545,9 @@ def pipe(self, func: Callable, *args, **kwargs): Since the method returns a ``Styler`` object it can be chained with other methods as if applying the underlying highlighters directly. - >>> df.style.format("{:.1f}")\ + >>> df.style.format("{:.1f}") ... .pipe(some_highlights, min_color="green") - ... .highlight_between(left=2, right=3) # doctest: +SKIP + ... .highlight_between(left=2, right=5) # doctest: +SKIP .. figure:: ../../_static/style/df_pipe_hl2.png @@ -3574,21 +3574,20 @@ def pipe(self, func: Callable, *args, **kwargs): .. figure:: ../../_static/style/df_pipe_applymap.png - Additionally suppose we want to align column headers based on datatype. + Additionally suppose we want to highlight a column header if there is any + missing data in that column. In this case we need the data object itself to determine the effect on the column headers. - ### this does not work because pd.NA not classed as numeric in object type - >>> def align_header(styler): - ... from pandas.api.types import is_numeric_dtype - ... def dynamic_align(s): + >>> def highlight_header_missing(styler, level): + ... def dynamic_highlight(s): ... return np.where( - ... styler.data.apply(is_numeric_dtype, axis=0), - ... "text-align: right;", - ... "text-align: left;" + ... styler.data.isna().any(), "background-color: red;", "" ... ) - ... return styler.apply_index(dynamic_align, axis=1) - >>> df.style.pipe(align_header) # doctest: +SKIP + ... return styler.apply_index(dynamic_highlight, axis=1, level=level) + >>> df.style.pipe(highlight_header_missing, level=1) # doctest: +SKIP + + .. figure:: ../../_static/style/df_pipe_applydata.png """ return com.pipe(self, func, *args, **kwargs) From 676fa0e21e8dfc719a8a28ec222a8ca3a47be4a8 Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Tue, 8 Feb 2022 19:46:35 +0100 Subject: [PATCH 3/4] fix style --- pandas/io/formats/style.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index d72f044030e5e..787f8f1c3ccd0 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -3588,7 +3588,6 @@ def pipe(self, func: Callable, *args, **kwargs): >>> df.style.pipe(highlight_header_missing, level=1) # doctest: +SKIP .. figure:: ../../_static/style/df_pipe_applydata.png - """ return com.pipe(self, func, *args, **kwargs) From bd7991f3de5ccf80876b44c25fba47ca1533c5d8 Mon Sep 17 00:00:00 2001 From: "JHM Darbyshire (iMac)" Date: Tue, 8 Feb 2022 22:00:26 +0100 Subject: [PATCH 4/4] req chngs --- pandas/io/formats/style.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index 787f8f1c3ccd0..9d0b213e44671 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -3529,7 +3529,7 @@ def pipe(self, func: Callable, *args, **kwargs): **Common Use** - The most common usage pattern may be to pre-define styling operations which + A common usage pattern is to pre-define styling operations which can be easily applied to a generic styler in a single ``pipe`` call. >>> def some_highlights(styler, min_color="red", max_color="blue"): @@ -3554,7 +3554,7 @@ def pipe(self, func: Callable, *args, **kwargs): **Advanced Use** Sometimes it may be necessary to pre-define styling functions, but in the case - where those functions rely on the styler, or data, context. Since + where those functions rely on the styler, data or context. Since ``Styler.use`` and ``Styler.export`` are designed to be non-data dependent, they cannot be used for this purpose. Additionally the ``Styler.apply`` and ``Styler.format`` type methods are not context aware, so a solution