Skip to content

Latest commit

 

History

History
187 lines (132 loc) · 8.51 KB

v0.21.1.rst

File metadata and controls

187 lines (132 loc) · 8.51 KB

Version 0.21.1 (December 12, 2017)

{{ header }}

.. ipython:: python
   :suppress:

   from pandas import *  # noqa F401, F403

This is a minor bug-fix release in the 0.21.x series and includes some small regression fixes, bug fixes and performance improvements. We recommend that all users upgrade to this version.

Highlights include:

Restore Matplotlib datetime converter registration

pandas implements some matplotlib converters for nicely formatting the axis labels on plots with datetime or Period values. Prior to pandas 0.21.0, these were implicitly registered with matplotlib, as a side effect of import pandas.

In pandas 0.21.0, we required users to explicitly register the converter. This caused problems for some users who relied on those converters being present for regular matplotlib.pyplot plotting methods, so we're temporarily reverting that change; pandas 0.21.1 again registers the converters on import, just like before 0.21.0.

We've added a new option to control the converters: pd.options.plotting.matplotlib.register_converters. By default, they are registered. Toggling this to False removes pandas' formatters and restore any converters we overwrote when registering them (:issue:`18301`).

We're working with the matplotlib developers to make this easier. We're trying to balance user convenience (automatically registering the converters) with import performance and best practices (importing pandas shouldn't have the side effect of overwriting any custom converters you've already set). In the future we hope to have most of the datetime formatting functionality in matplotlib, with just the pandas-specific converters in pandas. We'll then gracefully deprecate the automatic registration of converters in favor of users explicitly registering them when they want them.

New features

Improvements to the Parquet IO functionality

Other enhancements

Deprecations

Performance improvements

  • Improved performance of plotting large series/dataframes (:issue:`18236`).

Bug fixes

Conversion

Indexing

  • Bug in a boolean comparison of a datetime.datetime and a datetime64[ns] dtype Series (:issue:`17965`)
  • Bug where a MultiIndex with more than a million records was not raising AttributeError when trying to access a missing attribute (:issue:`18165`)
  • Bug in :class:`IntervalIndex` constructor when a list of intervals is passed with non-default closed (:issue:`18334`)
  • Bug in Index.putmask when an invalid mask passed (:issue:`18368`)
  • Bug in masked assignment of a timedelta64[ns] dtype Series, incorrectly coerced to float (:issue:`18493`)

IO

Plotting

GroupBy/resample/rolling

  • Bug in DataFrame.resample(...).apply(...) when there is a callable that returns different columns (:issue:`15169`)
  • Bug in DataFrame.resample(...) when there is a time change (DST) and resampling frequency is 12h or higher (:issue:`15549`)
  • Bug in pd.DataFrameGroupBy.count() when counting over a datetimelike column (:issue:`13393`)
  • Bug in rolling.var where calculation is inaccurate with a zero-valued array (:issue:`18430`)

Reshaping

Numeric

  • Bug in pd.Series.rolling.skew() and rolling.kurt() with all equal values has floating issue (:issue:`18044`)

Categorical

  • Bug in :meth:`DataFrame.astype` where casting to 'category' on an empty DataFrame causes a segmentation fault (:issue:`18004`)
  • Error messages in the testing module have been improved when items have different CategoricalDtype (:issue:`18069`)
  • CategoricalIndex can now correctly take a pd.api.types.CategoricalDtype as its dtype (:issue:`18116`)
  • Bug in Categorical.unique() returning read-only codes array when all categories were NaN (:issue:`18051`)
  • Bug in DataFrame.groupby(axis=1) with a CategoricalIndex (:issue:`18432`)

String

Contributors

.. contributors:: v0.21.0..v0.21.1