Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOC: Remove makePanel from docs (#25609) #25612

Merged
merged 5 commits into from
Mar 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions doc/source/getting_started/dsintro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1030,47 +1030,3 @@ method:
major_axis=pd.date_range('1/1/2000', periods=5),
minor_axis=['a', 'b', 'c', 'd'])
panel.to_frame()
.. _dsintro.deprecate_panel:

Deprecate Panel
---------------

Over the last few years, pandas has increased in both breadth and depth, with new features,
datatype support, and manipulation routines. As a result, supporting efficient indexing and functional
routines for ``Series``, ``DataFrame`` and ``Panel`` has contributed to an increasingly fragmented and
difficult-to-understand code base.

The 3-D structure of a ``Panel`` is much less common for many types of data analysis,
than the 1-D of the ``Series`` or the 2-D of the ``DataFrame``. Going forward it makes sense for
pandas to focus on these areas exclusively.

Oftentimes, one can simply use a MultiIndex ``DataFrame`` for easily working with higher dimensional data.

In addition, the ``xarray`` package was built from the ground up, specifically in order to
support the multi-dimensional analysis that is one of ``Panel`` s main use cases.
`Here is a link to the xarray panel-transition documentation <https://xarray.pydata.org/en/stable/pandas.html#panel-transition>`__.

.. ipython:: python
:okwarning:
import pandas.util.testing as tm
p = tm.makePanel()
p
Convert to a MultiIndex DataFrame.

.. ipython:: python
:okwarning:
p.to_frame()
Alternatively, one can convert to an xarray ``DataArray``.

.. ipython:: python
:okwarning:
p.to_xarray()
You can see the full-documentation for the `xarray package <https://xarray.pydata.org/en/stable/>`__.
149 changes: 122 additions & 27 deletions doc/source/whatsnew/v0.13.1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -222,60 +222,155 @@ Enhancements
- Panel :meth:`~pandas.Panel.apply` will work on non-ufuncs. See :ref:`the docs<basics.apply>`.

.. ipython:: python
.. code-block:: ipython
In [28]: import pandas.util.testing as tm
In [29]: panel = tm.makePanel(5)
import pandas.util.testing as tm
jreback marked this conversation as resolved.
Show resolved Hide resolved
panel = tm.makePanel(5)
panel
panel['ItemA']
In [30]: panel
Out[30]:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 5 (major_axis) x 4 (minor_axis)
Items axis: ItemA to ItemC
Major_axis axis: 2000-01-03 00:00:00 to 2000-01-07 00:00:00
Minor_axis axis: A to D
In [31]: panel['ItemA']
Out[31]:
A B C D
2000-01-03 -0.673690 0.577046 -1.344312 -1.469388
2000-01-04 0.113648 -1.715002 0.844885 0.357021
2000-01-05 -1.478427 -1.039268 1.075770 -0.674600
2000-01-06 0.524988 -0.370647 -0.109050 -1.776904
2000-01-07 0.404705 -1.157892 1.643563 -0.968914
[5 rows x 4 columns]
Specifying an ``apply`` that operates on a Series (to return a single element)

.. ipython:: python
.. code-block:: ipython
In [32]: panel.apply(lambda x: x.dtype, axis='items')
Out[32]:
A B C D
2000-01-03 float64 float64 float64 float64
2000-01-04 float64 float64 float64 float64
2000-01-05 float64 float64 float64 float64
2000-01-06 float64 float64 float64 float64
2000-01-07 float64 float64 float64 float64
panel.apply(lambda x: x.dtype, axis='items')
[5 rows x 4 columns]
A similar reduction type operation

.. ipython:: python
.. code-block:: ipython
In [33]: panel.apply(lambda x: x.sum(), axis='major_axis')
Out[33]:
ItemA ItemB ItemC
A -1.108775 -1.090118 -2.984435
B -3.705764 0.409204 1.866240
C 2.110856 2.960500 -0.974967
D -4.532785 0.303202 -3.685193
panel.apply(lambda x: x.sum(), axis='major_axis')
[4 rows x 3 columns]
This is equivalent to

.. ipython:: python
.. code-block:: ipython
In [34]: panel.sum('major_axis')
Out[34]:
ItemA ItemB ItemC
A -1.108775 -1.090118 -2.984435
B -3.705764 0.409204 1.866240
C 2.110856 2.960500 -0.974967
D -4.532785 0.303202 -3.685193
panel.sum('major_axis')
[4 rows x 3 columns]
A transformation operation that returns a Panel, but is computing
the z-score across the major_axis

.. ipython:: python
.. code-block:: ipython
result = panel.apply(lambda x: (x - x.mean()) / x.std(),
axis='major_axis')
result
result['ItemA']
In [35]: result = panel.apply(lambda x: (x - x.mean()) / x.std(),
....: axis='major_axis')
....:
In [36]: result
Out[36]:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 5 (major_axis) x 4 (minor_axis)
Items axis: ItemA to ItemC
Major_axis axis: 2000-01-03 00:00:00 to 2000-01-07 00:00:00
Minor_axis axis: A to D
In [37]: result['ItemA'] # noqa E999
Out[37]:
A B C D
2000-01-03 -0.535778 1.500802 -1.506416 -0.681456
2000-01-04 0.397628 -1.108752 0.360481 1.529895
2000-01-05 -1.489811 -0.339412 0.557374 0.280845
2000-01-06 0.885279 0.421830 -0.453013 -1.053785
2000-01-07 0.742682 -0.474468 1.041575 -0.075499
[5 rows x 4 columns]
- Panel :meth:`~pandas.Panel.apply` operating on cross-sectional slabs. (:issue:`1148`)

.. ipython:: python
.. code-block:: ipython
def f(x):
return ((x.T - x.mean(1)) / x.std(1)).T
In [38]: def f(x):
....: return ((x.T - x.mean(1)) / x.std(1)).T
....:
result = panel.apply(f, axis=['items', 'major_axis'])
result
result.loc[:, :, 'ItemA']
In [39]: result = panel.apply(f, axis=['items', 'major_axis'])
This is equivalent to the following
In [40]: result
Out[40]:
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 5 (major_axis) x 3 (minor_axis)
Items axis: A to D
Major_axis axis: 2000-01-03 00:00:00 to 2000-01-07 00:00:00
Minor_axis axis: ItemA to ItemC
.. ipython:: python
In [41]: result.loc[:, :, 'ItemA']
Out[41]:
A B C D
2000-01-03 0.012922 -0.030874 -0.629546 -0.757034
2000-01-04 0.392053 -1.071665 0.163228 0.548188
2000-01-05 -1.093650 -0.640898 0.385734 -1.154310
2000-01-06 1.005446 -1.154593 -0.595615 -0.809185
2000-01-07 0.783051 -0.198053 0.919339 -1.052721
[5 rows x 4 columns]
result = pd.Panel({ax: f(panel.loc[:, :, ax]) for ax in panel.minor_axis})
This is equivalent to the following

.. code-block:: ipython
result
result.loc[:, :, 'ItemA']
In [42]: result = pd.Panel({ax: f(panel.loc[:, :, ax]) for ax in panel.minor_axis})
In [43]: result
Out[43]:
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 5 (major_axis) x 3 (minor_axis)
Items axis: A to D
Major_axis axis: 2000-01-03 00:00:00 to 2000-01-07 00:00:00
Minor_axis axis: ItemA to ItemC
In [44]: result.loc[:, :, 'ItemA']
Out[44]:
A B C D
2000-01-03 0.012922 -0.030874 -0.629546 -0.757034
2000-01-04 0.392053 -1.071665 0.163228 0.548188
2000-01-05 -1.093650 -0.640898 0.385734 -1.154310
2000-01-06 1.005446 -1.154593 -0.595615 -0.809185
2000-01-07 0.783051 -0.198053 0.919339 -1.052721
[5 rows x 4 columns]
Performance
~~~~~~~~~~~
Expand Down
64 changes: 50 additions & 14 deletions doc/source/whatsnew/v0.20.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,6 @@ Check the :ref:`API Changes <whatsnew_0200.api_breaking>` and :ref:`deprecations
New features
~~~~~~~~~~~~

.. ipython:: python
:suppress:
import pandas.util.testing as tm
.. _whatsnew_0200.enhancements.agg:

``agg`` API for DataFrame/Series
Expand Down Expand Up @@ -1363,24 +1358,65 @@ Deprecate Panel
with a ``MultiIndex`` on a ``DataFrame`` via the :meth:`~Panel.to_frame` or with the `xarray package <http://xarray.pydata.org/en/stable/>`__. Pandas
provides a :meth:`~Panel.to_xarray` method to automate this conversion. For more details see :ref:`Deprecate Panel <dsintro.deprecate_panel>` documentation. (:issue:`13563`).

.. ipython:: python
:okwarning:
.. code-block:: ipython
p = tm.makePanel()
p
In [133]: import pandas.util.testing as tm
In [134]: p = tm.makePanel()
In [135]: p
Out[135]:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 3 (major_axis) x 4 (minor_axis)
Items axis: ItemA to ItemC
Major_axis axis: 2000-01-03 00:00:00 to 2000-01-05 00:00:00
Minor_axis axis: A to D
Convert to a MultiIndex DataFrame

.. ipython:: python
.. code-block:: ipython
p.to_frame()
In [136]: p.to_frame()
Out[136]:
ItemA ItemB ItemC
major minor
2000-01-03 A 0.628776 -1.409432 0.209395
B 0.988138 -1.347533 -0.896581
C -0.938153 1.272395 -0.161137
D -0.223019 -0.591863 -1.051539
2000-01-04 A 0.186494 1.422986 -0.592886
B -0.072608 0.363565 1.104352
C -1.239072 -1.449567 0.889157
D 2.123692 -0.414505 -0.319561
2000-01-05 A 0.952478 -2.147855 -1.473116
B -0.550603 -0.014752 -0.431550
C 0.139683 -1.195524 0.288377
D 0.122273 -1.425795 -0.619993
[12 rows x 3 columns]
Convert to an xarray DataArray

.. ipython:: python
:okwarning:
.. code-block:: ipython
p.to_xarray()
In [137]: p.to_xarray()
Out[137]:
<xarray.DataArray (items: 3, major_axis: 3, minor_axis: 4)>
array([[[ 0.628776, 0.988138, -0.938153, -0.223019],
[ 0.186494, -0.072608, -1.239072, 2.123692],
[ 0.952478, -0.550603, 0.139683, 0.122273]],
[[-1.409432, -1.347533, 1.272395, -0.591863],
[ 1.422986, 0.363565, -1.449567, -0.414505],
[-2.147855, -0.014752, -1.195524, -1.425795]],
[[ 0.209395, -0.896581, -0.161137, -1.051539],
[-0.592886, 1.104352, 0.889157, -0.319561],
[-1.473116, -0.43155 , 0.288377, -0.619993]]])
Coordinates:
* items (items) object 'ItemA' 'ItemB' 'ItemC'
* major_axis (major_axis) datetime64[ns] 2000-01-03 2000-01-04 2000-01-05
* minor_axis (minor_axis) object 'A' 'B' 'C' 'D'
.. _whatsnew_0200.api_breaking.deprecate_group_agg_dict:

Expand Down
60 changes: 48 additions & 12 deletions doc/source/whatsnew/v0.23.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -646,29 +646,65 @@ Deprecate Panel
with a ``MultiIndex`` on a ``DataFrame`` via the :meth:`~Panel.to_frame` or with the `xarray package <http://xarray.pydata.org/en/stable/>`__. Pandas
provides a :meth:`~Panel.to_xarray` method to automate this conversion. For more details see :ref:`Deprecate Panel <dsintro.deprecate_panel>` documentation. (:issue:`13563`, :issue:`18324`).

.. ipython:: python
:suppress:
.. code-block:: ipython
import pandas.util.testing as tm
In [75]: import pandas.util.testing as tm
.. ipython:: python
:okwarning:
In [76]: p = tm.makePanel()
p = tm.makePanel()
p
In [77]: p
Out[77]:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 3 (major_axis) x 4 (minor_axis)
Items axis: ItemA to ItemC
Major_axis axis: 2000-01-03 00:00:00 to 2000-01-05 00:00:00
Minor_axis axis: A to D
Convert to a MultiIndex DataFrame

.. ipython:: python
.. code-block:: ipython
p.to_frame()
In [78]: p.to_frame()
Out[78]:
ItemA ItemB ItemC
major minor
2000-01-03 A 0.469112 0.721555 0.404705
B -1.135632 0.271860 -1.039268
C 0.119209 0.276232 -1.344312
D -2.104569 0.113648 -0.109050
2000-01-04 A -0.282863 -0.706771 0.577046
B 1.212112 -0.424972 -0.370647
C -1.044236 -1.087401 0.844885
D -0.494929 -1.478427 1.643563
2000-01-05 A -1.509059 -1.039575 -1.715002
B -0.173215 0.567020 -1.157892
C -0.861849 -0.673690 1.075770
D 1.071804 0.524988 -1.469388
[12 rows x 3 columns]
Convert to an xarray DataArray

.. ipython:: python
:okwarning:
.. code-block:: ipython
p.to_xarray()
In [79]: p.to_xarray()
Out[79]:
<xarray.DataArray (items: 3, major_axis: 3, minor_axis: 4)>
array([[[ 0.469112, -1.135632, 0.119209, -2.104569],
[-0.282863, 1.212112, -1.044236, -0.494929],
[-1.509059, -0.173215, -0.861849, 1.071804]],
[[ 0.721555, 0.27186 , 0.276232, 0.113648],
[-0.706771, -0.424972, -1.087401, -1.478427],
[-1.039575, 0.56702 , -0.67369 , 0.524988]],
[[ 0.404705, -1.039268, -1.344312, -0.10905 ],
[ 0.577046, -0.370647, 0.844885, 1.643563],
[-1.715002, -1.157892, 1.07577 , -1.469388]]])
Coordinates:
* items (items) object 'ItemA' 'ItemB' 'ItemC'
* major_axis (major_axis) datetime64[ns] 2000-01-03 2000-01-04 2000-01-05
* minor_axis (minor_axis) object 'A' 'B' 'C' 'D'
.. _whatsnew_0230.api_breaking.core_common:
Expand Down