Package Release Info


Update Info: Base Release
Available in Package Hub : 15





Change Logs

Version: 0.22.0-bp150.2.4
* Thu Jan 11 2018
- Drop commented code to allow us py3 only build
* Wed Jan 03 2018
- specfile:
  * update copyright year
- update to version 0.22.0:
  * Pandas 0.22.0 changes the handling of empty and all-NA sums and
    products. The summary is that
    + The sum of an empty or all-NA Series is now 0
    + The product of an empty or all-NA Series is now 1
    + We’ve added a min_count parameter to .sum() and .prod()
    controlling the minimum number of valid values for the result to
    be valid. If fewer than min_count non-NA values are present, the
    result is NA. The default is 0. To return NaN, the 0.21
    behavior, use min_count=1.
* Sat Dec 16 2017
- update to version 0.21.1:
  * Highlights include:
    + Temporarily restore matplotlib datetime plotting
    functionality. This should resolve issues for users who
    implicitly relied on pandas to plot datetimes with
    matplotlib. See here.
    + Improvements to the Parquet IO functions introduced in
    0.21.0. See here.
  * Improvements to the Parquet IO functionality
    + DataFrame.to_parquet() will now write non-default indexes when
    the underlying engine supports it. The indexes will be preserved
    when reading back in with read_parquet() (GH18581).
    + read_parquet() now allows to specify the columns to read from a
    parquet file (GH18154)
    + read_parquet() now allows to specify kwargs which are passed to
    the respective engine (GH18216)
  * Other Enhancements
    + Timestamp.timestamp() is now available in Python 2.7. (GH17329)
    + Grouper and TimeGrouper now have a friendly repr output
  * Deprecations
    + pandas.tseries.register has been renamed to
    pandas.plotting.register_matplotlib_converters`() (GH18301)
  * Performance Improvements
    + Improved performance of plotting large series/dataframes
  * Conversion
    + Bug in TimedeltaIndex subtraction could incorrectly overflow
    when NaT is present (GH17791)
    + Bug in DatetimeIndex subtracting datetimelike from DatetimeIndex
    could fail to overflow (GH18020)
    + Bug in IntervalIndex.copy() when copying and IntervalIndex with
    non-default closed (GH18339)
    + Bug in DataFrame.to_dict() where columns of datetime that are
    tz-aware were not converted to required arrays when used with
    orient='records', raising"TypeError` (GH18372)
    + Bug in DateTimeIndex and date_range() where mismatching tz-aware
    start and end timezones would not raise an err if end.tzinfo is
    None (GH18431)
    + Bug in Series.fillna() which raised when passed a long integer
    on Python 2 (GH18159).
  * Indexing
    + Bug in a boolean comparison of a datetime.datetime and a
    datetime64[ns] dtype Series (GH17965)
    + Bug where a MultiIndex with more than a million records was not
    raising AttributeError when trying to access a missing attribute
    + Bug in IntervalIndex constructor when a list of intervals is
    passed with non-default closed (GH18334)
    + Bug in Index.putmask when an invalid mask passed (GH18368)
    + Bug in masked assignment of a timedelta64[ns] dtype Series,
    incorrectly coerced to float (GH18493)
  * I/O
    + Bug in not converting
    date/time columns with display formatting addressed
    (GH17990). Previously columns with display formatting were
    normally left as ordinal numbers and not converted to datetime
    + Bug in read_csv() when reading a compressed UTF-16 encoded file
    + Bug in read_csv() for handling null values in index columns when
    specifying na_filter=False (GH5239)
    + Bug in read_csv() when reading numeric category fields with high
    cardinality (GH18186)
    + Bug in DataFrame.to_csv() when the table had MultiIndex columns,
    and a list of strings was passed in for header (GH5539)
    + Bug in parsing integer datetime-like columns with specified
    format in read_sql (GH17855).
    + Bug in DataFrame.to_msgpack() when serializing data of the
    numpy.bool_ datatype (GH18390)
    + Bug in read_json() not decoding when reading line deliminted
    JSON from S3 (GH17200)
    + Bug in to avoid modification of
    meta (GH18610)
    + Bug in to_latex() where repeated multi-index values were not
    printed even though a higher level index differed from the
    previous row (GH14484)
    + Bug when reading NaN-only categorical columns in HDFStore
    + Bug in DataFrame.to_latex() with longtable=True where a latex
    multicolumn always spanned over three columns (GH17959)
  * Plotting
    + Bug in DataFrame.plot() and Series.plot() with DatetimeIndex
    where a figure generated by them is not pickleable in Python 3
  * Groupby/Resample/Rolling
    + Bug in DataFrame.resample(...).apply(...) when there is a
    callable that returns different columns (GH15169)
    + Bug in DataFrame.resample(...) when there is a time change (DST)
    and resampling frequecy is 12h or higher (GH15549)
    + Bug in pd.DataFrameGroupBy.count() when counting over a
    datetimelike column (GH13393)
    + Bug in rolling.var where calculation is inaccurate with a
    zero-valued array (GH18430)
  * Reshaping
    + Error message in pd.merge_asof() for key datatype mismatch now
    includes datatype of left and right key (GH18068)
    + Bug in pd.concat when empty and non-empty DataFrames or Series
    are concatenated (GH18178 GH18187)
    + Bug in DataFrame.filter(...) when unicode is passed as a
    condition in Python 2 (GH13101)
    + Bug when merging empty DataFrames when np.seterr(divide='raise')
    is set (GH17776)
  * Numeric
    + Bug in pd.Series.rolling.skew() and rolling.kurt() with all
    equal values has floating issue (GH18044)
    + Bug in TimedeltaIndex subtraction could incorrectly overflow
    when NaT is present (GH17791)
    + Bug in DatetimeIndex subtracting datetimelike from DatetimeIndex
    could fail to overflow (GH18020)
  * Categorical
    + Bug in DataFrame.astype() where casting to ‘category’ on an
    empty DataFrame causes a segmentation fault (GH18004)
    + Error messages in the testing module have been improved when
    items have different CategoricalDtype (GH18069)
    + CategoricalIndex can now correctly take a
    pd.api.types.CategoricalDtype as its dtype (GH18116)
    + Bug in Categorical.unique() returning read-only codes array when
    all categories were NaN (GH18051)
    + Bug in DataFrame.groupby(axis=1) with a CategoricalIndex
  * String
    + Series.str.split() will now propogate NaN values across all
    expanded columns instead of None (GH18450)
* Mon Oct 30 2017
- specfile:
  * updated minimum numpy version to 1.9.0 (see
- update to version 0.21.0:
  * Highlights include:
    + Integration with Apache Parquet, including a new top-level
    read_parquet() function and DataFrame.to_parquet() method, see
    + New user-facing pandas.api.types.CategoricalDtype for specifying
    categoricals independent of the data, see here.
    + The behavior of sum and prod on all-NaN Series/DataFrames is now
    consistent and no longer depends on whether bottleneck is
    installed, see here.
    + Compatibility fixes for pypy, see here.
    + Additions to the drop, reindex and rename API to make them more
    consistent, see here.
    + Addition of the new methods DataFrame.infer_objects (see here)
    and GroupBy.pipe (see here).
    + Indexing with a list of labels, where one or more of the labels
    is missing, is deprecated and will raise a KeyError in a future
    version, see here.
  * full list at
* Sat Sep 23 2017
- update to version 0.20.3:
  * bug fix release, see
    for complete changelog
- changes from version 0.20.2:
  * bug fix release, see
    for complete changelog
* Thu May 18 2017
- Update to version 0.20.1
  Highlights include:
  * New ``.agg()`` API for Series/DataFrame similar to the
    groupby-rolling-resample API's
  * Integration with the ``feather-format``, including a new
    top-level ``pd.read_feather()`` and ``DataFrame.to_feather()``
  * The ``.ix`` indexer has been deprecated
  * ``Panel`` has been deprecated
  * Addition of an ``IntervalIndex`` and ``Interval`` scalar type
  * Improved user API when grouping by index levels in ``.groupby()``
  * Improved support for ``UInt64`` dtypes
  * A new orient for JSON serialization, ``orient='table'``, that
    uses the Table Schema spec and that gives the possibility for
    a more interactive repr in the Jupyter Notebook
  * Experimental support for exporting styled DataFrames
    (````) to Excel
  * Window binary corr/cov operations now return a MultiIndexed
    ``DataFrame`` rather than a ``Panel``, as ``Panel`` is now
  * Support for S3 handling now uses ``s3fs``
  * Google BigQuery support now uses the ``pandas-gbq`` library
* Mon May 08 2017
- Fix dateutil dependency
* Tue Apr 25 2017
- Implement single-spec version.
* Thu Mar 30 2017
- update to version 0.19.2:
  * Enhancements
    The pd.merge_asof(), added in 0.19.0, gained some improvements:
    + pd.merge_asof() gained left_index/right_index and
    left_by/right_by arguments (GH14253)
    + pd.merge_asof() can take multiple columns in by parameter and
    has specialized dtypes for better performace (GH13936)
  * Performance Improvements
    + Performance regression with PeriodIndex (GH14822)
    + Performance regression in indexing with getitem (GH14930)
    + Improved performance of .replace() (GH12745)
    + Improved performance Series creation with a datetime index and
    dictionary data (GH14894)
  * Bug Fixes
    + Compat with python 3.6 for pickling of some offsets (GH14685)
    + Compat with python 3.6 for some indexing exception types
    (GH14684, GH14689)
    + Compat with python 3.6 for deprecation warnings in the test
    suite (GH14681)
    + Compat with python 3.6 for Timestamp pickles (GH14689)
    + Compat with dateutil==2.6.0; segfault reported in the testing
    suite (GH14621)
    + Allow nanoseconds in Timestamp.replace as a kwarg (GH14621)
    + Bug in pd.read_csv in which aliasing was being done for
    na_values when passed in as a dictionary (GH14203)
    + Bug in pd.read_csv in which column indices for a dict-like
    na_values were not being respected (GH14203)
    + Bug in pd.read_csv where reading files fails, if the number of
    headers is equal to the number of lines in the file (GH14515)
    + Bug in pd.read_csv for the Python engine in which an unhelpful
    error message was being raised when multi-char delimiters were
    not being respected with quotes (GH14582)
    + Fix bugs (GH14734, GH13654) in pd.read_sas and that caused problems when
    reading a SAS file incrementally.
    + Bug in pd.read_csv for the Python engine in which an unhelpful
    error message was being raised when skipfooter was not being
    respected by Python’s CSV library (GH13879)
    + Bug in .fillna() in which timezone aware datetime64 values were
    incorrectly rounded (GH14872)
    + Bug in .groupby(..., sort=True) of a non-lexsorted MultiIndex
    when grouping with multiple levels (GH14776)
    + Bug in pd.cut with negative values and a single bin (GH14652)
    + Bug in pd.to_numeric where a 0 was not unsigned on a
    downcast='unsigned' argument (GH14401)
    + Bug in plotting regular and irregular timeseries using shared
    axes (sharex=True or ax.twinx()) (GH13341, GH14322).
    + Bug in not propogating exceptions in parsing invalid datetimes,
    noted in python 3.6 (GH14561)
    + Bug in resampling a DatetimeIndex in local TZ, covering a DST
    change, which would raise AmbiguousTimeError (GH14682)
    + Bug in indexing that transformed RecursionError into KeyError or
    IndexingError (GH14554)
    + Bug in HDFStore when writing a MultiIndex when using
    data_columns=True (GH14435)
    + Bug in HDFStore.append() when writing a Series and passing a
    min_itemsize argument containing a value for the index (GH11412)
    + Bug when writing to a HDFStore in table format with a
    min_itemsize value for the index and without asking to append
    + Bug in Series.groupby.nunique() raising an IndexError for an
    empty Series (GH12553)
    + Bug in DataFrame.nlargest and DataFrame.nsmallest when the index
    had duplicate values (GH13412)
    + Bug in clipboard functions on linux with python2 with unicode
    and separators (GH13747)
    + Bug in clipboard functions on Windows 10 and python 3 (GH14362,
    + Bug in .to_clipboard() and Excel compat (GH12529)
    + Bug in DataFrame.combine_first() for integer columns (GH14687).
    + Bug in pd.read_csv() in which the dtype parameter was not being
    respected for empty data (GH14712)
    + Bug in pd.read_csv() in which the nrows parameter was not being
    respected for large input when using the C engine for parsing
    + Bug in pd.merge_asof() could not handle timezone-aware
    DatetimeIndex when a tolerance was specified (GH14844)
    + Explicit check in to_stata and StataWriter for out-of-range
    values when writing doubles (GH14618)
    + Bug in .plot(kind='kde') which did not drop missing values to
    generate the KDE Plot, instead generating an empty
    plot. (GH14821)
    + Bug in unstack() if called with a list of column(s) as an
    argument, regardless of the dtypes of all columns, they get
    coerced to object (GH11847)
- update to version 0.19.1:
  * Performance Improvements
    + Fixed performance regression in factorization of Period data
    + Fixed performance regression in Series.asof(where) when where is
    a scalar (GH14461)
    + Improved performance in DataFrame.asof(where) when where is a
    scalar (GH14461)
    + Improved performance in .to_json() when lines=True (GH14408)
    + Improved performance in certain types of loc indexing with a
    MultiIndex (GH14551).
  * Bug Fixes
    + Source installs from PyPI will now again work without cython
    installed, as in previous versions (GH14204)
    + Compat with Cython 0.25 for building (GH14496)
    + Fixed regression where user-provided file handles were closed in
    read_csv (c engine) (GH14418).
    + Fixed regression in DataFrame.quantile when missing values where
    present in some columns (GH14357).
    + Fixed regression in Index.difference where the freq of a
    DatetimeIndex was incorrectly set (GH14323)
    + Added back pandas.core.common.array_equivalent with a
    deprecation warning (GH14555).
    + Bug in pd.read_csv for the C engine in which quotation marks
    were improperly parsed in skipped rows (GH14459)
    + Bug in pd.read_csv for Python 2.x in which Unicode quote
    characters were no longer being respected (GH14477)
    + Fixed regression in Index.append when categorical indices were
    appended (GH14545).
    + Fixed regression in pd.DataFrame where constructor fails when
    given dict with None value (GH14381)
    + Fixed regression in DatetimeIndex._maybe_cast_slice_bound when
    index is empty (GH14354).
    + Bug in localizing an ambiguous timezone when a boolean is passed
    + Bug in TimedeltaIndex addition with a Datetime-like object where
    addition overflow in the negative direction was not being caught
    (GH14068, GH14453)
    + Bug in string indexing against data with object Index may raise
    AttributeError (GH14424)
    + Corrrecly raise ValueError on empty input to pd.eval() and
    df.query() (GH13139)
    + Bug in RangeIndex.intersection when result is a empty set
    + Bug in groupby-transform broadcasting that could cause incorrect
    dtype coercion (GH14457)
    + Bug in Series.__setitem__ which allowed mutating read-only
    arrays (GH14359).
    + Bug in DataFrame.insert where multiple calls with duplicate
    columns can fail (GH14291)
    + pd.merge() will raise ValueError with non-boolean parameters in
    passed boolean type arguments (GH14434)
    + Bug in Timestamp where dates very near the minimum (1677-09)
    could underflow on creation (GH14415)
    + Bug in pd.concat where names of the keys were not propagated to
    the resulting MultiIndex (GH14252)
    + Bug in pd.concat where axis cannot take string parameters 'rows'
    or 'columns' (GH14369)
    + Bug in pd.concat with dataframes heterogeneous in length and
    tuple keys (GH14438)
    + Bug in MultiIndex.set_levels where illegal level values were
    still set after raising an error (GH13754)
    + Bug in DataFrame.to_json where lines=True and a value contained
    a } character (GH14391)
    + Bug in df.groupby causing an AttributeError when grouping a
    single index frame by a column and the index level
    + Bug in df.groupby where TypeError raised when
    pd.Grouper(key=...) is passed in a list (GH14334)
    + Bug in pd.pivot_table may raise TypeError or ValueError when
    index or columns is not scalar and values is not specified
* Sun Oct 23 2016
- update to version 0.19.0:
  (long changelog, see
  * Highlights include:
    + merge_asof() for asof-style time-series joining
    + .rolling() is now time-series aware
    + read_csv() now supports parsing Categorical data
    + A function union_categorical() has been added for combining
    + PeriodIndex now has its own period dtype, and changed to be more
    consistent with other Index classes
    + Sparse data structures gained enhanced support of int and bool
    + Comparison operations with Series no longer ignores the index,
    see here for an overview of the API changes.
    + Introduction of a pandas development API for utility functions
    + Deprecation of Panel4D and PanelND. We recommend to represent
    these types of n-dimensional data with the xarray package.
    + Removal of the previously deprecated modules,,
- specfile:
  * require python3-Cython
  * Split documentation into own subpackage to speed up build.
  * Remove buildrequires for optional dependencies to speed up build.
- Remove unneeded patches:
  * 0001_disable_experimental_msgpack_big_endian.patch ^
  * 0001_respect_byteorder_in_statareader.patch
* Tue Jul 12 2016
- Update to 0.8.1:
  * .groupby(...) has been enhanced to provide convenient syntax
    when working with .rolling(..), .expanding(..) and
    .resample(..) per group.
  * pd.to_datetime() has gained the ability to assemble dates
    from a DataFrame.
  * Method chaining improvements.
  * Custom business hour offset.
  * Many bug fixes in the handling of sparse.
  * Expanded the Tutorials section with a feature on modern pandas,
    courtesy of @TomAugsb (GH13045).
- Changes from 0.8.0:
  * Moving and expanding window functions are now methods on Series
    and DataFrame, similar to .groupby.
  * Adding support for a RangeIndex as a specialized form of the
    Int64Index for memory savings.
  * API breaking change to the .resample method to make it more
    .groupby like.
  * Removal of support for positional indexing with floats, which
    was deprecated since 0.14.0. This will now raise a TypeError.
  * The .to_xarray() function has been added for compatibility with
    the xarray package.
  * The read_sas function has been enhanced to read sas7bdat files.
  * Addition of the .str.extractall() method, and API changes to
    the .str.extract() method and method.
  * pd.test() top-level nose test runner is available (GH4327).
* Fri Feb 26 2016
- Require python-python-dateutil. package was renamed
* Tue Feb 09 2016
- Add 0001_respect_byteorder_in_statareader.patch
  Fix StataReader in big endian architectures
- Add 0001_disable_experimental_msgpack_big_endian.patch
  Skip experimental msgpack test in big endian systems
* Wed Feb 03 2016
- Remove non-needed BuildRequires
- Update Requires from documentation
- Update Recommends from documentation
- Add tests in %check section
* Mon Nov 30 2015
- update to version 0.17.1:
  (for full changelog see
  Highlights include:
  * Support for Conditional HTML Formatting, see here
  * Releasing the GIL on the csv reader & other ops, see here
  * Fixed regression in DataFrame.drop_duplicates from 0.16.2, causing
    incorrect results on integer values (GH11376)
* Mon Oct 12 2015
- update to version 0.17.0:
  (for full changelog see
  * Release the Global Interpreter Lock (GIL) on some cython
    operations, see here
  * Plotting methods are now available as attributes of the .plot
    accessor, see here
  * The sorting API has been revamped to remove some long-time
    inconsistencies, see here
  * Support for a datetime64[ns] with timezones as a first-class
    dtype, see here
  * The default for to_datetime will now be to raise when presented
    with unparseable formats, previously this would return the
    original input.  Also, date parse functions now return consistent
    results. See here
  * The default for dropna in HDFStore has changed to False, to store
    by default all rows even if they are all NaN, see here
  * Datetime accessor (dt) now supports Series.dt.strftime to generate
    formatted strings for datetime-likes, and Series.dt.total_seconds
    to ge nerate each duration of the timedelta in seconds. See here
  * Period and PeriodIndex can handle multiplied freq like 3D, which
    corresponding to 3 days span. See here
  * Development installed versions of pandas will now have PEP440
    compliant version strings (GH9518)
  * Development support for benchmarking with the Air Speed Velocity
    library (GH8361)
  * Support for reading SAS xport files, see here
  * Documentation comparing SAS to pandas, see here
  * Removal of the automatic TimeSeries broadcasting, deprecated since
    0.8.0, see here
  * Display format with plain text can optionally align with Unicode
    East Asian Width, see here
  * Compatibility with Python 3.5 (GH11097)
  * Compatibility with matplotlib 1.5.0 (GH11111)
* Mon Jun 29 2015
- update to version 0.16.2:
  * Highlights
    + A new pipe method
    + Documentation on how to use numba with pandas
  * Enhancements
    + Added rsplit to Index/Series StringMethods (GH10303)
    + Removed the hard-coded size limits on the DataFrame HTML
    representation in the IPython notebook, and leave this to
    IPython itself (only for IPython v3.0 or greater). This
    eliminates the duplicate scroll bars that appeared in the
    notebook with large frames (GH10231).
    Note that the notebook has a toggle output scrolling feature to
    limit the display of very large frames (by clicking left of the
    output). You can also configure the way DataFrames are displayed
    using the pandas options, see here here.
    + axis parameter of DataFrame.quantile now accepts also index and
    column. (GH9543)
  * API Changes
    + Holiday now raises NotImplementedError if both offset and
    observance are used in the constructor instead of returning an
    incorrect result (GH10217).
  * Performance Improvements
    + Improved Series.resample performance with dtype=datetime64[ns]
    + Increase performance of str.split when expand=True (GH10081)
  * Bug Fixes
    + Bug in Series.hist raises an error when a one row Series was
    given (GH10214)
    + Bug where modifies the passed columns list
    + Bug in Categorical repr with display.width of None in Python 3
    + Bug in to_json with certain orients and a CategoricalIndex would
    segfault (GH10317)
    + Bug where some of the nan funcs do not have consistent return
    dtypes (GH10251)
    + Bug in DataFrame.quantile on checking that a valid axis was
    passed (GH9543)
    + Bug in groupby.apply aggregation for Categorical not preserving
    categories (GH10138)
    + Bug in to_csv where date_format is ignored if the datetime is
    fractional (GH10209)
    + Bug in DataFrame.to_json with mixed data types (GH10289)
    + Bug in cache updating when consolidating (GH10264)
    + Bug in mean() where integer dtypes can overflow (GH10172)
    + Bug where Panel.from_dict does not set dtype when specified
    + Bug in Index.union raises AttributeError when passing
    array-likes. (GH10149)
    + Bug in Timestamp?s? microsecond, quarter, dayofyear, week and
    daysinmonth properties return type, not built-in
    int. (GH10050)
    + Bug in NaT raises AttributeError when accessing to daysinmonth,
    dayofweek properties. (GH10096)
    + Bug in Index repr when using the max_seq_items=None setting
    + Bug in getting timezone data with dateutil on various platforms
    ( GH9059, GH8639, GH9663, GH10121)
    + Bug in displaying datetimes with mixed frequencies; display ?ms?
    datetimes to the proper precision. (GH10170)
    + Bug in setitem where type promotion is applied to the entire
    block (GH10280)
    + Bug in Series arithmetic methods may incorrectly hold names
    + Bug in GroupBy.get_group when grouping on multiple keys, one of
    which is categorical. (GH10132)
    + Bug in DatetimeIndex and TimedeltaIndex names are lost after
    timedelta arithmetics ( GH9926)
    + Bug in DataFrame construction from nested dict with datetime64
    + Bug in Series construction from dict with datetime64 keys
    + Bug in Series.plot(label="LABEL") not correctly setting the
    label (GH10119)
    + Bug in plot not defaulting to matplotlib axes.grid setting
    + Bug causing strings containing an exponent, but no decimal to be
    parsed as int instead of float in engine='python' for the read_csv
    parser (GH9565)
    + Bug in Series.align resets name when fill_value is specified
    + Bug in read_csv causing index name not to be set on an empty
    DataFrame (GH10184)
    + Bug in SparseSeries.abs resets name (GH10241)
    + Bug in TimedeltaIndex slicing may reset freq (GH10292)
    + Bug in GroupBy.get_group raises ValueError when group key
    contains NaT (GH6992)
    + Bug in SparseSeries constructor ignores input data name
    + Bug in Categorical.remove_categories causing a ValueError when
    removing the NaN category if underlying dtype is floating-point
    + Bug where infer_freq infers timerule (WOM-5XXX) unsupported by
    to_offset (GH9425)
    + Bug in DataFrame.to_hdf() where table format would raise a
    seemingly unrelated error for invalid (non-string) column
    names. This is now explicitly forbidden. (GH9057)
    + Bug to handle masking empty DataFrame (GH10126).
    + Bug where MySQL interface could not handle numeric table/column
    names (GH10255)
    + Bug in read_csv with a date_parser that returned a datetime64
    array of other time resolution than [ns] (GH10245)
    + Bug in Panel.apply when the result has ndim=0 (GH10332)
    + Bug in read_hdf where auto_close could not be passed (GH9327).
    + Bug in read_hdf where open stores could not be used (GH10330).
    + Bug in adding empty DataFrame``s, now results in a ``DataFrame
    that .equals an empty DataFrame (GH10181).
    + Bug in to_hdf and HDFStore which did not check that complib
    choices were valid (GH4582, GH8874).
* Tue May 19 2015
- Update to version 0.16.1
  * Highlights
  - Support for a ``CategoricalIndex``, a category based index
  - New section on how-to-contribute to pandas
  - Revised "Merge, join, and concatenate" documentation,
    including graphical examples to make it easier to understand
    each operations
  - New method sample for drawing random samples from Series,
    DataFrames and Panels.
  - The default Index printing has changed to a more uniform
  - BusinessHour datetime-offset is now supported
  * Enhancements
  - BusinessHour`offset is now supported, which represents
    business hours starting from 09:00 - 17:00 on BusinessDay by
  - DataFrame.diff now takes an axis parameter that determines the
    direction of differencing
  - Allow clip, clip_lower, and clip_upper to accept array-like
    arguments as thresholds (This is a regression from 0.11.0).
    These methods now have an axis parameter which determines
    how the Series or DataFrame will be aligned with the
  - DataFrame.mask() and Series.mask() now support same keywords
    as where
  - drop function can now accept errors keyword to suppress
    ValueError raised when any of label does not exist in the
    target data.
  - Allow conversion of values with dtype datetime64 or timedelta64
    to strings using astype(str)
  - get_dummies function now accepts sparse keyword.  If set to
    True, the return DataFrame is sparse, e.g. SparseDataFrame.
  - Period now accepts datetime64 as value input.
  - Allow timedelta string conversion when leading zero is
    missing from time definition, ie 0:00:00 vs 00:00:00.
  - Allow Panel.shift with axis='items'
  - Trying to write an excel file now raises NotImplementedError
    if the DataFrame has a MultiIndex instead of writing a broken
    Excel file.
  - Allow Categorical.add_categories to accept Series or np.array.
  - Add/delete str/dt/cat accessors dynamically from __dir__.
  - Add normalize as a dt accessor method.
  - DataFrame and Series now have _constructor_expanddim property
    as overridable constructor for one higher dimensionality
    data. This should be used only when it is really needed
  - pd.lib.infer_dtype now returns 'bytes' in Python 3 where
  - We introduce a CategoricalIndex, a new type of index object
    that is useful for supporting indexing with duplicates. This
    is a container around a Categorical (introduced in v0.15.0)
    and allows efficient indexing and storage of an index with a
    large number of duplicated elements. Prior to 0.16.1,
    setting the index of a DataFrame/Series with a category
    dtype would convert this to regular object-based Index.
  - Series, DataFrames, and Panels now have a new method:
    pandas.DataFrame.sample. The method accepts a specific number
    of rows or columns to return, or a fraction of the total
    number or rows or columns. It also has options for sampling
    with or without replacement, for passing in a column for
    weights for non-uniform sampling, and for setting seed values
    to facilitate replication.
  - The following new methods are accesible via .str accessor to
    apply the function to each values.
    + capitalize()
    + swapcase()
    + normalize()
    + partition()
    + rpartition()
    + index()
    + rindex()
    + translate()
  - Added StringMethods (.str accessor) to Index
  - split now takes expand keyword to specify whether to expand
    dimensionality. return_type is deprecated.
  * API changes
  - When passing in an ax to df.plot( ..., ax=ax), the sharex
    kwarg will now default to False.
  - Add support for separating years and quarters using dashes,
    for example 2014-Q1.
  - pandas.DataFrame.assign now inserts new columns in
    alphabetical order. Previously the order was arbitrary.
  - By default, read_csv and read_table will now try to infer
    the compression type based on the file extension. Set
    compression=None to restore the previous behavior
    (no decompression).
  - The string representation of Index and its sub-classes have
    now been unified. These will show a single-line display if
    there are few values; a wrapped multi-line display for a lot
    of values (but less than display.max_seq_items; if lots of
    items > display.max_seq_items) will show a truncated display
    (the head and tail of the data). The formatting for
    MultiIndex is unchanges (a multi-line wrapped display). The
    display width responds to the option display.max_seq_items,
    which is defaulted to 100.
  * Deprecations
  - Series.str.split's return_type keyword was removed in favor
    of expand
  * Performance Improvements
  - Improved csv write performance with mixed dtypes, including
    datetimes by up to 5x
  - Improved csv write performance generally by 2x
  - Improved the performance of pd.lib.max_len_string_array
    by 5-7x
  * Bug Fixes
  - Bug where labels did not appear properly in the legend of
    DataFrame.plot(), passing label= arguments works, and Series
    indices are no longer mutated.
  - Bug in json serialization causing a segfault when a frame had
    zero length.
  - Bug in read_csv where missing trailing delimiters would cause
  - Bug in retaining index name on appending
  - Bug in scatter_matrix draws unexpected axis ticklabels
  - Fixed bug in StataWriter resulting in changes to input
    DataFrame upon save.
  - Bug in transform causing length mismatch when null entries
    were present and a fast aggregator was being used
  - Bug in equals causing false negatives when block order
  - Bug in grouping with multiple pd.Grouper where one is
    non-time based
  - Bug in read_sql_table error when reading postgres table with
  - Bug in DataFrame slicing may not retain metadata
  - Bug where TimdeltaIndex were not properly serialized in fixed
  - Bug with TimedeltaIndex constructor ignoring name when given
    another TimedeltaIndex as data.
  - Bug in DataFrameFormatter._get_formatted_index with not
    applying max_colwidth to the DataFrame index
  - Bug in .loc with a read-only ndarray data source
  - Bug in groupby.apply() that would raise if a passed user
    defined function either returned only None (for all input).
  - Always use temporary files in pytables tests
  - Bug in plotting continuously using secondary_y may not show
    legend properly.
  - Bug in DataFrame.plot(kind="hist") results in TypeError when
    DataFrame contains non-numeric columns
  - Bug where repeated plotting of DataFrame with a DatetimeIndex
    may raise TypeError
  - Bug in that would allow an incompat cython version
    to build
  - Bug in plotting secondary_y incorrectly attaches right_ax
    property to secondary axes specifying itself recursively.
  - Bug in Series.quantile on empty Series of type Datetime or
  - Bug in where causing incorrect results when upcasting was
  - Bug in FloatArrayFormatter where decision boundary for
    displaying "small" floats in decimal format is off by one
    order of magnitude for a given display.precision
  - Fixed bug where DataFrame.plot() raised an error when both
    color and style keywords were passed and there was no color
    symbol in the style strings
  - Not showing a DeprecationWarning on combining list-likes with
    an Index
  - Bug in read_csv and read_table when using skip_rows parameter
    if blank lines are present.
  - Bug in read_csv() interprets index_col=True as 1
  - Bug in index equality comparisons using == failing on
    Index/MultiIndex type incompatibility
  - Bug in which SparseDataFrame could not take nan as a column
  - Bug in to_msgpack and read_msgpack zlib and blosc compression
  - Bug GroupBy.size doesn't attach index name properly if
    grouped by TimeGrouper
  - Bug causing an exception in slice assignments because
    length_of_indexer returns wrong results
  - Bug in csv parser causing lines with initial whitespace plus
    one non-space character to be skipped.
  - Bug in C csv parser causing spurious NaNs when data started
    with newline followed by whitespace.
  - Bug causing elements with a null group to spill into the
    final group when grouping by a Categorical
  - Bug where .iloc and .loc behavior is not consistent on empty
  - Bug in invalid attribute access on a TimedeltaIndex
    incorrectly raised ValueError instead of AttributeError
  - Bug in unequal comparisons between categorical data and a
    scalar, which was not in the categories (e.g.
    Series(Categorical(list("abc"), ordered=True)) > "d". This
    returned False for all elements, but now raises a TypeError.
    Equality comparisons also now return False for == and True
    for !=.
  - Bug in DataFrame __setitem__ when right hand side is a
  - Bug in where when dtype is datetime64/timedelta64, but dtype
    of other is not
  - Bug in MultiIndex.sortlevel() results in unicode level name
  - Bug in which groupby.transform incorrectly enforced output
    dtypes to match input dtypes.
  - Bug in DataFrame constructor when columns parameter is set,
    and data is an empty list
  - Bug in bar plot with log=True raises TypeError if all values
    are less than 1
  - Bug in horizontal bar plot ignores log=True
  - Bug in PyTables queries that did not return proper results
    using the index
  - Bug where dividing a dataframe containing values of type
    Decimal by another Decimal would raise.
  - Bug where using DataFrames asfreq would remove the name of
    the index.
  - Bug causing extra index point when resample BM/BQ
  - Changed caching in AbstractHolidayCalendar to be at the
    instance level rather than at the class level as the latter
    can result in  unexpected behaviour.
  - Fixed latex output for multi-indexed dataframes
  - Bug causing an exception when setting an empty range using
  - Bug in hiding ticklabels with subplots and shared axes when
    adding a new plot to an existing grid of axes
  - Bug in transform and filter when grouping on a categorical
  - Bug in transform when groups are equal in number and dtype to
    the input index
  - Google BigQuery connector now imports dependencies on a
    per-method basis.
  - Updated BigQuery connector to no longer use deprecated
  - Bug in subclassed DataFrame. It may not return the correct
    class, when slicing or subsetting it.
  - Bug in .median() where non-float null values are not handled
  - Bug in Series.fillna() where it raises if a numerically
    convertible string is given
* Tue Mar 24 2015
- update to version 0.16.0:
  * Highlights:
  - DataFrame.assign method
  - Series.to_coo/from_coo methods to interact with scipy.sparse
  - Backwards incompatible change to Timedelta to conform the .seconds
    attribute with datetime.timedelta
  - Changes to the .loc slicing API to conform with the behavior of .ix
  - Changes to the default for ordering in the Categorical constructor
  - Enhancement to the .str accessor to make string operations easier
  - The, pandas.sandbox.qtpandas and pandas.rpy
    modules are deprecated.  We refer users to external packages like
    seaborn, pandas-qt and rpy2 for similar or equivalent functionality
  * New features
  - Inspired by dplyr's mutate verb, DataFrame has a new assign method.
  - Added SparseSeries.to_coo and SparseSeries.from_coo methods for
    converting to and from scipy.sparse.coo_matrix instances.
  - Following new methods are accesible via .str accessor to apply the
    function to each values. This is intended to make it more consistent with
    standard methods on strings: isalnum(), isalpha(), isdigit(), isdigit(),
    isspace(), islower(), isupper(), istitle(), isnumeric(), isdecimal(),
    find(), rfind(), ljust(), rjust(), zfill()
  - Reindex now supports method='nearest' for frames or series with a
    monotonic increasing or decreasing index.
  - The read_excel() function's sheetname argument now accepts a list and
    None, to get multiple or all sheets respectively. If more than one sheet
    is specified, a dictionary is returned.
  - Allow Stata files to be read incrementally with an iterator; support for
    long strings in Stata files.
  - Paths beginning with ~ will now be expanded to begin with the user's home
  - Added time interval selection in get_data_yahoo.
  - Added Timestamp.to_datetime64() to complement Timedelta.to_timedelta64().
  - tseries.frequencies.to_offset() now accepts Timedelta as input.
  - Lag parameter was added to the autocorrelation method of Series, defaults
    to lag-1 autocorrelation.
  - Timedelta will now accept nanoseconds keyword in constructor.
  - SQL code now safely escapes table and column names.
  - Added auto-complete for Series.str.<tab>, Series.dt.<tab> and<tab>.
  - Index.get_indexer now supports method='pad' and method='backfill' even
    for any target array, not just monotonic targets.
  - Index.asof now works on all index types.
  - A verbose argument has been augmented in io.read_excel(), defaults to
    False. Set to True to print sheet names as they are parsed.
  - Added days_in_month (compatibility alias daysinmonth) property to
    Timestamp, DatetimeIndex, Period, PeriodIndex, and Series.dt.
  - Added decimal option in to_csv to provide formatting for non-'.' decimal
  - Added normalize option for Timestamp to normalized to midnight
  - Added example for DataFrame import to R using HDF5 file and rhdf5
  * Backwards incompatible API changes
  - In v0.16.0, we are restoring the API to match that of datetime.timedelta.
    Further, the component values are still available through the .components
    accessor. This affects the .seconds and .microseconds accessors, and
    removes the .hours, .minutes, .milliseconds accessors. These changes
    affect TimedeltaIndex and the Series .dt accessor as well.
  - The behavior of a small sub-set of edge cases for using .loc have
    changed. Furthermore we have improved the content of the error messages
    that are raised:
    + Slicing with .loc where the start and/or stop bound is not found in
    the index is now allowed; this previously would raise a KeyError. This
    makes the behavior the same as .ix in this case. This change is only
    for slicing, not when indexing with a single label.
    + Allow slicing with float-like values on an integer index for .ix.
    Previously this was only enabled for .loc:
    + Provide a useful exception for indexing with an invalid type for that
    index when using .loc. For example trying to use .loc on an index of
    type DatetimeIndex or PeriodIndex or TimedeltaIndex, with an integer
    (or a float).
  - In prior versions, Categoricals that had an unspecified ordering
    (meaning no ordered keyword was passed) were defaulted as ordered
    Categoricals. Going forward, the ordered keyword in the Categorical
    constructor will default to False. Ordering must now be explicit.
    Furthermore, previously you *could* change the ordered attribute of a
    Categorical by just setting the attribute, e.g. cat.ordered=True; This is
    now deprecated and you should use cat.as_ordered() or cat.as_unordered().
    These will by default return a **new** object and not modify the
    existing object.
  - Index.duplicated now returns np.array(dtype=bool) rather than
    Index(dtype=object) containing bool values.
  - DataFrame.to_json now returns accurate type serialisation for each column
    for frames of mixed dtype
  - DatetimeIndex, PeriodIndex and TimedeltaIndex.summary now output the same
  - TimedeltaIndex.freqstr now output the same string format as
  - Bar and horizontal bar plots no longer add a dashed line along the info
    axis. The prior style can be achieved with matplotlib's axhline or
    axvline methods.
  - Series accessors .dt, .cat and .str now raise AttributeError instead of
    TypeError if the series does not contain the appropriate type of data.
    This  follows Python's built-in exception hierarchy more closely and
    ensures that  tests like hasattr(s, 'cat') are consistent on both Python
    2 and 3.
  - Series now supports bitwise operation for integral types. Previously even
    if the input dtypes were integral, the output dtype was coerced to bool.
  - During division involving a Series or DataFrame, 0/0 and 0//0 now give
    np.nan instead of np.inf.
  - Series.values_counts and Series.describe for categorical data will now
    put NaN entries at the end.
  - Series.describe for categorical data will now give counts and frequencies
    of 0, not NaN, for unused categories
  - Due to a bug fix, looking up a partial string label with
    DatetimeIndex.asof now includes values that match the string, even if
    they are after the start of the partial string label. Old behavior:
  * Deprecations
  - The rplot trellis plotting interface is deprecated and will be removed
    in a future version. We refer to external packages like
    seaborn for similar but more refined functionality.
  - The pandas.sandbox.qtpandas interface is deprecated and will be removed
    in a future version.
    We refer users to the external package pandas-qt.
  - The pandas.rpy interface is deprecated and will be removed in a future
    Similar functionaility can be accessed thru the rpy2 project
  - Adding DatetimeIndex/PeriodIndex to another DatetimeIndex/PeriodIndex is
    being deprecated as a set-operation. This will be changed to a TypeError
    in a future version. .union() should be used for the union set operation.
  - Subtracting DatetimeIndex/PeriodIndex from another
    DatetimeIndex/PeriodIndex is being deprecated as a set-operation. This
    will be  changed to an actual numeric subtraction yielding a
    TimeDeltaIndex in a future  version. .difference() should be used for
    the differencing set operation.
  * Removal of prior version deprecations/changes
  - DataFrame.pivot_table and crosstab's rows and cols keyword arguments were
    removed in favor
    of index and columns
  - DataFrame.to_excel and DataFrame.to_csv cols keyword argument was removed
    in favor of columns
  - Removed convert_dummies in favor of get_dummies
  - Removed value_range in favor of describe
  * Performance Improvements
  - Fixed a performance regression for .loc indexing with an array or
  - DataFrame.to_json 30x performance improvement for mixed dtype frames.
  - Performance improvements in MultiIndex.duplicated by working with labels
    instead of values
  - Improved the speed of nunique by calling unique instead of value_counts
  - Performance improvement of up to 10x in DataFrame.count and
    DataFrame.dropna by taking advantage of homogeneous/heterogeneous dtypes
  - Performance improvement of up to 20x in DataFrame.count when using a
    MultiIndex and the level keyword argument
  - Performance and memory usage improvements in merge when key space exceeds
    int64 bounds
  - Performance improvements in multi-key groupby
  - Performance improvements in MultiIndex.sortlevel
  - Performance and memory usage improvements in DataFrame.duplicated
  - Cythonized Period
  - Decreased memory usage on to_hdf
  * Bug Fixes
  - Changed .to_html to remove leading/trailing spaces in table body
  - Fixed issue using read_csv on s3 with Python 3
  - Fixed compatibility issue in DatetimeIndex affecting architectures where
    numpy.int_ defaults to numpy.int32
  - Bug in Panel indexing with an object-like
  - Bug in the returned Series.dt.components index was reset to the default
  - Bug in Categorical.__getitem__/__setitem__ with listlike input getting
    incorrect results from indexer coercion
  - Bug in partial setting with a DatetimeIndex
  - Bug in groupby for integer and datetime64 columns when applying an
    aggregator that caused the value to be
    changed when the number was sufficiently large
  - Fixed bug in to_sql when mapping a Timestamp object column (datetime
    column with timezone info) to the appropriate sqlalchemy type.
  - Fixed bug in to_sql dtype argument not accepting an instantiated
    SQLAlchemy type.
  - Bug in .loc partial setting with a np.datetime64
  - Incorrect dtypes inferred on datetimelike looking Series & on .xs slices
  - Items in Categorical.unique() (and s.unique() if s is of dtype category)
    now appear in the order in which they are originally found, not in sorted
    order. This is now consistent with the behavior for other dtypes in pandas.
  - Fixed bug on big endian platforms which produced incorrect results in
  - Bug in MultiIndex.has_duplicates when having many levels causes an
    indexer overflow
  - Bug in pivot and unstack where nan values would break index alignment
  - Bug in left join on multi-index with sort=True or null values.
  - Bug in MultiIndex where inserting new keys would fail.
  - Bug in groupby when key space exceeds int64 bounds.
  - Bug in unstack with TimedeltaIndex or DatetimeIndex and nulls.
  - Bug in rank where comparing floats with tolerance will cause inconsistent
  - Fixed character encoding bug in read_stata and StataReader when loading
    data from a URL.
  - Bug in adding offsets.Nano to other offets raises TypeError
  - Bug in DatetimeIndex iteration, related to, fixed in
  - Bugs in resample around DST transitions. This required fixing offset
    classes so they behave correctly on DST transitions.
  - Bug in binary operator method (eg .mul()) alignment with integer levels.
  - Bug in boxplot, scatter and hexbin plot may show an unnecessary warning
  - Bug in subplot with layout kw may show unnecessary warning
  - Bug in using grouper functions that need passed thru arguments (e.g.
    axis), when using wrapped function (e.g. fillna),
  - DataFrame now properly supports simultaneous copy and dtype arguments in
  - Bug in read_csv when using skiprows on a file with CR line endings with
    the c engine.
  - isnull now detects NaT in PeriodIndex
  - Bug in groupby .nth() with a multiple column groupby
  - Bug in DataFrame.where and Series.where coerce numerics to string
  - Bug in DataFrame.where and Series.where raise ValueError when string
    list-like is passed.
  - Accessing Series.str methods on with non-string values now raises
    TypeError instead of producing incorrect results
  - Bug in DatetimeIndex.__contains__ when index has duplicates and is not
    monotonic increasing
  - Fixed division by zero error for Series.kurt() when all values are equal
  - Fixed issue in the xlsxwriter engine where it added a default 'General'
    format to cells if no other format wass applied. This prevented other
    row or column formatting being applied.
  - Fixes issue with index_col=False when usecols is also specified in
  - Bug where wide_to_long would modify the input stubnames list
  - Bug in to_sql not storing float64 values using double precision.
  - SparseSeries and SparsePanel now accept zero argument constructors (same
    as their non-sparse counterparts).
  - Regression in merging Categorical and object dtypes
  - Bug in read_csv with buffer overflows with certain malformed input files
  - Bug in groupby MultiIndex with missing pair
  - Fixed bug in Series.groupby where grouping on MultiIndex levels would
    ignore the sort argument
  - Fix bug in DataFrame.Groupby where sort=False is ignored in the case of
    Categorical columns.
  - Fixed bug with reading CSV files from Amazon S3 on python 3 raising a
  - Bug in the Google BigQuery reader where the 'jobComplete' key may be
    present but False in the query results
  - Bug in Series.values_counts with excluding NaN for categorical type
    Series with dropna=True
  - Fixed mising numeric_only option for DataFrame.std/var/sem
  - Support constructing Panel or Panel4D with scalar data
  - Series text representation disconnected from `max_rows`/`max_columns`.
  - Series number formatting inconsistent when truncated.
  - A Spurious SettingWithCopy Warning was generated when setting a new item
    in a frame in some cases
* Mon Jan 12 2015
- update to version 0.15.2:
  * API changes:
  - Indexing in MultiIndex beyond lex-sort depth is now supported,
    though a lexically sorted index will have a better
    performance. (GH2646)
  - Bug in unique of Series with category dtype, which returned all
    categories regardless whether they were "used" or not (see
    GH8559 for the discussion). Previous behaviour was to return all
  - Series.all and Series.any now support the level and skipna
    parameters. Series.all, Series.any, Index.all, and Index.any no
    longer support the out and keepdims parameters, which existed
    for compatibility with ndarray. Various index types no longer
    support the all and any aggregation functions and will now raise
    TypeError. (GH8302).
  - Allow equality comparisons of Series with a categorical dtype
    and object dtype; previously these would raise TypeError
  - Bug in NDFrame: conflicting attribute/column names now behave
    consistently between getting and setting. Previously, when both
    a column and attribute named y existed, data.y would return the
    attribute, while data.y = z would update the column (GH8994)
  - Timestamp('now') is now equivalent to in that it
    returns the local time rather than UTC. Also, Timestamp('today')
    is now equivalent to and both have tz as a
    possible argument. (GH9000)
  - Fix negative step support for label-based slices (GH8753)
  * Enhancements:
  - Added ability to export Categorical data to Stata (GH8633). See
    here for limitations of categorical variables exported to Stata
    data files.
  - Added flag order_categoricals to StataReader and read_stata to
    select whether to order imported categorical data (GH8836). See
    here for more information on importing categorical variables
    from Stata data files.
  - Added ability to export Categorical data to to/from HDF5
    (GH7621). Queries work the same as if it was an object
    array. However, the category dtyped data is stored in a more
    efficient manner. See here for an example and caveats
    w.r.t. prior versions of pandas.
  - Added support for searchsorted() on Categorical class (GH8420).
  - Added the ability to specify the SQL type of columns when
    writing a DataFrame to a database (GH8778). For example,
    specifying to use the sqlalchemy String type instead of the
    default Text type for string columns.
  - Series.all and Series.any now support the level and skipna
    parameters (GH8302).
  - Panel now supports the all and any aggregation
    functions. (GH8302).
  - Added support for utcfromtimestamp(), fromtimestamp(), and
    combine() on Timestamp class (GH5351).
  - Added Google Analytics ( basic documentation
  - Timedelta arithmetic returns NotImplemented in unknown cases,
    allowing extensions by custom classes (GH8813).
  - Timedelta now supports arithemtic with numpy.ndarray objects of
    the appropriate dtype (numpy 1.8 or newer only) (GH8884).
  - Added Timedelta.to_timedelta64() method to the public API
  - Added gbq.generate_bq_schema() function to the gbq module
  - Series now works with map objects the same way as generators
  - Added context manager to HDFStore for automatic closing
  - to_datetime gains an exact keyword to allow for a format to not
    require an exact match for a provided format string (if its
    False). exact defaults to True (meaning that exact matching is
    still the default) (GH8904)
  - Added axvlines boolean option to parallel_coordinates plot
    function, determines whether vertical lines will be printed,
    default is True
  - Added ability to read table footers to read_html (GH8552).
  - to_sql now infers datatypes of non-NA values for columns that
    contain NA values and have dtype object (GH8778).
  * Performance:
  - Reduce memory usage when skiprows is an integer in read_csv
  - Performance boost for to_datetime conversions with a passed
    format=, and the exact=False (GH8904)
  * Bug fixes:
  - Bug in concat of Series with category dtype which were coercing
    to object. (GH8641)
  - Bug in Timestamp-Timestamp not returning a Timedelta type and
    datelike-datelike ops with timezones (GH8865)
  - Made consistent a timezone mismatch exception (either tz
    operated with None or incompatible timezone), will now return
    TypeError rather than ValueError (a couple of edge cases only),
  - Bug in using a pd.Grouper(key=...) with no level/axis or level
    only (GH8795, GH8866)
  - Report a TypeError when invalid/no paramaters are passed in a
    groupby (GH8015)
  - Bug in packaging pandas with py2app/cx_Freeze (GH8602, GH8831)
  - Bug in groupby signatures that didn?t include *args or **kwargs
  - now raises RemoteDataError when no expiry dates
    are available from Yahoo and when it receives no data from Yahoo
    (GH8761), (GH8783).
  - Unclear error message in csv parsing when passing dtype and
    names and the parsed data is a different data type (GH8833)
  - Bug in slicing a multi-index with an empty list and at least one
    boolean indexer (GH8781)
  - now raises RemoteDataError when no expiry dates
    are available from Yahoo (GH8761).
  - Timedelta kwargs may now be numpy ints and floats (GH8757).
  - Fixed several outstanding bugs for Timedelta arithmetic and
    comparisons (GH8813, GH5963, GH5436).
  - sql_schema now generates dialect appropriate CREATE TABLE
    statements (GH8697)
  - slice string method now takes step into account (GH8754)
  - Bug in BlockManager where setting values with different type
    would break block integrity (GH8850)
  - Bug in DatetimeIndex when using time object as key (GH8667)
  - Bug in merge where how='left' and sort=False would not preserve
    left frame order (GH7331)
  - Bug in MultiIndex.reindex where reindexing at level would not
    reorder labels (GH4088)
  - Bug in certain operations with dateutil timezones, manifesting
    with dateutil 2.3 (GH8639)
  - Regression in DatetimeIndex iteration with a Fixed/Local offset
    timezone (GH8890)
  - Bug in to_datetime when parsing a nanoseconds using the %f
    format (GH8989)
  - now raises RemoteDataError when no expiry dates
    are available from Yahoo and when it receives no data from Yahoo
    (GH8761), (GH8783).
  - Fix: The font size was only set on x axis if vertical or the y
    axis if horizontal. (GH8765)
  - Fixed division by 0 when reading big csv files in python 3
  - Bug in outputing a Multindex with to_html,index=False which
    would add an extra column (GH8452)
  - Imported categorical variables from Stata files retain the
    ordinal information in the underlying data (GH8836).
  - Defined .size attribute across NDFrame objects to provide compat
    with numpy >= 1.9.1; buggy with np.array_split (GH8846)
  - Skip testing of histogram plots for matplotlib <= 1.2 (GH8648).
  - Bug where get_data_google returned object dtypes (GH3995)
  - Bug in DataFrame.stack(..., dropna=False) when the DataFrame?s
    columns is a MultiIndex whose labels do not reference all its
    levels. (GH8844)
  - Bug in that Option context applied on __enter__ (GH8514)
  - Bug in resample that causes a ValueError when resampling across
    multiple days and the last offset is not calculated from the
    start of the range (GH8683)
  - Bug where DataFrame.plot(kind='scatter') fails when checking if
    an np.array is in the DataFrame (GH8852)
  - Bug in pd.infer_freq/DataFrame.inferred_freq that prevented
    proper sub-daily frequency inference when the index contained
    DST days (GH8772).
  - Bug where index name was still used when plotting a series with
    use_index=False (GH8558).
  - Bugs when trying to stack multiple columns, when some (or all)
    of the level names are numbers (GH8584).
  - Bug in MultiIndex where __contains__ returns wrong result if
    index is not lexically sorted or unique (GH7724)
  - BUG CSV: fix problem with trailing whitespace in skipped rows,
    (GH8679), (GH8661), (GH8983)
  - Regression in Timestamp does not parse ?Z? zone designator for
    UTC (GH8771)
  - Bug in StataWriter the produces writes strings with 244
    characters irrespective of actual size (GH8969)
  - Fixed ValueError raised by cummin/cummax when datetime64 Series
    contains NaT. (GH8965)
  - Bug in Datareader returns object dtype if there are missing
    values (GH8980)
  - Bug in plotting if sharex was enabled and index was a
    timeseries, would show labels on multiple axes (GH3964).
  - Bug where passing a unit to the TimedeltaIndex constructor
    applied the to nano-second conversion twice. (GH9011).
  - Bug in plotting of a period-like array (GH9012)
- Update copyright year