Skip to content

Commit 69b5bde

Browse files
jbrockmendelalanbato
authored andcommitted
Define Series.plot and Series.hist in class definition (pandas-dev#17199)
1 parent 4cb9b20 commit 69b5bde

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(
@@ -2954,12 +2956,23 @@ def _dir_additions(self):
29542956
pass
29552957
return rv
29562958

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

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

2971+
# Add arithmetic!
2972+
ops.add_flex_arithmetic_methods(Series, **ops.series_flex_funcs)
2973+
ops.add_special_arithmetic_methods(Series, **ops.series_special_funcs)
2974+
2975+
29632976
# -----------------------------------------------------------------------------
29642977
# Supplementary functions
29652978

@@ -3131,17 +3144,3 @@ def create_from_value(value, index, dtype):
31313144
subarr = np.array(data, dtype=object, copy=copy)
31323145

31333146
return subarr
3134-
3135-
3136-
# ----------------------------------------------------------------------
3137-
# Add plotting methods to Series
3138-
3139-
import pandas.plotting._core as _gfx # noqa
3140-
3141-
Series.plot = base.AccessorProperty(_gfx.SeriesPlotMethods,
3142-
_gfx.SeriesPlotMethods)
3143-
Series.hist = _gfx.hist_series
3144-
3145-
# Add arithmetic!
3146-
ops.add_flex_arithmetic_methods(Series, **ops.series_flex_funcs)
3147-
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)