From 81a7dc91ed60d314001ecea04f957f27061e2c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dea=20Mar=C3=ADa=20L=C3=A9on?= Date: Fri, 9 Jun 2023 16:47:05 +0200 Subject: [PATCH] Added examples --- ci/code_checks.sh | 8 ----- pandas/core/groupby/generic.py | 16 +++++++++ pandas/core/groupby/groupby.py | 64 ++++++++++++++++++++++++++++++++++ pandas/plotting/_core.py | 21 +++++++++++ 4 files changed, 101 insertions(+), 8 deletions(-) diff --git a/ci/code_checks.sh b/ci/code_checks.sh index 191e0d03b3a1a..1ce9eab9cdce7 100755 --- a/ci/code_checks.sh +++ b/ci/code_checks.sh @@ -264,24 +264,16 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then pandas.api.indexers.BaseIndexer \ pandas.api.indexers.VariableOffsetWindowIndexer \ pandas.core.groupby.DataFrameGroupBy.diff \ - pandas.core.groupby.DataFrameGroupBy.ffill \ pandas.core.groupby.DataFrameGroupBy.median \ - pandas.core.groupby.DataFrameGroupBy.ohlc \ pandas.core.groupby.DataFrameGroupBy.skew \ pandas.core.groupby.DataFrameGroupBy.std \ pandas.core.groupby.DataFrameGroupBy.var \ pandas.core.groupby.SeriesGroupBy.diff \ pandas.core.groupby.SeriesGroupBy.fillna \ - pandas.core.groupby.SeriesGroupBy.ffill \ pandas.core.groupby.SeriesGroupBy.median \ - pandas.core.groupby.SeriesGroupBy.nunique \ - pandas.core.groupby.SeriesGroupBy.ohlc \ pandas.core.groupby.SeriesGroupBy.skew \ pandas.core.groupby.SeriesGroupBy.std \ pandas.core.groupby.SeriesGroupBy.var \ - pandas.core.groupby.SeriesGroupBy.hist \ - pandas.core.groupby.DataFrameGroupBy.plot \ - pandas.core.groupby.SeriesGroupBy.plot \ pandas.io.formats.style.Styler \ pandas.io.formats.style.Styler.from_custom_template \ pandas.io.formats.style.Styler.set_caption \ diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index 3e4da10d8b25b..eef3de3e61f29 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -622,6 +622,22 @@ def nunique(self, dropna: bool = True) -> Series | DataFrame: ------- Series Number of unique values within each group. + + Examples + -------- + + >>> lst = ['a', 'a', 'b', 'b'] + >>> ser = pd.Series([1, 2, 3, 3], index=lst) + >>> ser + a 1 + a 2 + b 3 + b 3 + dtype: int64 + >>> ser.groupby(level=0).nunique() + a 2 + b 1 + dtype: int64 """ ids, _, _ = self.grouper.group_info diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index c372235481614..b890445aec2eb 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -2993,6 +2993,50 @@ def ohlc(self) -> DataFrame: ------- DataFrame Open, high, low and close values within each group. + + Examples + -------- + + For SeriesGroupBy: + + >>> lst = ['SPX', 'CAC', 'SPX', 'CAC', 'SPX', 'CAC', 'SPX', 'CAC',] + >>> ser = pd.Series([3.4, 9.0, 7.2, 5.2, 8.8, 9.4, 0.1, 0.5], index=lst) + >>> ser + SPX 3.4 + CAC 9.0 + SPX 7.2 + CAC 5.2 + SPX 8.8 + CAC 9.4 + SPX 0.1 + CAC 0.5 + dtype: float64 + >>> ser.groupby(level=0).ohlc() + open high low close + CAC 9.0 9.4 0.5 0.5 + SPX 3.4 8.8 0.1 0.1 + + For DataFrameGroupBy: + + >>> data = {2022: [1.2, 2.3, 8.9, 4.5, 4.4, 3, 2 , 1], + ... 2023: [3.4, 9.0, 7.2, 5.2, 8.8, 9.4, 8.2, 1.0]} + >>> df = pd.DataFrame(data, index=['SPX', 'CAC', 'SPX', 'CAC', + ... 'SPX', 'CAC', 'SPX', 'CAC']) + >>> df + 2022 2023 + SPX 1.2 3.4 + CAC 2.3 9.0 + SPX 8.9 7.2 + CAC 4.5 5.2 + SPX 4.4 8.8 + CAC 3.0 9.4 + SPX 2.0 8.2 + CAC 1.0 1.0 + >>> df.groupby(level=0).ohlc() + 2022 2023 + open high low close open high low close + CAC 2.3 4.5 1.0 1.0 9.0 9.4 1.0 1.0 + SPX 1.2 8.9 1.2 2.0 3.4 8.8 3.4 8.2 """ if self.obj.ndim == 1: obj = self._selected_obj @@ -3447,6 +3491,26 @@ def ffill(self, limit: int | None = None): Examples -------- + + For SeriesGroupBy: + + >>> key = [0, 0, 1, 1] + >>> ser = pd.Series([np.nan, 2, 3, np.nan], index=key) + >>> ser + 0 NaN + 0 2.0 + 1 3.0 + 1 NaN + dtype: float64 + >>> ser.groupby(level=0).ffill() + 0 NaN + 0 2.0 + 1 3.0 + 1 3.0 + dtype: float64 + + For DataFrameGroupBy: + >>> df = pd.DataFrame( ... { ... "key": [0, 0, 1, 1, 1], diff --git a/pandas/plotting/_core.py b/pandas/plotting/_core.py index 0f9fd948b6fe5..24b8816109677 100644 --- a/pandas/plotting/_core.py +++ b/pandas/plotting/_core.py @@ -98,6 +98,16 @@ def hist_series( See Also -------- matplotlib.axes.Axes.hist : Plot a histogram using matplotlib. + + Examples + -------- + + .. plot:: + :context: close-figs + + >>> lst = ['a', 'a', 'a', 'b', 'b', 'b'] + >>> ser = pd.Series([1, 2, 2, 4, 6, 6], index=lst) + >>> hist = ser.groupby(level=0).hist() """ plot_backend = _get_plot_backend(backend) return plot_backend.hist_series( @@ -778,12 +788,23 @@ class PlotAccessor(PandasObject): Examples -------- + For SeriesGroupBy: .. plot:: :context: close-figs >>> ser = pd.Series([1, 2, 3, 3]) >>> plot = ser.plot(kind='hist', title="My plot") + + For DataFrameGroupBy: + + .. plot:: + :context: close-figs + + >>> df = pd.DataFrame({'length': [1.5, 0.5, 1.2, 0.9, 3], + ... 'width': [0.7, 0.2, 0.15, 0.2, 1.1]}, + ... index=['pig', 'rabbit', 'duck', 'chicken', 'horse']) + >>> plot = df.plot() """ _common_kinds = ("line", "bar", "barh", "kde", "density", "area", "hist", "box")