Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #53648 > unrolled thread

Broadcasting TimeSeries

Started byDavide Dalmasso <davide.dalmasso@gmail.com>
First post2013-09-04 13:06 -0700
Last post2013-09-04 18:00 -0400
Articles 2 — 2 participants

Back to article view | Back to comp.lang.python


Contents

  Broadcasting TimeSeries Davide Dalmasso <davide.dalmasso@gmail.com> - 2013-09-04 13:06 -0700
    Re: Broadcasting TimeSeries Terry Reedy <tjreedy@udel.edu> - 2013-09-04 18:00 -0400

#53648 — Broadcasting TimeSeries

FromDavide Dalmasso <davide.dalmasso@gmail.com>
Date2013-09-04 13:06 -0700
SubjectBroadcasting TimeSeries
Message-ID<6b13a66f-ff9a-4f82-b2d1-2231b8f4e94e@googlegroups.com>
Hello,

I opened my Python Shell and I wrote the following:

>>> import numpy as np
>>> import pandas as pd

then I made a function

>>> def afunc(aframe):
    return aframe - aframe.mean(axis=1)

and I defined a DataFrame with time as index

>>> A = pd.DataFrame(np.random.randn(5,3),columns=['a','b','c'],index=pd.date_range(start='1984-12-20',periods=5))
>>> A
                   a         b         c
1984-12-20 -0.257916 -0.137923 -0.669796
1984-12-21 -1.632874 -1.850365  1.571715
1984-12-22  1.185828 -0.149839 -1.565930
1984-12-23 -0.757311  0.034627  0.794608
1984-12-24  0.548785 -1.126786 -0.438457

now, if I call the function the following error is generated:

>>> afunc(A)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    afunc(A)
  File "<pyshell#3>", line 2, in afunc
    return aframe - aframe.mean(axis=1)
  File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 217, in f
    return self._combine_series(other, na_op, fill_value, axis, level)
  File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 3601, in _combine_series
    return self._combine_series_infer(other, func, fill_value)
  File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 3619, in _combine_series_infer
    FutureWarning)
  File "C:\Python33\lib\idlelib\PyShell.py", line 60, in idle_showwarning
    file.write(warnings.formatwarning(message, category, filename,
AttributeError: 'NoneType' object has no attribute 'write'

then I recall the same function (without any change) and the function works!

>>> afunc(A)
                   a         b         c
1984-12-20  0.097295  0.217289 -0.314584
1984-12-21 -0.995699 -1.213190  2.208890
1984-12-22  1.362475  0.026808 -1.389283
1984-12-23 -0.781285  0.010652  0.770633
1984-12-24  0.887604 -0.787967 -0.099637

Why does this happen? Why I must call the function two times before it finally works?
How can I overcome this problem?

Many thanks in advance

Davide

[toc] | [next] | [standalone]


#53656

FromTerry Reedy <tjreedy@udel.edu>
Date2013-09-04 18:00 -0400
Message-ID<mailman.65.1378332020.5461.python-list@python.org>
In reply to#53648
On 9/4/2013 4:06 PM, Davide Dalmasso wrote:

> I opened my Python Shell and I wrote the following:

This is with Idle. I believe you are running on Windows.

>>>> import numpy as np
>>>> import pandas as pd
>
> then I made a function
>
>>>> def afunc(aframe):
>      return aframe - aframe.mean(axis=1)
>
> and I defined a DataFrame with time as index
>
>>>> A = pd.DataFrame(np.random.randn(5,3),columns=['a','b','c'],index=pd.date_range(start='1984-12-20',periods=5))
>>>> A
>                     a         b         c
> 1984-12-20 -0.257916 -0.137923 -0.669796
> 1984-12-21 -1.632874 -1.850365  1.571715
> 1984-12-22  1.185828 -0.149839 -1.565930
> 1984-12-23 -0.757311  0.034627  0.794608
> 1984-12-24  0.548785 -1.126786 -0.438457
>
> now, if I call the function the following error is generated:
>
>>>> afunc(A)
> Traceback (most recent call last):
>    File "<pyshell#6>", line 1, in <module>
>      afunc(A)
>    File "<pyshell#3>", line 2, in afunc
>      return aframe - aframe.mean(axis=1)
>    File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 217, in f
>      return self._combine_series(other, na_op, fill_value, axis, level)
>    File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 3601, in _combine_series
>      return self._combine_series_infer(other, func, fill_value)
>    File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 3619, in _combine_series_infer
>      FutureWarning)
>    File "C:\Python33\lib\idlelib\PyShell.py", line 60, in idle_showwarning
>      file.write(warnings.formatwarning(message, category, filename,
> AttributeError: 'NoneType' object has no attribute 'write'

This was a bug in Idle when run directly on Windows, from Start or an 
icon. In this circumstance, there is no stderr stream to write to. I 
fixed it last June by catching the AttributeError and ignoring the 
warning. The fix will be in the next 2.7 and 3.3 releases and is in the 
3.4 releases (currently 0a1, soon 0a2).

The problem (of no stderr) is avoided now, while still using Idle, by 
starting Idle from a Command Prompt window (Start/Accessories):
   python -m idlelib
or by starting the standard interpreter (from Start or icon) and entering
   >>> import idlelib.idle

> then I recall the same function (without any change) and the function works!

pandas must have a mechanism to only issue the warning once.

>>>> afunc(A)
>                     a         b         c
> 1984-12-20  0.097295  0.217289 -0.314584
> 1984-12-21 -0.995699 -1.213190  2.208890
> 1984-12-22  1.362475  0.026808 -1.389283
> 1984-12-23 -0.781285  0.010652  0.770633
> 1984-12-24  0.887604 -0.787967 -0.099637
>
> Why does this happen? Why I must call the function two times before it finally works?
> How can I overcome this problem?

Answered, I believe.

-- 
Terry Jan Reedy

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web