Skip to content

Commit

Permalink
DEPR: Change read_excel sheetname to sheet_name (#16442)
Browse files Browse the repository at this point in the history
* GH10559: Minor improvement: Change to_excel sheet name

modify io/excel.py and relevant docs (io.rst) to use sheet_name for read_excel
but allow sheetname to still be used for backwards compatibility.  add test_excel
to verify that sheet_name and sheetname args produce the same result.

* GH10559: Minor improvement: Change to_excel sheet name

added @deprecate_kwarg to read_excel as arg changes from sheetname to sheet_name.
moved test comments into function, add assert_produces_warning.

* GH10559: Minor improvement: Change to_excel sheet name

remove manual arg change, use @deprecate_kwarg to read_excel
as arg changes from sheetname to sheet_name.

* GH10559: Minor improvement: Change to_excel sheet name

shorten lines under 79 char.

* GH10559: Minor improvement: Change to_excel sheet name

update whats new 0.21.0 Deprecations section noting sheetname deprecated
in favor of sheet_name.
add sheetname deprecation in read_excel() docstring.
  • Loading branch information
abarber4gh authored and TomAugspurger committed May 23, 2017
1 parent 92372c7 commit c933098
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 16 deletions.
16 changes: 8 additions & 8 deletions doc/source/io.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2561,12 +2561,12 @@ Reading Excel Files
'''''''''''''''''''

In the most basic use-case, ``read_excel`` takes a path to an Excel
file, and the ``sheetname`` indicating which sheet to parse.
file, and the ``sheet_name`` indicating which sheet to parse.

.. code-block:: python
# Returns a DataFrame
read_excel('path_to_file.xls', sheetname='Sheet1')
read_excel('path_to_file.xls', sheet_name='Sheet1')
.. _io.excel.excelfile_class:
Expand Down Expand Up @@ -2634,12 +2634,12 @@ of sheet names can simply be passed to ``read_excel`` with no loss in performanc
Specifying Sheets
+++++++++++++++++

.. note :: The second argument is ``sheetname``, not to be confused with ``ExcelFile.sheet_names``
.. note :: The second argument is ``sheet_name``, not to be confused with ``ExcelFile.sheet_names``
.. note :: An ExcelFile's attribute ``sheet_names`` provides access to a list of sheets.
- The arguments ``sheetname`` allows specifying the sheet or sheets to read.
- The default value for ``sheetname`` is 0, indicating to read the first sheet
- The arguments ``sheet_name`` allows specifying the sheet or sheets to read.
- The default value for ``sheet_name`` is 0, indicating to read the first sheet
- Pass a string to refer to the name of a particular sheet in the workbook.
- Pass an integer to refer to the index of a sheet. Indices follow Python
convention, beginning at 0.
Expand Down Expand Up @@ -2670,18 +2670,18 @@ Using None to get all sheets:
.. code-block:: python
# Returns a dictionary of DataFrames
read_excel('path_to_file.xls',sheetname=None)
read_excel('path_to_file.xls',sheet_name=None)
Using a list to get multiple sheets:

.. code-block:: python
# Returns the 1st and 4th sheet, as a dictionary of DataFrames.
read_excel('path_to_file.xls',sheetname=['Sheet1',3])
read_excel('path_to_file.xls',sheet_name=['Sheet1',3])
.. versionadded:: 0.16

``read_excel`` can read more than one sheet, by setting ``sheetname`` to either
``read_excel`` can read more than one sheet, by setting ``sheet_name`` to either
a list of sheet names, a list of sheet positions, or ``None`` to read all sheets.

.. versionadded:: 0.13
Expand Down
2 changes: 1 addition & 1 deletion doc/source/whatsnew/v0.21.0.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Other API Changes

Deprecations
~~~~~~~~~~~~

- :func:`read_excel()` has deprecated ``sheetname`` in favor of ``sheet_name`` for consistency with to_excel() (:issue:`10559`).


.. _whatsnew_0210.prior_deprecations:
Expand Down
19 changes: 12 additions & 7 deletions pandas/io/excel.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import pandas.compat.openpyxl_compat as openpyxl_compat
from warnings import warn
from distutils.version import LooseVersion
from pandas.util._decorators import Appender
from pandas.util._decorators import Appender, deprecate_kwarg
from textwrap import fill

__all__ = ["read_excel", "ExcelWriter", "ExcelFile"]
Expand All @@ -48,7 +48,7 @@
The string could be a URL. Valid URL schemes include http, ftp, s3,
and file. For file URLs, a host is expected. For instance, a local
file could be file://localhost/path/to/workbook.xlsx
sheetname : string, int, mixed list of strings/ints, or None, default 0
sheet_name : string, int, mixed list of strings/ints, or None, default 0
Strings are used for sheet names, Integers are used in zero-indexed
sheet positions.
Expand All @@ -69,6 +69,10 @@
* [0,1,"Sheet5"] -> 1st, 2nd & 5th sheet as a dictionary of DataFrames
* None -> All sheets as a dictionary of DataFrames
sheetname : string, int, mixed list of strings/ints, or None, default 0
.. deprecated:: 0.21.0
Use `sheet_name` instead
header : int, list of ints, default 0
Row (0-indexed) to use for the column labels of the parsed
DataFrame. If a list of integers is passed those row positions will
Expand Down Expand Up @@ -144,7 +148,7 @@
Returns
-------
parsed : DataFrame or Dict of DataFrames
DataFrame from the passed in Excel file. See notes in sheetname
DataFrame from the passed in Excel file. See notes in sheet_name
argument for more information on when a Dict of Dataframes is returned.
"""

Expand Down Expand Up @@ -189,8 +193,9 @@ def get_writer(engine_name):
raise ValueError("No Excel writer '%s'" % engine_name)


@deprecate_kwarg('sheetname', 'sheet_name')
@Appender(_read_excel_doc)
def read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0,
def read_excel(io, sheet_name=0, header=0, skiprows=None, skip_footer=0,
index_col=None, names=None, parse_cols=None, parse_dates=False,
date_parser=None, na_values=None, thousands=None,
convert_float=True, has_index_names=None, converters=None,
Expand All @@ -201,7 +206,7 @@ def read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0,
io = ExcelFile(io, engine=engine)

return io._parse_excel(
sheetname=sheetname, header=header, skiprows=skiprows, names=names,
sheetname=sheet_name, header=header, skiprows=skiprows, names=names,
index_col=index_col, parse_cols=parse_cols, parse_dates=parse_dates,
date_parser=date_parser, na_values=na_values, thousands=thousands,
convert_float=convert_float, has_index_names=has_index_names,
Expand Down Expand Up @@ -266,7 +271,7 @@ def __init__(self, io, **kwds):
def __fspath__(self):
return self._io

def parse(self, sheetname=0, header=0, skiprows=None, skip_footer=0,
def parse(self, sheet_name=0, header=0, skiprows=None, skip_footer=0,
names=None, index_col=None, parse_cols=None, parse_dates=False,
date_parser=None, na_values=None, thousands=None,
convert_float=True, has_index_names=None,
Expand All @@ -279,7 +284,7 @@ def parse(self, sheetname=0, header=0, skiprows=None, skip_footer=0,
docstring for more info on accepted parameters
"""

return self._parse_excel(sheetname=sheetname, header=header,
return self._parse_excel(sheetname=sheet_name, header=header,
skiprows=skiprows, names=names,
index_col=index_col,
has_index_names=has_index_names,
Expand Down
12 changes: 12 additions & 0 deletions pandas/tests/io/test_excel.py
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,18 @@ def test_date_conversion_overflow(self):
result = self.get_exceldf('testdateoverflow')
tm.assert_frame_equal(result, expected)

def test_sheet_name_and_sheetname(self):
# GH10559: Minor improvement: Change "sheet_name" to "sheetname"
# GH10969: DOC: Consistent var names (sheetname vs sheet_name)
# GH12604: CLN GH10559 Rename sheetname variable to sheet_name
dfref = self.get_csv_refdf('test1')
df1 = self.get_exceldf('test1', sheet_name='Sheet1') # doc
with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
df2 = self.get_exceldf('test1', sheetname='Sheet2') # bkwrd compat

tm.assert_frame_equal(df1, dfref, check_names=False)
tm.assert_frame_equal(df2, dfref, check_names=False)


class XlrdTests(ReadingTestsBase):
"""
Expand Down

0 comments on commit c933098

Please sign in to comment.