Skip to content

Commit 50ab764

Browse files
topper-123alanbato
authored andcommitted
DOC: Improved doc string for IntervalIndex + related changes (pandas-dev#17706)
1 parent 32338e4 commit 50ab764

File tree

2 files changed

+96
-18
lines changed

2 files changed

+96
-18
lines changed

pandas/_libs/interval.pyx

+4
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ cdef class Interval(IntervalMixin):
5858
closed : {'left', 'right', 'both', 'neither'}
5959
Whether the interval is closed on the left-side, right-side, both or
6060
neither. Defaults to 'right'.
61+
62+
See Also
63+
--------
64+
IntervalIndex : an Index of intervals that are all closed on the same side.
6165
"""
6266

6367
cdef readonly object left, right

pandas/core/indexes/interval.py

+92-18
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,42 @@ class IntervalIndex(IntervalMixin, Index):
120120
copy : boolean, default False
121121
Copy the meta-data
122122
123+
Examples
124+
---------
125+
A new ``IntervalIndex`` is typically constructed using
126+
:func:`interval_range`:
127+
128+
>>> pd.interval_range(start=0, end=5)
129+
IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]]
130+
closed='right', dtype='interval[int64]')
131+
132+
It may also be constructed using one of the constructor
133+
methods :meth:`IntervalIndex.from_arrays`,
134+
:meth:`IntervalIndex.from_breaks`, :meth:`IntervalIndex.from_intervals`
135+
and :meth:`IntervalIndex.from_tuples`.
136+
137+
See further examples in the doc strings of ``interval_range`` and the
138+
mentioned constructor methods.
139+
140+
Notes
141+
------
142+
See the `user guide
143+
<http://pandas.pydata.org/pandas-docs/stable/advanced.html#intervalindex>`_
144+
for more.
145+
123146
See Also
124147
--------
125148
Index
149+
Interval : A bounded slice-like interval
150+
interval_range : Function to create a fixed frequency IntervalIndex
151+
IntervalIndex.from_arrays : Construct an IntervalIndex from a left and
152+
right array
153+
IntervalIndex.from_breaks : Construct an IntervalIndex from an array of
154+
splits
155+
IntervalIndex.from_intervals : Construct an IntervalIndex from an array of
156+
Interval objects
157+
IntervalIndex.from_tuples : Construct an IntervalIndex from a list/array of
158+
tuples
126159
"""
127160
_typ = 'intervalindex'
128161
_comparables = ['name']
@@ -319,11 +352,20 @@ def from_breaks(cls, breaks, closed='right', name=None, copy=False):
319352
320353
Examples
321354
--------
355+
>>> pd.IntervalIndex.from_breaks([0, 1, 2, 3])
356+
IntervalIndex([(0, 1], (1, 2], (2, 3]]
357+
closed='right',
358+
dtype='interval[int64]')
322359
323-
>>> IntervalIndex.from_breaks([0, 1, 2, 3])
324-
IntervalIndex(left=[0, 1, 2],
325-
right=[1, 2, 3],
326-
closed='right')
360+
See Also
361+
--------
362+
interval_range : Function to create a fixed frequency IntervalIndex
363+
IntervalIndex.from_arrays : Construct an IntervalIndex from a left and
364+
right array
365+
IntervalIndex.from_intervals : Construct an IntervalIndex from an array
366+
of Interval objects
367+
IntervalIndex.from_tuples : Construct an IntervalIndex from a
368+
list/array of tuples
327369
"""
328370
breaks = np.asarray(breaks)
329371
return cls.from_arrays(breaks[:-1], breaks[1:], closed,
@@ -350,11 +392,20 @@ def from_arrays(cls, left, right, closed='right', name=None, copy=False):
350392
351393
Examples
352394
--------
395+
>>> pd.IntervalIndex.from_arrays([0, 1, 2], [1, 2, 3])
396+
IntervalIndex([(0, 1], (1, 2], (2, 3]]
397+
closed='right',
398+
dtype='interval[int64]')
353399
354-
>>> IntervalIndex.from_arrays([0, 1, 2], [1, 2, 3])
355-
IntervalIndex(left=[0, 1, 2],
356-
right=[1, 2, 3],
357-
closed='right')
400+
See Also
401+
--------
402+
interval_range : Function to create a fixed frequency IntervalIndex
403+
IntervalIndex.from_breaks : Construct an IntervalIndex from an array of
404+
splits
405+
IntervalIndex.from_intervals : Construct an IntervalIndex from an array
406+
of Interval objects
407+
IntervalIndex.from_tuples : Construct an IntervalIndex from a
408+
list/array of tuples
358409
"""
359410
left = np.asarray(left)
360411
right = np.asarray(right)
@@ -378,19 +429,27 @@ def from_intervals(cls, data, name=None, copy=False):
378429
379430
Examples
380431
--------
381-
382-
>>> IntervalIndex.from_intervals([Interval(0, 1), Interval(1, 2)])
383-
IntervalIndex(left=[0, 1],
384-
right=[1, 2],
385-
closed='right')
432+
>>> pd.IntervalIndex.from_intervals([pd.Interval(0, 1),
433+
... pd.Interval(1, 2)])
434+
IntervalIndex([(0, 1], (1, 2]]
435+
closed='right', dtype='interval[int64]')
386436
387437
The generic Index constructor work identically when it infers an array
388438
of all intervals:
389439
390-
>>> Index([Interval(0, 1), Interval(1, 2)])
391-
IntervalIndex(left=[0, 1],
392-
right=[1, 2],
393-
closed='right')
440+
>>> pd.Index([pd.Interval(0, 1), pd.Interval(1, 2)])
441+
IntervalIndex([(0, 1], (1, 2]]
442+
closed='right', dtype='interval[int64]')
443+
444+
See Also
445+
--------
446+
interval_range : Function to create a fixed frequency IntervalIndex
447+
IntervalIndex.from_arrays : Construct an IntervalIndex from a left and
448+
right array
449+
IntervalIndex.from_breaks : Construct an IntervalIndex from an array of
450+
splits
451+
IntervalIndex.from_tuples : Construct an IntervalIndex from a
452+
list/array of tuples
394453
"""
395454
data = np.asarray(data)
396455
left, right, closed = intervals_to_interval_bounds(data)
@@ -415,7 +474,19 @@ def from_tuples(cls, data, closed='right', name=None, copy=False):
415474
416475
Examples
417476
--------
477+
>>> pd.IntervalIndex.from_tuples([(0, 1), (1,2)])
478+
IntervalIndex([(0, 1], (1, 2]],
479+
closed='right', dtype='interval[int64]')
418480
481+
See Also
482+
--------
483+
interval_range : Function to create a fixed frequency IntervalIndex
484+
IntervalIndex.from_arrays : Construct an IntervalIndex from a left and
485+
right array
486+
IntervalIndex.from_breaks : Construct an IntervalIndex from an array of
487+
splits
488+
IntervalIndex.from_intervals : Construct an IntervalIndex from an array
489+
of Interval objects
419490
"""
420491
left = []
421492
right = []
@@ -1121,7 +1192,6 @@ def interval_range(start=None, end=None, periods=None, freq=None,
11211192
11221193
Examples
11231194
--------
1124-
11251195
Numeric ``start`` and ``end`` is supported.
11261196
11271197
>>> pd.interval_range(start=0, end=5)
@@ -1159,6 +1229,10 @@ def interval_range(start=None, end=None, periods=None, freq=None,
11591229
>>> pd.interval_range(end=5, periods=4, closed='both')
11601230
IntervalIndex([[1, 2], [2, 3], [3, 4], [4, 5]]
11611231
closed='both', dtype='interval[int64]')
1232+
1233+
See Also
1234+
--------
1235+
IntervalIndex : an Index of intervals that are all closed on the same side.
11621236
"""
11631237
if com._count_not_none(start, end, periods) != 2:
11641238
raise ValueError('Of the three parameters: start, end, and periods, '

0 commit comments

Comments
 (0)