Skip to content

Commit 688cacd

Browse files
committed
DOC: fix up whatsnew
1 parent 75125e1 commit 688cacd

File tree

2 files changed

+91
-94
lines changed

2 files changed

+91
-94
lines changed

doc/source/release.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,23 @@ analysis / manipulation tool available in any language.
4545
* Binary installers on PyPI: http://pypi.python.org/pypi/pandas
4646
* Documentation: http://pandas.pydata.org
4747

48+
pandas 0.17.0
49+
-------------
50+
51+
**Release date:** (September ??, 2015)
52+
53+
This is a major release from 0.16.2 and includes a small number of API changes, several new features,
54+
enhancements, and performance improvements along with a large number of bug fixes. We recommend that all
55+
users upgrade to this version.
56+
57+
Highlights include:
58+
59+
See the :ref:`v0.17.0 Whatsnew <whatsnew_0170>` overview for an extensive list
60+
of all enhancements and bugs that have been fixed in 0.17.0.
61+
62+
Thanks
63+
~~~~~~
64+
4865
pandas 0.16.2
4966
-------------
5067

doc/source/whatsnew/v0.17.0.txt

Lines changed: 74 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.. _whatsnew_0170:
22

3-
v0.17.0 (???)
4-
-------------
3+
v0.17.0 (September ??, 2015)
4+
----------------------------
55

66
This is a major release from 0.16.2 and includes a small number of API changes, several new features,
77
enhancements, and performance improvements along with a large number of bug fixes. We recommend that all
@@ -232,24 +232,22 @@ Backwards incompatible API changes
232232
Changes to sorting API
233233
^^^^^^^^^^^^^^^^^^^^^^
234234

235-
The sorting API has had some longtime inconsistencies. (:issue:`9816`,:issue:`8239`).
235+
The sorting API has had some longtime inconsistencies. (:issue:`9816`, :issue:`8239`).
236236

237-
Here is a summary of the **prior** to 0.17.0 API
237+
Here is a summary of the **PRIOR** to 0.17.0:
238238

239239
- ``Series.sort`` is **INPLACE** while ``DataFrame.sort`` returns a new object.
240-
- ``Series.order`` returned a new object
240+
- ``Series.order`` returns a new object
241241
- It was possible to use ``Series/DataFrame.sort_index`` to sort by **values** by passing the ``by`` keyword.
242242
- ``Series/DataFrame.sortlevel`` worked only on a ``MultiIndex`` for sorting by index.
243243

244244
To address these issues, we have revamped the API:
245245

246246
- We have introduced a new method, :meth:`DataFrame.sort_values`, which is the merger of ``DataFrame.sort()``, ``Series.sort()``,
247-
and ``Series.order``, to handle sorting of **values**.
248-
- The existing method ``Series.sort()`` has been deprecated and will be removed in a
247+
and ``Series.order()``, to handle sorting of **values**.
248+
- The existing methods ``Series.sort()``, ``Series.order()``, and ``DataFrame.sort()`` has been deprecated and will be removed in a
249249
future version of pandas.
250250
- The ``by`` argument of ``DataFrame.sort_index()`` has been deprecated and will be removed in a future version of pandas.
251-
- The methods ``DataFrame.sort()``, ``Series.order()``, will not be recommended to use and will carry a deprecation warning
252-
in the doc-string.
253251
- The existing method ``.sort_index()`` will gain the ``level`` keyword to enable level sorting.
254252

255253
We now have two distinct and non-overlapping methods of sorting. A ``*`` marks items that
@@ -260,9 +258,9 @@ To sort by the **values**:
260258
================================= ====================================
261259
Previous Replacement
262260
================================= ====================================
263-
\*``Series.order()`` ``Series.sort_values()``
264-
\*``Series.sort()`` ``Series.sort_values(inplace=True)``
265-
\*``DataFrame.sort(columns=...)`` ``DataFrame.sort_values(by=...)``
261+
\* ``Series.order()`` ``Series.sort_values()``
262+
\* ``Series.sort()`` ``Series.sort_values(inplace=True)``
263+
\* ``DataFrame.sort(columns=...)`` ``DataFrame.sort_values(by=...)``
266264
================================= ====================================
267265

268266
To sort by the **index**:
@@ -274,16 +272,16 @@ Previous Equivalent
274272
``Series.sortlevel(level=...)`` ``Series.sort_index(level=...``)
275273
``DataFrame.sort_index()`` ``DataFrame.sort_index()``
276274
``DataFrame.sortlevel(level=...)`` ``DataFrame.sort_index(level=...)``
277-
\*``DataFrame.sort()`` ``DataFrame.sort_index()``
275+
\* ``DataFrame.sort()`` ``DataFrame.sort_index()``
278276
================================== ====================================
279277

280278
We have also deprecated and changed similar methods in two Series-like classes, ``Index`` and ``Categorical``.
281279

282280
================================== ====================================
283281
Previous Replacement
284282
================================== ====================================
285-
\*``Index.order()`` ``Index.sort_values()``
286-
\*``Categorical.order()`` ``Categorical.sort_values``
283+
\* ``Index.order()`` ``Index.sort_values()``
284+
\* ``Categorical.order()`` ``Categorical.sort_values``
287285
================================== ====================================
288286

289287
.. _whatsnew_0170.api_breaking.to_datetime:
@@ -334,7 +332,7 @@ Changes to convert_objects
334332
``DataFrame.convert_objects`` keyword arguments have been shortened. (:issue:`10265`)
335333

336334
===================== =============
337-
Old New
335+
Previous Replacement
338336
===================== =============
339337
``convert_dates`` ``datetime``
340338
``convert_numeric`` ``numeric``
@@ -392,7 +390,7 @@ in the method call.
392390
Changes to Index Comparisons
393391
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
394392

395-
Operator equal on Index should behavior similarly to Series (:issue:`9947`, :issue:`10637`)
393+
Operator equal on ``Index`` should behavior similarly to ``Series`` (:issue:`9947`, :issue:`10637`)
396394

397395
Starting in v0.17.0, comparing ``Index`` objects of different lengths will raise
398396
a ``ValueError``. This is to be consistent with the behavior of ``Series``.
@@ -410,19 +408,6 @@ Previous behavior:
410408
In [4]: pd.Index([1, 2, 3]) == pd.Index([1, 2])
411409
Out[4]: False
412410

413-
In [5]: pd.Series([1, 2, 3]) == pd.Series([1, 4, 5])
414-
Out[5]:
415-
0 True
416-
1 False
417-
2 False
418-
dtype: bool
419-
420-
In [6]: pd.Series([1, 2, 3]) == pd.Series([2])
421-
ValueError: Series lengths must match to compare
422-
423-
In [7]: pd.Series([1, 2, 3]) == pd.Series([1, 2])
424-
ValueError: Series lengths must match to compare
425-
426411
New behavior:
427412

428413
.. code-block:: python
@@ -436,19 +421,6 @@ New behavior:
436421
In [10]: pd.Index([1, 2, 3]) == pd.Index([1, 2])
437422
ValueError: Lengths must match to compare
438423

439-
In [11]: pd.Series([1, 2, 3]) == pd.Series([1, 4, 5])
440-
Out[11]:
441-
0 True
442-
1 False
443-
2 False
444-
dtype: bool
445-
446-
In [12]: pd.Series([1, 2, 3]) == pd.Series([2])
447-
ValueError: Series lengths must match to compare
448-
449-
In [13]: pd.Series([1, 2, 3]) == pd.Series([1, 2])
450-
ValueError: Series lengths must match to compare
451-
452424
Note that this is different from the ``numpy`` behavior where a comparison can
453425
be broadcast:
454426

@@ -522,7 +494,10 @@ Previously:
522494
.. code-block:: python
523495

524496
In [28]:
525-
df_with_missing.to_hdf('file.h5', 'df_with_missing', format='table', mode='w')
497+
df_with_missing.to_hdf('file.h5',
498+
'df_with_missing',
499+
format='table',
500+
mode='w')
526501

527502
pd.read_hdf('file.h5', 'df_with_missing')
528503

@@ -552,6 +527,8 @@ New behavior:
552527

553528
See :ref:`documentation <io.hdf5>` for more details.
554529

530+
.. _whatsnew_0170.api_breaking.display_precision:
531+
555532
Changes to ``display.precision`` option
556533
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
557534

@@ -588,6 +565,29 @@ from ``7``.
588565

589566
pd.set_option('display.precision', 6)
590567

568+
.. _whatsnew_0170.api_breaking.categorical_unique:
569+
570+
Changes to ``Categorical.unique``
571+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
572+
573+
``Categorical.unique`` now returns new ``Categorical`` which ``categories`` and ``codes`` that are unique, rather than returning ``np.array`` (:issue:`10508`)
574+
575+
- unordered category: values and categories are sorted by appearance order.
576+
- ordered category: values are sorted by appearance order, categories keeps existing order.
577+
578+
.. ipython :: python
579+
580+
cat = pd.Categorical(['C', 'A', 'B', 'C'],
581+
categories=['A', 'B', 'C'],
582+
ordered=True)
583+
cat
584+
cat.unique()
585+
586+
cat = pd.Categorical(['C', 'A', 'B', 'C'],
587+
categories=['A', 'B', 'C'])
588+
cat
589+
cat.unique()
590+
591591

592592
.. _whatsnew_0170.api_breaking.other:
593593

@@ -601,35 +601,17 @@ Other API Changes
601601
- Allow passing `kwargs` to the interpolation methods (:issue:`10378`).
602602
- Serialize metadata properties of subclasses of pandas objects (:issue:`10553`).
603603
- Allow ``DataFrame`` with ``MultiIndex`` columns to be written to Excel (:issue:`10564`). This was changed in 0.16.2 as the read-back method could not always guarantee perfect fidelity (:issue:`9794`).
604-
- ``Categorical.unique`` now returns new ``Categorical`` which ``categories`` and ``codes`` are unique, rather than returning ``np.array`` (:issue:`10508`)
605-
606-
- unordered category: values and categories are sorted by appearance order.
607-
- ordered category: values are sorted by appearance order, categories keeps existing order.
608-
609-
.. ipython :: python
610-
611-
cat = pd.Categorical(['C', 'A', 'B', 'C'],
612-
categories=['A', 'B', 'C'],
613-
ordered=True)
614-
cat
615-
cat.unique()
616-
617-
cat = pd.Categorical(['C', 'A', 'B', 'C'],
618-
categories=['A', 'B', 'C'])
619-
cat
620-
cat.unique()
621-
622604
- ``groupby`` using ``Categorical`` follows the same rule as ``Categorical.unique`` described above (:issue:`10508`)
623605
- ``NaT``'s methods now either raise ``ValueError``, or return ``np.nan`` or ``NaT`` (:issue:`9513`)
624606

625-
=============================== ===============================================================
626-
Behavior Methods
627-
=============================== ===============================================================
628-
``return np.nan`` ``weekday``, ``isoweekday``
629-
``return NaT`` ``date``, ``now``, ``replace``, ``to_datetime``, ``today``
630-
``return np.datetime64('NaT')`` ``to_datetime64`` (unchanged)
631-
``raise ValueError`` All other public methods (names not beginning with underscores)
632-
=============================== ===============================================================
607+
=============================== ===============================================================
608+
Behavior Methods
609+
=============================== ===============================================================
610+
``return np.nan`` ``weekday``, ``isoweekday``
611+
``return NaT`` ``date``, ``now``, ``replace``, ``to_datetime``, ``today``
612+
``return np.datetime64('NaT')`` ``to_datetime64`` (unchanged)
613+
``raise ValueError`` All other public methods (names not beginning with underscores)
614+
=============================== ===============================================================
633615

634616
- Improved error message when concatenating an empty iterable of dataframes (:issue:`9157`)
635617

@@ -680,35 +662,33 @@ Removal of prior version deprecations/changes
680662
- Removal of ``colSpace`` parameter from ``DataFrame.to_string()``, in favor of ``col_space``, circa 0.8.0 version.
681663
- Removal of automatic time-series broadcasting (:issue:`2304`)
682664

683-
.. ipython :: python
665+
.. ipython :: python
684666

685-
np.random.seed(1234)
686-
df = DataFrame(np.random.randn(5,2),columns=list('AB'),index=date_range('20130101',periods=5))
687-
df
667+
np.random.seed(1234)
668+
df = DataFrame(np.random.randn(5,2),columns=list('AB'),index=date_range('20130101',periods=5))
669+
df
688670

689-
Previously
671+
Previously
690672

691-
.. code-block:: python
673+
.. code-block:: python
692674

693-
In [3]: df + df.A
694-
FutureWarning: TimeSeries broadcasting along DataFrame index by default is deprecated.
695-
Please use DataFrame.<op> to explicitly broadcast arithmetic operations along the index
675+
In [3]: df + df.A
676+
FutureWarning: TimeSeries broadcasting along DataFrame index by default is deprecated.
677+
Please use DataFrame.<op> to explicitly broadcast arithmetic operations along the index
696678

697-
Out[3]:
679+
Out[3]:
698680
A B
699-
2013-01-01 0.942870 -0.719541
700-
2013-01-02 2.865414 1.120055
701-
2013-01-03 -1.441177 0.166574
702-
2013-01-04 1.719177 0.223065
703-
2013-01-05 0.031393 -2.226989
681+
2013-01-01 0.942870 -0.719541
682+
2013-01-02 2.865414 1.120055
683+
2013-01-03 -1.441177 0.166574
684+
2013-01-04 1.719177 0.223065
685+
2013-01-05 0.031393 -2.226989
704686

705-
Current
706-
707-
.. ipython :: python
708-
709-
df.add(df.A,axis='index')
687+
Current
710688

689+
.. ipython :: python
711690

691+
df.add(df.A,axis='index')
712692

713693

714694
- Remove ``table`` keyword in ``HDFStore.put/append``, in favor of using ``format=`` (:issue:`4645`)
@@ -747,7 +727,7 @@ Bug Fixes
747727
- Bug in ``pd.Series.interpolate`` with invalid ``order`` keyword values. (:issue:`10633`)
748728
- Bug in ``DataFrame.plot`` raises ``ValueError`` when color name is specified by multiple characters (:issue:`10387`)
749729
- Bug in ``Index`` construction with a mixed list of tuples (:issue:`10697`)
750-
- Bug in ``DataFrame.reset_index`` when index contains `NaT`. (:issue:`10388`)
730+
- Bug in ``DataFrame.reset_index`` when index contains ``NaT``. (:issue:`10388`)
751731
- Bug in ``ExcelReader`` when worksheet is empty (:issue:`6403`)
752732
- Bug in ``BinGrouper.group_info`` where returned values are not compatible with base class (:issue:`10914`)
753733
- Bug in clearing the cache on ``DataFrame.pop`` and a subsequent inplace op (:issue:`10912`)
@@ -758,10 +738,10 @@ Bug Fixes
758738
- Bug in ``offsets.generate_range`` where ``start`` and ``end`` have finer precision than ``offset`` (:issue:`9907`)
759739
- Bug in ``pd.rolling_*`` where ``Series.name`` would be lost in the output (:issue:`10565`)
760740
- Bug in ``stack`` when index or columns are not unique. (:issue:`10417`)
761-
- Bug in setting a Panel when an axis has a multi-index (:issue:`10360`)
741+
- Bug in setting a ``Panel`` when an axis has a multi-index (:issue:`10360`)
762742
- Bug in ``USFederalHolidayCalendar`` where ``USMemorialDay`` and ``USMartinLutherKingJr`` were incorrect (:issue:`10278` and :issue:`9760` )
763743
- Bug in ``.sample()`` where returned object, if set, gives unnecessary ``SettingWithCopyWarning`` (:issue:`10738`)
764-
- Bug in ``.sample()`` where weights passed as Series were not aligned along axis before being treated positionally, potentially causing problems if weight indices were not aligned with sampled object. (:issue:`10738`)
744+
- Bug in ``.sample()`` where weights passed as ``Series`` were not aligned along axis before being treated positionally, potentially causing problems if weight indices were not aligned with sampled object. (:issue:`10738`)
765745

766746

767747

@@ -832,4 +812,4 @@ Bug Fixes
832812
- Bug in ``read_msgpack`` where encoding is not respected (:issue:`10580`)
833813
- Bug preventing access to the first index when using ``iloc`` with a list containing the appropriate negative integer (:issue:`10547`, :issue:`10779`)
834814
- Bug in ``TimedeltaIndex`` formatter causing error while trying to save ``DataFrame`` with ``TimedeltaIndex`` using ``to_csv`` (:issue:`10833`)
835-
- BUG in ``DataFrame.where`` when handling Series slicing (:issue:`10218`, :issue:`9558`)
815+
- Bug in ``DataFrame.where`` when handling Series slicing (:issue:`10218`, :issue:`9558`)

0 commit comments

Comments
 (0)