Skip to content

Commit e5aad1a

Browse files
jbrockmendeljreback
authored andcommitted
Define Series.plot and Series.hist in class definition (#17199)
1 parent 3c833db commit e5aad1a

File tree

4 files changed

+25
-23
lines changed

4 files changed

+25
-23
lines changed

pandas/core/series.py

+13-14
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@
7676
from pandas._libs import index as libindex, tslib as libts, lib, iNaT
7777
from pandas.core.config import get_option
7878

79+
import pandas.plotting._core as gfx
80+
7981
__all__ = ['Series']
8082

8183
_shared_doc_kwargs = dict(
@@ -2952,12 +2954,23 @@ def _dir_additions(self):
29522954
pass
29532955
return rv
29542956

2957+
# ----------------------------------------------------------------------
2958+
# Add plotting methods to Series
2959+
plot = base.AccessorProperty(gfx.SeriesPlotMethods,
2960+
gfx.SeriesPlotMethods)
2961+
hist = gfx.hist_series
2962+
29552963

29562964
Series._setup_axes(['index'], info_axis=0, stat_axis=0, aliases={'rows': 0})
29572965
Series._add_numeric_operations()
29582966
Series._add_series_only_operations()
29592967
Series._add_series_or_dataframe_operations()
29602968

2969+
# Add arithmetic!
2970+
ops.add_flex_arithmetic_methods(Series, **ops.series_flex_funcs)
2971+
ops.add_special_arithmetic_methods(Series, **ops.series_special_funcs)
2972+
2973+
29612974
# -----------------------------------------------------------------------------
29622975
# Supplementary functions
29632976

@@ -3129,17 +3142,3 @@ def create_from_value(value, index, dtype):
31293142
subarr = np.array(data, dtype=object, copy=copy)
31303143

31313144
return subarr
3132-
3133-
3134-
# ----------------------------------------------------------------------
3135-
# Add plotting methods to Series
3136-
3137-
import pandas.plotting._core as _gfx # noqa
3138-
3139-
Series.plot = base.AccessorProperty(_gfx.SeriesPlotMethods,
3140-
_gfx.SeriesPlotMethods)
3141-
Series.hist = _gfx.hist_series
3142-
3143-
# Add arithmetic!
3144-
ops.add_flex_arithmetic_methods(Series, **ops.series_flex_funcs)
3145-
ops.add_special_arithmetic_methods(Series, **ops.series_special_funcs)

pandas/plotting/_converter.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
is_period_arraylike,
1919
is_nested_list_like
2020
)
21+
from pandas.core.dtypes.generic import ABCSeries
2122

2223
from pandas.compat import lrange
2324
import pandas.compat as compat
2425
import pandas._libs.lib as lib
2526
import pandas.core.common as com
2627
from pandas.core.index import Index
2728

28-
from pandas.core.series import Series
2929
from pandas.core.indexes.datetimes import date_range
3030
import pandas.core.tools.datetimes as tools
3131
import pandas.tseries.frequencies as frequencies
@@ -175,7 +175,7 @@ def _dt_to_float_ordinal(dt):
175175
preserving hours, minutes, seconds and microseconds. Return value
176176
is a :func:`float`.
177177
"""
178-
if (isinstance(dt, (np.ndarray, Index, Series)
178+
if (isinstance(dt, (np.ndarray, Index, ABCSeries)
179179
) and is_datetime64_ns_dtype(dt)):
180180
base = dates.epoch2num(dt.asi8 / 1.0E9)
181181
else:

pandas/plotting/_core.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818
is_number,
1919
is_hashable,
2020
is_iterator)
21+
from pandas.core.dtypes.generic import ABCSeries
22+
2123
from pandas.core.common import AbstractMethodError, _try_sort
2224
from pandas.core.generic import _shared_docs, _shared_doc_kwargs
2325
from pandas.core.index import Index, MultiIndex
24-
from pandas.core.series import Series
26+
2527
from pandas.core.indexes.period import PeriodIndex
2628
from pandas.compat import range, lrange, map, zip, string_types
2729
import pandas.compat as compat
@@ -334,7 +336,7 @@ def result(self):
334336
def _compute_plot_data(self):
335337
data = self.data
336338

337-
if isinstance(data, Series):
339+
if isinstance(data, ABCSeries):
338340
label = self.label
339341
if label is None and data.name is None:
340342
label = 'None'
@@ -1575,6 +1577,7 @@ def maybe_color_bp(self, bp):
15751577

15761578
def _make_plot(self):
15771579
if self.subplots:
1580+
from pandas.core.series import Series
15781581
self._return_obj = Series()
15791582

15801583
for i, (label, y) in enumerate(self._iter_data()):
@@ -2338,6 +2341,7 @@ def boxplot_frame_groupby(grouped, subplots=True, column=None, fontsize=None,
23382341
figsize=figsize, layout=layout)
23392342
axes = _flatten(axes)
23402343

2344+
from pandas.core.series import Series
23412345
ret = Series()
23422346
for (key, group), ax in zip(grouped, axes):
23432347
d = group.boxplot(ax=ax, column=column, fontsize=fontsize,
@@ -2409,7 +2413,6 @@ def _grouped_plot_by_column(plotf, data, columns=None, by=None,
24092413

24102414
_axes = _flatten(axes)
24112415

2412-
result = Series()
24132416
ax_values = []
24142417

24152418
for i, col in enumerate(columns):
@@ -2422,6 +2425,7 @@ def _grouped_plot_by_column(plotf, data, columns=None, by=None,
24222425
ax_values.append(re_plotf)
24232426
ax.grid(grid)
24242427

2428+
from pandas.core.series import Series
24252429
result = Series(ax_values, index=columns)
24262430

24272431
# Return axes in multiplot case, maybe revisit later # 985

pandas/plotting/_tools.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import numpy as np
99

1010
from pandas.core.dtypes.common import is_list_like
11+
from pandas.core.dtypes.generic import ABCSeries
1112
from pandas.core.index import Index
12-
from pandas.core.series import Series
1313
from pandas.compat import range
1414

1515

@@ -25,8 +25,7 @@ def format_date_labels(ax, rot):
2525
pass
2626

2727

28-
def table(ax, data, rowLabels=None, colLabels=None,
29-
**kwargs):
28+
def table(ax, data, rowLabels=None, colLabels=None, **kwargs):
3029
"""
3130
Helper function to convert DataFrame and Series to matplotlib.table
3231
@@ -45,7 +44,7 @@ def table(ax, data, rowLabels=None, colLabels=None,
4544
matplotlib table object
4645
"""
4746
from pandas import DataFrame
48-
if isinstance(data, Series):
47+
if isinstance(data, ABCSeries):
4948
data = DataFrame(data, columns=[data.name])
5049
elif isinstance(data, DataFrame):
5150
pass

0 commit comments

Comments
 (0)