After doing
conda create -n dummy_python python=2.7 pandas=0.14 ipython=2.0
and then activating dummy_python, I get the following error with a simple .xlsx file that has 3 sheets:
In [4]: pandas.read_excel('candidate_test.xlsx', sheetname='prices')
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-4-ad7ce8e2fc77> in <module>()
----> 1 pandas.read_excel('candidate_test.xlsx', sheetname='prices')
/home/ely/anaconda/envs/dummy_python/lib/python2.7/site-packages/pandas/io/excel.pyc in read_excel(io, sheetname, **kwds)
111 engine = kwds.pop('engine', None)
112
--> 113 return ExcelFile(io, engine=engine).parse(sheetname=sheetname, **kwds)
114
115
/home/ely/anaconda/envs/dummy_python/lib/python2.7/site-packages/pandas/io/excel.pyc in __init__(self, io, **kwds)
129 def __init__(self, io, **kwds):
130
--> 131 import xlrd # throw an ImportError if we need to
132
133 ver = tuple(map(int, xlrd.__VERSION__.split(".")[:2]))
ImportError: No module named xlrd
But with pandas 0.13.1, the same sheet parses with no error from the same command:
In [2]: pandas.version.version
Out[2]: '0.13.0'
In [3]: pandas.read_excel('candidate_test.xlsx', sheetname='prices')
Out[3]:
date time millis bid offer
0 2012.09.30 22:00:15 1349042415003 1.28490 1.28495
1 2012.09.30 22:00:16 1349042416203 1.28485 1.28495
2 2012.09.30 22:00:18 1349042418302 1.28480 1.28495
3 2012.09.30 22:03:37 1349042617304 1.28480 1.28500
4 2012.09.30 22:05:17 1349042717103 1.28485 1.28500
5 2012.09.30 22:06:05 1349042765403 1.28490 1.28500
6 2012.09.30 22:06:06 1349042766404 1.28495 1.28500
7 2012.09.30 22:06:53 1349042812903 1.28495 1.28505
8 2012.09.30 22:06:53 1349042813004 1.28495 1.28500
9 2012.09.30 22:07:59 1349042879103 1.28485 1.28500
10 2012.09.30 22:08:03 1349042882703 1.28490 1.28500
11 2012.09.30 22:08:04 1349042883903 1.28495 1.28500
12 2012.09.30 22:08:05 1349042885304 1.28485 1.28490
13 2012.09.30 22:08:07 1349042886503 1.28480 1.28490
14 2012.09.30 22:08:13 1349042892702 1.28480 1.28485
15 2012.09.30 22:08:20 1349042900103 1.28475 1.28485
16 2012.09.30 22:08:20 1349042900204 1.28475 1.28480
17 2012.09.30 22:08:38 1349042917604 1.28425 1.28470
18 2012.09.30 22:08:38 1349042917702 1.28460 1.28470
19 2012.09.30 22:08:38 1349042918005 1.28460 1.28480
20 2012.09.30 22:08:39 1349042919103 1.28425 1.28480
21 2012.09.30 22:08:39 1349042919202 1.28450 1.28480
22 2012.09.30 22:08:40 1349042919503 1.28440 1.28480
23 2012.09.30 22:08:49 1349042928702 1.28440 1.28485
24 2012.09.30 22:08:49 1349042929003 1.28440 1.28480
25 2012.09.30 22:10:12 1349043011803 1.28440 1.28475
26 2012.09.30 22:10:12 1349043012004 1.28440 1.28480
27 2012.09.30 22:10:17 1349043017204 1.28440 1.28465
28 2012.09.30 22:11:37 1349043096604 1.28440 1.28450
29 2012.09.30 22:11:40 1349043099503 1.28430 1.28440
30 2012.09.30 22:11:40 1349043099604 1.28430 1.28465
31 2012.09.30 22:11:46 1349043105703 1.28430 1.28440
32 2012.09.30 22:11:46 1349043106105 1.28430 1.28465
33 2012.09.30 22:12:58 1349043178004 1.28430 1.28460
34 2012.09.30 22:13:13 1349043192503 1.28430 1.28465
35 2012.09.30 22:13:40 1349043220003 1.28425 1.28465
36 2012.09.30 22:13:43 1349043222903 1.28430 1.28465
37 2012.09.30 22:15:32 1349043331903 1.28460 1.28465
38 2012.09.30 22:15:34 1349043334303 1.28440 1.28465
39 2012.09.30 22:15:35 1349043334503 1.28430 1.28465
40 2012.09.30 22:15:35 1349043334603 1.28460 1.28465
41 2012.09.30 22:15:36 1349043335902 1.28425 1.28465
42 2012.09.30 22:15:36 1349043336004 1.28440 1.28465
43 2012.09.30 22:15:38 1349043337703 1.28440 1.28460
44 2012.09.30 22:15:38 1349043337803 1.28425 1.28460
45 2012.09.30 22:15:38 1349043337902 1.28430 1.28460
46 2012.09.30 22:15:40 1349043339603 1.28430 1.28465
47 2012.09.30 22:15:55 1349043354903 1.28470 1.28485
48 2012.09.30 22:15:57 1349043356702 1.28450 1.28485
49 2012.09.30 22:16:57 1349043417003 1.28450 1.28480
50 2012.09.30 22:17:09 1349043429302 1.28450 1.28475
51 2012.09.30 22:17:17 1349043436702 1.28425 1.28475
52 2012.09.30 22:17:17 1349043436802 1.28440 1.28475
53 2012.09.30 22:17:23 1349043442802 1.28470 1.28475
54 2012.09.30 22:17:24 1349043443702 1.28425 1.28475
55 2012.09.30 22:17:24 1349043443803 1.28450 1.28475
56 2012.09.30 22:17:48 1349043468303 1.28425 1.28475
57 2012.09.30 22:17:48 1349043468404 1.28440 1.28475
58 2012.09.30 22:17:57 1349043476904 1.28450 1.28475
59 2012.09.30 22:18:10 1349043490303 1.28450 1.28465
... ... ... ... ...
[34650 rows x 5 columns]
So the question is, why was a dependency on XLRD introduced, but the library is not installed as a dependency when pandas is installed through conda?
Comment From: jreback
xlrd
is an optional dependency. You need it if you want to parse excel, see here
you will need to install it separately (via conda).
Obviously you already have it installed in 0.13.0.
Comment From: spearsem
I'm confused. In the conda environment with 0.13, I have never installed xlrd. It was installed already merely by installing pandas. If I repeat the same conda procedure but change it to 0.14, the behavior changes.
Prior to 0.14, I had never needed to separately install xlrd for any version. Even when managing my own environments and not using conda.
Is there a way to verify whether I am just crazy? Was xlrd not included with pandas in previous versions? This behavior is certainly new for me in this version.
Comment From: jreback
its possible your earlier environments used a system xlrd
(e.g. virtual env can do this), but conda doesn't by default. pandas doesn't have (and never has) had xlrd
as as a required dep.
Comment From: spearsem
Alright, duly noted.