From 1ea301ea19b150385d7e8b2938e7b1760be31c26 Mon Sep 17 00:00:00 2001 From: Jeff Tratner Date: Thu, 31 Oct 2013 20:40:21 -0400 Subject: [PATCH] TST: Test for float --> int in the middle of object dtype --- doc/source/io.rst | 7 +++++++ doc/source/release.rst | 2 ++ pandas/io/excel.py | 3 ++- pandas/io/tests/data/test_types.xls | Bin 26112 -> 26112 bytes pandas/io/tests/data/test_types.xlsx | Bin 33722 -> 33769 bytes pandas/io/tests/test_excel.py | 4 +++- 6 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/source/io.rst b/doc/source/io.rst index 0842893800dd5..1a879866c5516 100644 --- a/doc/source/io.rst +++ b/doc/source/io.rst @@ -1839,6 +1839,13 @@ one can pass an :class:`~pandas.io.excel.ExcelWriter`. df1.to_excel(writer, sheet_name='Sheet1') df2.to_excel(writer, sheet_name='Sheet2') +.. note:: Wringing a little more performance out of ``read_excel`` + Internally, Excel stores all numeric data as floats. Because this can + produce unexpected behavior when reading in data, pandas defaults to trying + to convert integers to floats if it doesn't lose information (``1.0 --> + 1``). You can pass ``convert_float=False`` to disable this behavior, which + may give a slight performance improvement. + .. _io.excel.writers: Excel writer engines diff --git a/doc/source/release.rst b/doc/source/release.rst index 8a0e31859c185..721ef9a1cbbf3 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -207,6 +207,8 @@ Improvements to existing features closed]) - Fixed bug in `tools.plotting.andrews_curvres` so that lines are drawn grouped by color as expected. + - ``read_excel()`` now tries to convert integral floats (like ``1.0``) to int + by default. (:issue:`5394`) API Changes ~~~~~~~~~~~ diff --git a/pandas/io/excel.py b/pandas/io/excel.py index 04550ca41ab90..42c212caf41ca 100644 --- a/pandas/io/excel.py +++ b/pandas/io/excel.py @@ -273,7 +273,8 @@ def _parse_excel(self, sheetname, header=0, skiprows=None, skip_footer=0, elif typ == XL_CELL_BOOLEAN: value = bool(value) elif convert_float and typ == XL_CELL_NUMBER: - # Excel 'numbers' are always floats + # GH5394 - Excel 'numbers' are always floats + # it's a minimal perf hit and less suprising val = int(value) if val == value: value = val diff --git a/pandas/io/tests/data/test_types.xls b/pandas/io/tests/data/test_types.xls index 420ea6daebaa02161fe7fb3bd08bf886cbd8cc16..2d387603a8307bc7b7050a36fc82cedc4fd5ceb3 100644 GIT binary patch delta 997 zcmaJ-Ur19?82`?8w%xnAKUZ7ZQu9uzhl+H;BqP~yIt#Z_nPlssmeVCEkp=b#y$d9Y z2%=9C27y)&)=ReQLqwwiIp6tyzw>ot|Z_6dSNs&?^O3CNm6RNyKAap5Vw_GT8I05zC12JE1S}+Bm5^IU$3BK9U+}g z=M`{5-1vn$_vaGw2)BC^hJ^Z0u;PgKa7mm1bQu5|V&}U8XL{MGQ(p1DFVc0_0W9Er z{bda$7zyl9w`5>}nDJPHv^fLC?2j}j#QA;T4=?$3fXfa0hy^{3&CLA4#&)-A{*cB9 zIyQYUc4Nsu4>kxfcj6F%5Crjiqt~KkLI4D`Y*H%M1g8nws4;z@nvxFmgzi_~IzHW( z%Dy35##2WVi^|?&&C6+qTL_+P!9tqR6q}1#&O0`2(!q6^Q@< delta 1017 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 prRM+9)FS`@ delta 13507 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